初識redis(redis基礎命令)

来源:https://www.cnblogs.com/caesar-id/archive/2019/05/10/10846541.html
-Advertisement-
Play Games

redis簡介,redis數據結構中字元串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)的基礎命令 ...


redis簡介
redis是一個開源(BSD許可)的使用C語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,它可以用作資料庫、緩存和消息中間件,並提供多種語言的API。從2010年3月15日起,redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。

redis是一個key-value存儲系統。它支持存儲的value類型包括string(字元串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。為了保證效率,數據都是緩存在記憶體中。區別的是redis會周期性的把更新的數據寫入磁碟或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。

1、安裝redis

1.1使用yum進行安裝,這裡使用的是yum源,關於如何安裝yum倉庫請參考我的https://www.cnblogs.com/caesar-id/p/10821105.html

查看阿裡源的redis版本 

[root@localhost ~]# yum list redis

使用yum安裝redis,安裝過程非常簡單

[root@localhost ~]# yum install redis -y

1.2使用源碼安裝redis

我們使用yum安裝的redis版本是3.2.12,但是截至當前redis版本已經是redis-5.0.4。這裡我們就使用最新的版本進行源碼安裝。

如果你已經使用yum進行了安裝,現在想使用最新版本的redis,你最好卸載當前的redis。以免造成不必要的麻煩。

[root@localhost ~]# yum remove redis -y  // 卸載yum安裝的redis

1.2.1下載redis源碼包

[root@localhost ~]# wget -P /opt/source/ http://download.redis.io/releases/redis-5.0.4.tar.gz

 1.2.2解包

[root@localhost ~]# tar -zxvf /opt/source/redis-5.0.4.tar.gz -C /opt/

 1.2.3安裝

[root@localhost ~]# cd /opt/redis-5.0.4/
[root@localhost redis-5.0.4]# make && make install  //預設在/usr/local/bin所以就不用我們設置環境變數了

 安裝後查看redis都有哪些可執行文件

[root@localhost ~]# ls /usr/local/bin/redis-*
/usr/local/bin/redis-benchmark    // 用於進行redis性能測試的工具
/usr/local/bin/redis-cli          // redis的客戶端
/usr/local/bin/redis-check-aof    // 用於修複出問題的AOF文件
/usr/local/bin/redis-sentinel     // 用於集群管理
/usr/local/bin/redis-check-rdb    // 用於修複出問題的dump.rdb文件
/usr/local/bin/redis-server       // redis的服務端

 1.3瞭解redis服務的配置文件

redis-server 可以指定配置文件來啟動服務,這裡在redis的安裝目錄下有個redis.conf模板,我們查看下模板中都有哪些配置

[root@localhost ~]# cat /opt/redis-5.0.4/redis.conf | grep -v "^#" | grep -v "^$   // 過濾掉註釋和空行
bind 127.0.0.1   // 綁定伺服器IP地址,多個使用空格進行分隔,如果不指定bind預設監聽本機所有可用的網路介面
protected-mode yes  // 伺服器的安全模式
port 6379    // 伺服器的埠號
tcp-backlog 511   // TCP連接中已完成隊列(完成三次握手之後)的長度
timeout 0  // 客戶端空閑n秒後關閉連接(0表示不主動關閉連接)
tcp-keepalive 300   // TCP長連接單位秒(300秒沒有活動關閉連接)
daemonize no  // 守護進程建議使用yes啟用守護進程,如果是no會阻塞shell視窗
supervised no   // 可以通過upstart和systemd管理Redis守護進程,這個參數是和具體的操作系統相關的
pidfile /var/run/redis_6379.pid
loglevel notice    // 日誌級別。可選項有:debug(記錄大量日誌信息,適用於開發、測試階段);  verbose(較多日誌信息);  notice(適量日誌信息,使用於生產環境);warning(僅有部分重要、關鍵信息才會被記錄)。
logfile ""  // 日誌文件的位置,當指定為空字元串時,為標準輸出,如果redis已守護進程模式運行,那麼日誌將會輸出到  /dev/null 。
databases 16   // 設置資料庫的數目
always-show-logo yes
save 900 1    // 保存數據到磁碟。格式是:save <seconds> <changes> ,含義是在 seconds 秒之後至少有 changes個keys 發生改變則保存一次
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes  // 預設情況下,如果 redis 最後一次的後臺保存失敗,redis 將停止接受寫操作,這樣以一種強硬的方式讓用戶知道數據不能正確的持久化到磁碟, 否則就會沒人註意到災難的發生。 如果後臺保存進程重新啟動工作了,redis 也將自動的允許寫操作。然而你要是安裝了靠譜的監控,你可能不希望 redis 這樣做,那你就改成 no 好了。

rdbcompression yes  // 是否在dump  .rdb資料庫的時候壓縮字元串,預設設置為yes。如果你想節約一些cpu資源的話,可以把它設置為no,這樣的話數據集就可能會比較大
rdbchecksum yes  // 是否CRC64校驗rdb文件,會有一定的性能損失(大概10%)。
dbfilename dump.rdb   // dump 的reb文件名字
dir ./  // 資料庫的工作目錄
replica-serve-stale-data yes  //#當副本失去與主伺服器的連接時或當複製仍在進行中,副本可以以兩種不同的方式進行操作:1)如果副本服務過時數據設置為“是”(預設值),則副本將仍然答覆客戶端請求,可能包含過期數據,或者如果這是第一次同步,則數據集可能為空。

// 2)如果副本服務過時數據設置為“否”,則副本將使用對所有類型的命令執行“與正在進行的主控形狀同步”錯誤。但是,對於信息、複製、AUTH、ping、關機、複製、角色、配置,訂閱,取消訂閱,psubscribe,punsubscribe,publish,pubsub,命令、發佈、主機:和延遲。
replica-read-only yes   // 設置slave是否是只讀的。從2.6版起,slave預設是只讀的
repl-diskless-sync no   // 主從數據複製是否使用無硬碟複製功能。
repl-diskless-sync-delay 5  // 當啟用無盤複製時,可以配置延遲。伺服器等待,以便生成通過套接字傳輸RDB的子節點。複製品。這一點很重要,因為一旦轉移開始,就不可能服務新的副本到達,將排隊等待下一次RDB傳輸,因此伺服器等待一段時間,以便讓更多的副本到達。延遲以秒為單位指定,預設為5秒。禁用它完全設置為0秒,傳輸將儘快開始。
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

 

關於redis的優化,不在本文討論範圍內,下麵我們手動創建一個配置文件來運行redis服務

1.4使用系統預設的配置文件登陸redis

[root@localhost ~]# redis-server 

開啟後你會看到如下界面,shell被redis給阻塞住了。

新開一個shell,登陸redis

1.5創建自定義的redis配置文件

[root@localhost ~]# vim /opt/redis-5.0.4/myself.conf 
bind 192.168.10.10    // 綁定IP地址
protected-mode yes    // 開啟安全模式
port 9000             // 指定伺服器埠
daemonize yes         // 開啟守護進程
requirepass 123.com   // 登陸密碼

 1.5.1使用我們自定義的redis配置文件登陸redis伺服器

[root@localhost ~]# vim /opt/redis-5.0.4/myself.conf   // 指定配置文件開啟服務

 使用客戶端登陸(這裡需要註意,如果是在當前shell開啟的redis服務,這裡就必須使用絕對路徑來使用客戶端。如果是新開一個shell就不會有這樣的問題

[root@localhost ~]# /usr/local/bin/redis-cli -p 9000 -h 192.168.10.10  

 至此redis服務的啟動,和登陸就到這裡吧,下麵我們來看一下redis的數據結構。

2.redis的數據結構

redis是一種高級的key:value存儲系統,其中value支持五種數據類型
字元串(strings)
散列(hashes)
列表(lists)
集合(sets)
有序集合(sorted sets)

如果對Python有所瞭解相信對上面的數據類型並不會陌生。

2.1字元串string的常用命令

set    // 設置key
get     // 獲取key
append  // 追加string
mset    // 設置多個鍵值對
mget    // 獲取多個鍵值對
del     // 刪除key
incr    // 遞增+1
decr    // 遞減-1

2.2list類型的常用命令

lpush           // 從列表左邊插
rpush           // 從列表右邊插
lrange          // 獲取一定長度的元素  lrange key  start stop
ltrim           // 截取一定長度列表
lpop            // 刪除最左邊一個元素
rpop            // 刪除最右邊一個元素
lpushx/rpushx   // key存在則添加值,不存在不處理

2.3set類型的常用命令

sadd        // 添加元素
srem        // 刪除元素
sismember   // 判斷是否為set的一個元素
smembers    // 返回集合所有的成員
sdiff       // 返回一個集合和其他集合的差異
sinter      // 返回幾個集合的交集
sunion      // 返回幾個集合的並集

2.4有序集合常用命令

ZADD         // 添加有序集合
ZREM         // 刪除有序集合中的元素
ZREVRANGE    // 倒敘
ZRANGE       // 正序
ZCARD        // 有序集合的基數
ZSCORE       // 返回成員的值
ZRANK        // 返回有序集合中成員的排名

2.5哈希數據結構

hset       // 設置散列值
hget       // 獲取散列值
hmset      // 設置多對散列值
hmget      // 獲取多對散列值
hsetnx     // 如果散列已經存在,則不設置(防止覆蓋key)
hkeys      // 返回所有keys
hvals      // 返回所有values
hlen       // 返回散列包含域(field)的數量
hdel       // 刪除散列指定的域(field)
hexists    // 判斷是否存在

2.6redis的基礎命令

keys *        // 查看所有key
type key      // 查看key類型
ttl key       // 查看key過期剩餘時間-1表示存在,-2表示key已經不存在了
persist       // 取消key的過期時間-1表示key存在,沒有過期時間
exists key    // 判斷key存在存在返回1否則0
del keys      // 刪除key可以刪除多個
dbsize        // 計算key的數量
expire key seconds    // 過期時間

好吧redis先簡單介紹到這裡吧。。。。。。。。。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 看 《the linux command line》的find章節,有個好玩的實踐,大家看看能否快速敲出來: 題目 1. 在家目錄下創建一個playground目錄,該目錄下創建一百個文件夾,每個文件夾下創建一百個文件 2. 一次性輸出每個playground子目錄下的文件個數,看看是不是100個 ...
  • 系統莫名其妙的掉電或磁碟發生問題非常可能導致文件系統的錯亂,文件系統若發生錯亂,可以使用fsck(file system check)命令進行檢查。 使用許可權:root用戶 選項和參數: -a:檢測到有錯則自動修複 -A:依據 /etc/fstab的配置文件,將需要檢查的裝置掃描一次 -d : 列印 ...
  • 安裝補丁KB2685811、重啟。 ...
  • 1、根據之前一篇關於rsync的隨筆部署好rsync服務後,可以開始inotify的部署 2、inotify的部署使用 ①、檢查系統是否支持inotify 如果出現上面結果說明系統支持inotify。 ②、安裝 ③、inotify參數 * 說明: max_user_instances:每個用戶創建i ...
  • rysnc server端 1、vim /etcrsyncd.conf (用戶rsync,目錄,模塊,非系統虛擬用戶及密碼文件) 2、創建共用目錄 /data/www/{www,bbs,blog} 3、創建rsync用戶,並授權訪問/data/www/ 4、創建密碼文件,複製配置文件里的路徑,然後添 ...
  • 眾所周知,在sqlserver中,表變數最大的特性之一就是沒有統計信息,無法較為準備預估其數據分佈情況,因此不適合參與較為複雜的SQL運算。當SQL相對簡單的時候,使用表變數,在某些場景下,即便是對錶變數的預估沒有產生偏差的情況下,仍舊會有問題。sqlserver的優化引擎對於表變數的支持十分不友好 ...
  • 一篇瞭解大數據架構及Hadoop生態圈 閱讀建議,有一定基礎的閱讀順序為1,2,3,4節,沒有基礎的閱讀順序為2,3,4,1節。 第一節 集群規劃 大數據集群規劃(以CDH集群為例),參考鏈接: https://www.cloudera.com/documentation/enterprise/la ...
  • Oracle Database 介紹 Oracle Database又名Oracle RDBMS簡稱Oracle是甲骨文公司的一款關係資料庫管理系統。 Oracle網站地址。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...