Redis 教程windows下Redis的安裝和使用windows下Redis的安裝和使用windows下Redis的安裝和使用

 

 


Redis 教程

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。 Redis是一個開源的使用ANSI C語言編寫、遵照BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。 它一般被稱爲數據結構服務器,由於值(value)能夠是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。html

Redis 與其餘 key - value 緩存產品有如下三個特色:

  • Redis支持數據的持久化,能夠將內存中的數據保持在磁盤中,重啓的時候能夠再次加載進行使用。
  • Redis不只僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
  • Redis支持數據的備份,即master-slave模式的數據備份。

Redis 優點

  • 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
  • 豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操做。
  • 原子 – Redis的全部操做都是原子性的,同時Redis還支持對幾個操做全並後的原子性執行。
  • 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過時等等特性。

Redis與其餘key-value存儲有什麼不一樣?

  • Redis有着更爲複雜的數據結構而且提供對他們的原子性操做,這是一個不一樣於其餘數據庫的進化路徑。Redis的數據類型都是基於基本數據結構的同時對程序員透明,無需進行額外的抽象。
  • Redis運行在內存中可是能夠持久化到磁盤,因此在對不一樣數據集進行高速讀寫時須要權衡內存,應爲數據量不能大於硬件內存。在內存數據庫方面的另外一個優勢是, 相比在磁盤上相同的複雜的數據結構,在內存中操做起來很是簡單,這樣Redis能夠作不少內部複雜性很強的事情。 同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,由於他們並不須要進行隨機訪問。

 

 

 


Redis 安裝


Window 下安裝

下載地址:https://github.com/dmajkic/redis/downloadsnode

image

下載到的Redis支持32bit和64bit。根據本身實際狀況選擇,將64bit的內容cp到自定義盤符安裝目錄取名redis。 如 C:\reidspython

打開一個cmd窗口 使用cd命令切換目錄到 C:\redis 運行 redis-server.exe redis.conf 。mysql

若是想方便的話,能夠把redis的路徑加到系統的環境變量裏,這樣就免得再輸路徑了,後面的那個redis.conf能夠省略,若是省略,會啓用默認的。輸入以後,會顯示以下界面:git

Redis 安裝

這時候另啓一個cmd窗口,原來的不要關閉,否則就沒法訪問服務端了。程序員

切換到redis目錄下運行 redis-cli.exe -h 127.0.0.1 -p 6379 。github

設置鍵值對 set myKey abcweb

取出鍵值對 get myKeyredis

Redis 安裝

 

windows下Redis的安裝和使用
 

一、要安裝Redis,首先要獲取安裝包。Windows的Redis安裝包須要到如下GitHub連接找到。連接:https://github.com/MSOpenTech/redis。打開網站後,找到Release,點擊前往下載頁面。算法

 

二、在下載網頁中,找到最後發行的版本(此處是3.2.100)。找到Redis-x64-3.2.100.msi和Redis-x64-3.2.100.zip,點擊下載。這裏說明一下,第一個是msi微軟格式的安裝包,第二個是壓縮包。

三、雙擊剛下載好的msi格式的安裝包(Redis-x64-3.2.100.msi)開始安裝。

四、選擇「贊成協議」,點擊下一步繼續。

五、選擇「添加Redis目錄到環境變量PATH中」,這樣方便系統自動識別Redis執行文件在哪裏。

六、端口號可保持默認的6379,並選擇防火牆例外,從而保證外部能夠正常訪問Redis服務。

七、設定最大值爲100M。做爲實驗和學習,100M足夠了。

八、點擊安裝後,正式的安裝過程開始。稍等一會便可完成。

九、安裝完畢後,須要先作一些設定工做,以便服務啓動後能正常運行。使用文本編輯器,這裏使用Notepad++,打開Redis服務配置文件。注意:不要找錯了,一般爲redis.windows-service.conf,而不是redis.windows.conf。後者是以非系統服務方式啓動程序使用的配置文件。

十、找到含有requirepass字樣的地方,追加一行,輸入requirepass 12345。這是訪問Redis時所需的密碼,通常測試狀況下能夠不用設定密碼。不過,即便是做爲本地訪問,也建議設定一個密碼。此處以簡單的12345來演示。

十一、點擊「開始」>右擊「計算機」>選擇「管理」。在左側欄中依次找到並點擊「計算機管理(本地)」>服務和應用程序>服務。再在右側找到Redis名稱的服務,查看啓動狀況。如未啓動,則手動啓動之。正常狀況下,服務應該正常啓動並運行了。

十二、最後來測試一下Redis是否正常提供服務。進入Redis的目錄,cd C:\Program Files\Redis。輸入redis-cli並回車。(redis-cli是客戶端程序)如圖正常提示進入,並顯示正確端口號,則表示服務已經啓動。

 
1三、使用服務前須要先經過密碼驗證。輸入「auth 12345」並回車(12345是以前設定的密碼)。返回提示OK表示驗證經過。
1四、實際測試一下讀寫。輸入set mykey1 "I love you all!」並回車,用來保存一個鍵值。再輸入get mykey1,獲取剛纔保存的鍵值。
1五、注意事項
  • 1.Windows使用的這個Redis是64位版本的,32位操做系統的同窗就不要折騰了。
  • 2.做爲服務運行的Redis配置文件,一般爲redis.windows-service.conf,而不是redis.windows.conf。當心不要選錯了。

 

 

 

 


Linux 下安裝

下載地址:http://redis.io/download,下載最新文檔版本。

本教程使用的最新文檔版本爲 2.8.17,下載並安裝:

  1. $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
  2. $ tar xzf redis-2.8.17.tar.gz
  3. $ cd redis-2.8.17
  4. $ make

make完後 redis-2.8.17目錄下會出現編譯後的redis服務程序redis-server,還有用於測試的客戶端程序redis-cli,兩個程序位於安裝目錄 src 目錄下:

下面啓動redis服務.

  1. $ cd src
  2. $ ./redis-server

注意這種方式啓動redis 使用的是默認配置。也能夠經過啓動參數告訴redis使用指定配置文件使用下面命令啓動。

  1. $ cd src
  2. $ ./redis-server redis.conf

redis.conf是一個默認的配置文件。咱們能夠根據須要使用本身的配置文件。

啓動redis服務進程後,就可使用測試客戶端程序redis-cli和redis服務交互了。 好比:

  1. $ cd src
  2. $ ./redis-cli
  3. redis>set foo bar
  4. OK
  5. redis>get foo
  6. "bar"

Ubuntu 下安裝

在 Ubuntu 系統安裝 Redi 可使用如下命令:

  1. $sudo apt-get update
  2. $sudo apt-get install redis-server

啓動 Redis

  1. $ redis-server

查看 redis 是否啓動?

  1. $ redis-cli

以上命令將打開如下終端:

  1. redis 127.0.0.1:6379>

127.0.0.1 是本機 IP ,6379 是 redis 服務端口。如今咱們輸入 PING 命令。

  1. redis 127.0.0.1:6379> ping
  2. PONG

以上說明咱們已經成功安裝了redis。

 


Redis 配置


Redis 的配置文件位於 Redis 安裝目錄下,文件名爲 redis.conf。

你能夠經過 CONFIG 命令查看或設置配置項。


語法3

Redis CONFIG 命令格式以下:

  1. redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

實例

127.0.0.1:6379> config get loglevel
1) "loglevel"
2) "notice"
127.0.0.1:6379>

image

 

使用 * 號獲取全部配置項:

實例

127.0.0.1:6379> CONFIG GET *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) "123456"
  5) "masterauth"
  6) ""
  7) "unixsocket"
  8) ""
  9) "logfile"
 10) "Logs/redis_log.txt"
 11) "pidfile"
 12) "/var/run/redis.pid"
 13) "maxmemory"
 14) "0"
 15) "maxmemory-samples"
 16) "5"
 17) "timeout"
 18) "0"
 19) "tcp-keepalive"
 20) "0"
 21) "auto-aof-rewrite-percentage"
 22) "100"
 23) "auto-aof-rewrite-min-size"
 24) "67108864"
 25) "hash-max-ziplist-entries"
 26) "512"
 27) "hash-max-ziplist-value"
 28) "64"
 29) "list-max-ziplist-entries"
 30) "512"
 31) "list-max-ziplist-value"
 32) "64"
 33) "set-max-intset-entries"
 34) "512"
 35) "zset-max-ziplist-entries"
 36) "128"
 37) "zset-max-ziplist-value"
 38) "64"
 39) "hll-sparse-max-bytes"
 40) "3000"
 41) "lua-time-limit"
 42) "5000"
 43) "slowlog-log-slower-than"
 44) "10000"
 45) "latency-monitor-threshold"
 46) "0"
 47) "slowlog-max-len"
 48) "128"
 49) "port"
 50) "6379"
 51) "tcp-backlog"
 52) "511"
 53) "databases"
 54) "16"
 55) "repl-ping-slave-period"
 56) "10"
 57) "repl-timeout"
 58) "60"
 59) "repl-backlog-size"
 60) "1048576"
 61) "repl-backlog-ttl"
 62) "3600"
 63) "maxclients"
 64) "10000"
 65) "watchdog-period"
 66) "0"
 67) "slave-priority"
 68) "100"
 69) "min-slaves-to-write"
 70) "0"
 71) "min-slaves-max-lag"
 72) "10"
 73) "hz"
 74) "10"
 75) "cluster-node-timeout"
 76) "15000"
 77) "cluster-migration-barrier"
 78) "1"
 79) "cluster-slave-validity-factor"
 80) "10"
 81) "repl-diskless-sync-delay"
 82) "5"
 83) "cluster-require-full-coverage"
 84) "yes"
 85) "no-appendfsync-on-rewrite"
 86) "no"
 87) "slave-serve-stale-data"
 88) "yes"
 89) "slave-read-only"
 90) "yes"
 91) "stop-writes-on-bgsave-error"
 92) "yes"
 93) "daemonize"
 94) "no"
 95) "rdbcompression"
 96) "yes"
 97) "rdbchecksum"
 98) "yes"
 99) "activerehashing"
100) "yes"
101) "repl-disable-tcp-nodelay"
102) "no"
103) "repl-diskless-sync"
104) "no"
105) "aof-rewrite-incremental-fsync"
106) "yes"
107) "aof-load-truncated"
108) "yes"
109) "appendonly"
110) "no"
111) "dir"
112) "I:\\Mysql_DataBase\\Redis-x64-3.0.504\\Redis"
113) "maxmemory-policy"
114) "noeviction"
115) "appendfsync"
116) "everysec"
117) "save"
118) "jd 900 jd 300 jd 60"
119) "loglevel"
120) "notice"
121) "client-output-buffer-limit"
122) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
123) "unixsocketperm"
124) "0"
125) "slaveof"
126) ""
127) "notify-keyspace-events"
128) ""
129) "bind"
130) ""
127.0.0.1:6379>

image

 

 

 

 

 

 

 

 

 

 


編輯配置

你能夠經過修改 redis.conf 文件或使用 CONFIG set 命令來修改配置。

語法  CONFIG SET 命令基本語法:

 

  1. redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

 

實例

image

127.0.0.1:6379> CONFIG SET  loglevel "notice"
OK
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
127.0.0.1:6379>



參數說明

redis.conf 配置項說明以下:

1. Redis默認不是以守護進程的方式運行,能夠經過該配置項修改,使用yes啓用守護進程

    daemonize no

2. 當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,能夠經過pidfile指定

    pidfile /var/run/redis.pid

3. 指定Redis監聽端口,默認端口爲6379,做者在本身的一篇博文中解釋了爲何選用6379做爲默認端口,由於6379在手機按鍵上MERZ對應的號碼,而MERZ取自意大利歌女Alessia Merz的名字

    port 6379

4. 綁定的主機地址

    bind 127.0.0.1

5.當 客戶端閒置多長時間後關閉鏈接,若是指定爲0,表示關閉該功能

    timeout 300

6. 指定日誌記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning,默認爲verbose

    loglevel verbose

7. 日誌記錄方式,默認爲標準輸出,若是配置Redis爲守護進程方式運行,而這裏又配置爲日誌記錄方式爲標準輸出,則日誌將會發送給/dev/null

    logfile stdout

8. 設置數據庫的數量,默認數據庫爲0,可使用SELECT <dbid>命令在鏈接上指定數據庫id

    databases 16

9. 指定在多長時間內,有多少次更新操做,就將數據同步到數據文件,能夠多個條件配合

    save < seconds> <changes>

    Redis默認配置文件中提供了三個條件:

    save 900 1

    save 300 10

    save 60 10000

    分別表示900秒(15分鐘)內有1個更改,300秒(5分鐘)內有10個更改以及60秒內有10000個更改。

 

10. 指定存儲至本地數據庫時是否壓縮數據,默認爲yes,Redis採用LZF壓縮,若是爲了節省CPU時間,能夠關閉該選項,但會致使數據庫文件變的巨大

    rdbcompression yes

11. 指定本地數據庫文件名,默認值爲dump.rdb

    dbfilename dump.rdb

12. 指定本地數據庫存放目錄

    dir ./

13. 設置當本機爲slav服務時,設置master服務的IP地址及端口,在Redis啓動時,它會自動從master進行數據同步

    slaveof < masterip> <masterport>

14. 當master服務設置了密碼保護時,slav服務鏈接master的密碼

    masterauth <master-password>

15. 設置Redis鏈接密碼,若是配置了鏈接密碼,客戶端在鏈接Redis時須要經過AUTH <password>命令提供密碼,默認關閉

    requirepass foobared

16. 設置同一時間最大客戶端鏈接數,默認無限制,Redis能夠同時打開的客戶端鏈接數爲Redis進程能夠打開的最大文件描述符數,若是設置 maxclients 0,表示不做限制。當客戶端鏈接數到達限制時,Redis會關閉新的鏈接並向客戶端返回max number of clients reached錯誤信息

    maxclients 128

17. 指定Redis最大內存限制,Redis在啓動時會把數據加載到內存中,達到最大內存後,Redis會先嚐試清除已到期或即將到期的Key,當此方法處理 後,仍然到達最大內存設置,將沒法再進行寫入操做,但仍然能夠進行讀取操做。Redis新的vm機制,會把Key存放內存,Value會存放在swap區

    maxmemory < bytes>

18. 指定是否在每次更新操做後進行日誌記錄,Redis在默認狀況下是異步的把數據寫入磁盤,若是不開啓,可能會在斷電時致使一段時間內的數據丟失。由於 redis自己同步數據文件是按上面save條件來同步的,因此有的數據會在一段時間內只存在於內存中。默認爲no

    appendonly no

19. 指定更新日誌文件名,默認爲appendonly.aof

     appendfilename appendonly.aof

20. 指定更新日誌條件,共有3個可選值: 
    no:表示等操做系統進行數據緩存同步到磁盤(快)
    always:表示每次更新操做後手動調用fsync()將數據寫到磁盤(慢,安全)
    everysec:表示每秒同步一次(折衷,默認值)

    appendfsync everysec

 

21. 指定是否啓用虛擬內存機制,默認值爲no,簡單的介紹一下,VM機制將數據分頁存放,由Redis將訪問量較少的頁即冷數據swap到磁盤上,訪問多的頁面由磁盤自動換出到內存中(在後面的文章我會仔細分析Redis的VM機制)

     vm-enabled no

22. 虛擬內存文件路徑,默認值爲/tmp/redis.swap,不可多個Redis實例共享

     vm-swap-file /tmp/redis.swap

23. 將全部大於vm-max-memory的數據存入虛擬內存,不管vm-max-memory設置多小,全部索引數據都是內存存儲的(Redis的索引數據 就是keys),也就是說,當vm-max-memory設置爲0的時候,實際上是全部value都存在於磁盤。默認值爲0

     vm-max-memory 0

24. Redis swap文件分紅了不少的page,一個對象能夠保存在多個page上面,但一個page上不能被多個對象共享,vm-page-size是要根據存儲的 數據大小來設定的,做者建議若是存儲不少小對象,page大小最好設置爲32或者64bytes;若是存儲很大大對象,則可使用更大的page,若是不 肯定,就使用默認值

     vm-page-size 32

25. 設置swap文件中的page數量,因爲頁表(一種表示頁面空閒或使用的bitmap)是在放在內存中的,,在磁盤上每8個pages將消耗1byte的內存。

     vm-pages 134217728

26. 設置訪問swap文件的線程數,最好不要超過機器的核數,若是設置爲0,那麼全部對swap文件的操做都是串行的,可能會形成比較長時間的延遲。默認值爲4

     vm-max-threads 4

27. 設置在向客戶端應答時,是否把較小的包合併爲一個包發送,默認爲開啓

    glueoutputbuf yes

28. 指定在超過必定的數量或者最大的元素超過某一臨界值時,採用一種特殊的哈希算法

    hash-max-zipmap-entries 64

    hash-max-zipmap-value 512

29. 指定是否激活重置哈希,默認爲開啓(後面在介紹Redis的哈希算法時具體介紹)

    activerehashing yes

30. 指定包含其它的配置文件,能夠在同一主機上多個Redis實例之間使用同一份配置文件,而同時各個實例又擁有本身的特定配置文件

    include /path/to/local.conf

 

 

 

Redis  cmd 訪問鏈接方式

I:\Mysql_DataBase\Redis-x64-3.0.504\Redis>dir
 驅動器 I 中的卷是 新加捲
 卷的序列號是 A237-7007

 I:\Mysql_DataBase\Redis-x64-3.0.504\Redis 的目錄

2021/05/15  15:22    <DIR>          .
2021/05/15  15:22    <DIR>          ..
2021/05/15  15:22               383 dump.rdb
2016/07/01  15:54             1,024 EventLog.dll
2021/05/07  22:06    <DIR>          Logs
2016/07/01  15:52            12,618 Redis on Windows Release Notes.docx
2016/07/01  15:52            16,769 Redis on Windows.docx
2016/07/01  15:55           406,016 redis-benchmark.exe
2016/07/01  15:55         4,370,432 redis-benchmark.pdb
2016/07/01  15:55           257,024 redis-check-aof.exe
2016/07/01  15:55         3,518,464 redis-check-aof.pdb
2016/07/01  15:55           268,288 redis-check-dump.exe
2016/07/01  15:55         3,485,696 redis-check-dump.pdb
2016/07/01  15:55           482,304 redis-cli.exe
2016/07/01  15:55         4,517,888 redis-cli.pdb
2016/07/01  15:55         1,553,408 redis-server.exe
2016/07/01  15:55         6,909,952 redis-server.pdb
2021/05/07  22:24            43,947 redis.windows-service.conf
2016/07/01  15:52            43,927 redis.windows.conf
2016/07/01  09:17            14,265 Windows Service Documentation.docx
              17 個文件     25,902,405 字節
               3 個目錄 3,279,902,744,576 可用字節

I:\Mysql_DataBase\Redis-x64-3.0.504\Redis>redis-cli -h 127.0.0.1 -p 6379 -a "123456"

image

 

 

 

Redis 數據類型


Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。


String(字符串)

string是redis最基本的類型,你能夠理解成與Memcached如出一轍的類型,一個key對應一個value。string類型是二進制安全的。意思是redis的string能夠包含任何數據。好比jpg圖片或者序列化的對象 。string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。

實例

image

127.0.0.1:6379> set name "alan.com"
OK
127.0.0.1:6379> get name
"alan.com"
127.0.0.1:6379>

在以上實例中咱們使用了 Redis 的 SET 和 GET 命令。鍵爲 name,對應的值爲alan.com。注意:一個鍵最大能存儲512MB。


Hash(哈希)

Redis hash 是一個鍵值對集合。Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

實例

127.0.0.1:6379> hmset  user:1 username alan.com password alan.com points 200
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "alan.com"
3) "password"
4) "alan.com"
5) "points"
6) "200"
127.0.0.1:6379>

image

以上實例中 hash 數據類型存儲了包含用戶腳本信息的用戶對象。 實例中咱們使用了 Redis HMSET, HEGTALL 命令,user:1 爲鍵值。每一個 hash 能夠存儲 232 - 1 鍵值對(40多億)。


List(列表)

Redis 列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素導列表的頭部(左邊)或者尾部(右邊)。

實例

127.0.0.1:6379> lpush alan.com redis
(integer) 1
127.0.0.1:6379> lpush alan.com mongodb
(integer) 2
127.0.0.1:6379> lpush alan.com rebitmq
(integer) 3
127.0.0.1:6379> lrange alan.com 0 10
1) "rebitmq"
2) "mongodb"
3) "redis"
127.0.0.1:6379>


image

 

列表最多可存儲 232 - 1 元素 (4294967295, 每一個列表可存儲40多億)。


Set(集合)

Redis的Set是string類型的無序集合。集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。

 

 

sadd 命令

添加一個string元素到,key對應的set集合中,成功返回1,若是元素以及在集合中返回0,key對應的set不存在返回錯誤。

  1. sadd key member

實例

127.0.0.1:6379> sadd set.alan.com redis
(integer) 1
127.0.0.1:6379> sadd set.alan.com mongodb
(integer) 1
127.0.0.1:6379> sadd set.alan.com rebitmq
(integer) 1
127.0.0.1:6379> smembers set.alan.com
1) "rebitmq"
2) "mongodb"
3) "redis"
127.0.0.1:6379>

image

 

 

注意:以上實例中 rabitmq 添加了兩次,但根據集合內元素的惟一性,第二次插入的元素將被忽略。集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。

image

 

 

 

 

 


zset(sorted set:有序集合)

Redis zset 和 set 同樣也是string類型元素的集合,且不容許重複的成員。

不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。

zset的成員是惟一的,但分數(score)卻能夠重複。

 

 

zadd 命令

添加元素到集合,元素在集合中存在則更新對應score

  1. zadd key score member

實例

image

127.0.0.1:6379> zadd foshan 0 redis
(integer) 1
127.0.0.1:6379> zadd foshan 0 mongodb
(integer) 1
127.0.0.1:6379> zadd foshan 0 rebitmq
(integer) 1
127.0.0.1:6379> zadd foshan 0 rebitmq
(integer) 0
127.0.0.1:6379> ZRANGEBYSCORE foshan 0 1000
1) "mongodb"
2) "rebitmq"
3) "redis"
127.0.0.1:6379>





 

 

 

Redis 命令

 

Redis 命令

 

 


Redis 命令用於在 redis 服務上執行操做。

要在 redis 服務上執行命令須要一個 redis 客戶端。Redis 客戶端在咱們以前下載的的 redis 的安裝包中。

語法

Redis 客戶端的基本語法爲:

  1. $ redis-cli

實例

如下實例講解了如何啓動 redis 客戶端:

啓動 redis 客戶端,打開終端並輸入命令 redis-cli。該命令會鏈接本地的 redis 服務。

  1. $redis-cli
  2. redis 127.0.0.1:6379>
  3. redis 127.0.0.1:6379> PING
  4.  
  5. PONG

在以上實例中咱們鏈接到本地的 redis 服務並執行 PING 命令,該命令用於檢測 redis 服務是否啓動。


在遠程服務上執行命令

 

若是須要在遠程 redis 服務上執行命令,一樣咱們使用的也是 redis-cli 命令。

語法

 

  1. $ redis-cli -h host -p port -a password

實例

如下實例演示瞭如何鏈接到主機爲 127.0.0.1,端口爲 6379 ,密碼爲 mypass 的 redis 服務上。

 I:\Mysql_DataBase\Redis-x64-3.0.504 的目錄

2021/05/07  22:06    <DIR>          .
2021/05/07  22:06    <DIR>          ..
2021/05/07  22:05            20,084 QQ截圖20210507220538.png
2021/05/07  22:06            18,658 QQ截圖20210507220601.png
2021/05/07  22:06            16,828 QQ截圖20210507220608.png
2021/05/11  21:34    <DIR>          Redis
2021/05/07  22:04         6,733,824 Redis-x64-3.0.504.msi
               4 個文件      6,789,394 字節
               3 個目錄 3,278,030,254,080 可用字節

I:\Mysql_DataBase\Redis-x64-3.0.504>redis-cli -h 127.0.0.1 -p 6379 -a "123456"
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

image

 

 

 

 

 


Redis 鍵(key)


 

 

Redis 鍵命令用於管理 redis 的鍵。

語法

Redis 鍵命令的基本語法以下:

  1. redis 127.0.0.1:6379> COMMAND KEY_NAME

 

實例

127.0.0.1:6379> set w3ckey redis
OK
127.0.0.1:6379> get w3ckey
"redis"
127.0.0.1:6379> del w3ckey
(integer) 1
127.0.0.1:6379> get w3ckey
(nil)
127.0.0.1:6379>

image

 

在以上實例中 DEL 是一個命令, w3ckey 是一個鍵。 若是鍵被刪除成功,命令執行後輸出 (integer) 1,不然將輸出 (integer) 0


Redis keys 命令

下表給出了與 Redis 鍵相關的基本命令:

序號 命令及描述
1 DEL key
該命令用於在 key 存在是刪除 key。
2 DUMP key 
序列化給定 key ,並返回被序列化的值。
3 EXISTS key 
檢查給定 key 是否存在。
4 EXPIRE key seconds
爲給定 key 設置過時時間。
5 EXPIREAT key timestamp 
EXPIREAT 的做用和 EXPIRE 相似,都用於爲 key 設置過時時間。 不一樣在於 EXPIREAT 命令接受的時間參數是 UNIX 時間戳(unix timestamp)。
6 PEXPIRE key milliseconds 
設置 key 的過時時間億以毫秒計。
7 PEXPIREAT key milliseconds-timestamp 
設置 key 過時時間的時間戳(unix timestamp) 以毫秒計
8 KEYS pattern 
查找全部符合給定模式( pattern)的 key 。
9 MOVE key db 
將當前數據庫的 key 移動到給定的數據庫 db 當中。
10 PERSIST key 
移除 key 的過時時間,key 將持久保持。
11 PTTL key 
以毫秒爲單位返回 key 的剩餘的過時時間。
12 TTL key 
以秒爲單位,返回給定 key 的剩餘生存時間(TTL, time to live)。
13 RANDOMKEY 
從當前數據庫中隨機返回一個 key 。
14 RENAME key newkey 
修改 key 的名稱
15 RENAMENX key newkey 
僅當 newkey 不存在時,將 key 更名爲 newkey 。
16 TYPE key 
返回 key 所儲存的值的類型。

 

 

 

 

 

 

 


Redis DEL 命令


Redis DEL 命令用於刪除已存在的鍵。不存在的 key 會被忽略。

語法

redis DEL 命令基本語法以下:

  1. redis 127.0.0.1:6379> DEL KEY_NAME

可用版本

>= 1.0.0

返回值

被刪除 key 的數量。

實例

127.0.0.1:6379> set w3ckey redis
OK
127.0.0.1:6379> get w3ckey
"redis"
127.0.0.1:6379> del w3ckey
(integer) 1
127.0.0.1:6379> get w3ckey
(nil)
127.0.0.1:6379>
 
 
 

 

 

Redis Dump 命令


Redis DUMP 命令用於序列化給定 key ,並返回被序列化的值。

語法

redis DUMP 命令基本語法以下:

  1. redis 127.0.0.1:6379> DUMP KEY_NAME
可用版本

>= 2.6.0

返回值

若是 key 不存在,那麼返回 nil 。 不然,返回序列化以後的值。

實例

首先,咱們在 redis 中建立一個 key 並設置值。

  1. redis> SET greeting "hello, dumping world!"
  2. OK

如今使用 DUMP 序列化鍵值。

  1. redis> DUMP greeting
  2. "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"
  3.  
  4. redis> DUMP not-exists-key
  5. (nil)

 

 


Redis EXISTS 命令


Redis EXISTS 命令用於檢查給定 key 是否存在。

語法

redis EXISTS 命令基本語法以下:

  1. redis 127.0.0.1:6379> EXISTS KEY_NAME
可用版本

>= 1.0.0

返回值

若 key 存在返回 1 ,不然返回 0 。

實例
  1. redis 127.0.0.1:6379> EXISTS apiref.comcc-new-key
  2. (integer) 0

如今咱們建立一個名爲 apiref.comcc-new-key 的鍵並賦值,再使用 EXISTS 命令。

  1. redis 127.0.0.1:6379> set apiref.comcc-new-key newkey
  2. OK
  3. redis 127.0.0.1:6379> EXISTS apiref.comcc-new-key
  4. (integer) 1
  5. redis 127.0.0.1:6379>

Redis Expire 命令


Redis Expire 命令用於設置 key 的過時時間。key 過時後將再也不可用。

語法

redis Expire 命令基本語法以下:

  1. redis 127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDS
可用版本

>= 1.0.0

返回值

設置成功返回 1 。 當 key 不存在或者不能爲 key 設置過時時間時(好比在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過時時間)返回 0 。

實例

首先建立一個 key 並賦值:

  1. redis 127.0.0.1:6379> SET w3ckey redis
  2. OK

爲 key 設置過時時間:

  1. redis 127.0.0.1:6379> EXPIRE w3ckey 60
  2. (integer) 1

以上實例中咱們爲鍵 w3ckey 設置了過時時間爲 1 分鐘,1分鐘後該鍵會自動刪除。

 


Redis Expireat 命令


Redis Expireat 命令用於以 UNIX 時間戳(unix timestamp)格式設置 key 的過時時間。key 過時後將再也不可用。

語法

redis Expireat 命令基本語法以下:

  1. redis 127.0.0.1:6379> Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP
可用版本

>= 1.0.0

返回值

設置成功返回 1 。 當 key 不存在或者不能爲 key 設置過時時間時(好比在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過時時間)返回 0 。

實例

首先建立一個 key 並賦值:

  1. redis 127.0.0.1:6379> SET w3ckey redis
  2. OK

爲 key 設置過時時間:

  1. redis 127.0.0.1:6379> EXPIREAT w3ckey 1293840000
  2. (integer) 1
  3. EXISTS w3ckey
  4. (integer) 0

Redis PEXPIREAT 命令


Redis PEXPIREAT 命令用於設置 key 的過時時間,已毫秒技。key 過時後將再也不可用。

語法

redis PEXPIREAT 命令基本語法以下:

  1. redis 127.0.0.1:6379> PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP
可用版本

>= 1.0.0

返回值

設置成功返回 1 。 當 key 不存在或者不能爲 key 設置過時時間時(好比在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過時時間)返回 0 。

實例

首先建立一個 key 並賦值:

  1. redis 127.0.0.1:6379> SET w3ckey redis
  2. OK

爲 key 設置過時時間:

  1. redis 127.0.0.1:6379> PEXPIREAT tutorialspoint 1555555555005
  2. (integer) 1

Redis Keys 命令


Redis Keys 命令用於查找全部符合給定模式 pattern 的 key 。。

語法

redis KEYS 命令基本語法以下:

  1. redis 127.0.0.1:6379> KEYS PATTERN
可用版本

>= 1.0.0

返回值

符合給定模式的 key 列表 (Array)。

實例

首先建立一些 key,並賦上對應值:

  1. redis 127.0.0.1:6379> SET w3c1 redis
  2. OK
  3. redis 127.0.0.1:6379> SET w3c2 mysql
  4. OK
  5. redis 127.0.0.1:6379> SET w3c3 mongodb
  6. OK

查找以 w3c 爲開頭的 key:

  1. redis 127.0.0.1:6379> KEYS w3c*
  2. 1) "w3c3"
  3. 2) "w3c1"
  4. 3) "w3c2"

獲取 redis 中全部的 key 可用使用 *。

  1. redis 127.0.0.1:6379> KEYS *
  2. 1) "w3c3"
  3. 2) "w3c1"
  4. 3) "w3c2"

Redis Move 命令


Redis MOVE 命令用於將當前數據庫的 key 移動到給定的數據庫 db 當中。

語法

redis Move 命令基本語法以下:

  1. redis 127.0.0.1:6379> MOVE KEY_NAME DESTINATION_DATABASE
可用版本

>= 1.0.0

返回值

移動成功返回 1 ,失敗則返回 0 。

實例
  1. # key 存在於當前數據庫
  2.  
  3. redis> SELECT 0 # redis默認使用數據庫 0,爲了清晰起見,這裏再顯式指定一次。
  4. OK
  5.  
  6. redis> SET song "secret base - Zone"
  7. OK
  8.  
  9. redis> MOVE song 1 # 將 song 移動到數據庫 1
  10. (integer) 1
  11.  
  12. redis> EXISTS song # song 已經被移走
  13. (integer) 0
  14.  
  15. redis> SELECT 1 # 使用數據庫 1
  16. OK
  17.  
  18. redis:1> EXISTS song # 證明 song 被移到了數據庫 1 (注意命令提示符變成了"redis:1",代表正在使用數據庫 1)
  19. (integer) 1
  20.  
  21.  
  22. # 當 key 不存在的時候
  23.  
  24. redis:1> EXISTS fake_key
  25. (integer) 0
  26.  
  27. redis:1> MOVE fake_key 0 # 試圖從數據庫 1 移動一個不存在的 key 到數據庫 0,失敗
  28. (integer) 0
  29.  
  30. redis:1> select 0 # 使用數據庫0
  31. OK
  32.  
  33. redis> EXISTS fake_key # 證明 fake_key 不存在
  34. (integer) 0
  35.  
  36.  
  37. # 當源數據庫和目標數據庫有相同的 key 時
  38.  
  39. redis> SELECT 0 # 使用數據庫0
  40. OK
  41. redis> SET favorite_fruit "banana"
  42. OK
  43.  
  44. redis> SELECT 1 # 使用數據庫1
  45. OK
  46. redis:1> SET favorite_fruit "apple"
  47. OK
  48.  
  49. redis:1> SELECT 0 # 使用數據庫0,並試圖將 favorite_fruit 移動到數據庫 1
  50. OK
  51.  
  52. redis> MOVE favorite_fruit 1 # 由於兩個數據庫有相同的 key,MOVE 失敗
  53. (integer) 0
  54.  
  55. redis> GET favorite_fruit # 數據庫 0 的 favorite_fruit 沒變
  56. "banana"
  57.  
  58. redis> SELECT 1
  59. OK
  60.  
  61. redis:1> GET favorite_fruit # 數據庫 1 的 favorite_fruit 也是
  62. "apple"
 
 

 

Redis PERSIST 命令


Redis PERSIST 命令用於移除給定 key 的過時時間,使得 key 永不過時。

語法

redis PERSIST 命令基本語法以下:

  1. redis 127.0.0.1:6379> PERSIST KEY_NAME
可用版本

>= 2.2.0

返回值

當過時時間移除成功時,返回 1 。 若是 key 不存在或 key 沒有設置過時時間,返回 0 。

實例
  1. redis> SET mykey "Hello"
  2. OK
  3.  
  4. redis> EXPIRE mykey 10 # 爲 key 設置生存時間
  5. (integer) 1
  6.  
  7. redis> TTL mykey
  8. (integer) 10
  9.  
  10. redis> PERSIST mykey # 移除 key 的生存時間
  11. (integer) 1
  12.  
  13. redis> TTL mykey
  14. (integer) -1
 

Redis Pttl 命令


Redis Pttl 命令以毫秒爲單位返回 key 的剩餘過時時間。

語法

redis Pttl 命令基本語法以下:

  1. redis 127.0.0.1:6379> PTTL KEY_NAME
可用版本

>= 2.6.0

返回值

當 key 不存在時,返回 -2 。 當 key 存在但沒有設置剩餘生存時間時,返回 -1 。 不然,以毫秒爲單位,返回 key 的剩餘生存時間。

注意:在 Redis 2.8 之前,當 key 不存在,或者 key 沒有設置剩餘生存時間時,命令都返回 -1 。

實例
  1. # 不存在的 key
  2.  
  3. redis> FLUSHDB
  4. OK
  5.  
  6. redis> PTTL key
  7. (integer) -2
  8.  
  9.  
  10. # key 存在,但沒有設置剩餘生存時間
  11.  
  12. redis> SET key value
  13. OK
  14.  
  15. redis> PTTL key
  16. (integer) -1
  17.  
  18.  
  19. # 有剩餘生存時間的 key
  20.  
  21. redis> PEXPIRE key 10086
  22. (integer) 1
  23.  
  24. redis> PTTL key
  25. (integer) 6179

Redis TTL 命令


Redis TTL 命令以秒爲單位返回 key 的剩餘過時時間。

語法

redis TTL 命令基本語法以下:

  1. redis 127.0.0.1:6379> TTL KEY_NAME
可用版本

>= 1.0.0

返回值

當 key 不存在時,返回 -2 。 當 key 存在但沒有設置剩餘生存時間時,返回 -1 。 不然,以毫秒爲單位,返回 key 的剩餘生存時間。

注意:在 Redis 2.8 之前,當 key 不存在,或者 key 沒有設置剩餘生存時間時,命令都返回 -1 。

實例
  1. # 不存在的 key
  2.  
  3. redis> FLUSHDB
  4. OK
  5.  
  6. redis> TTL key
  7. (integer) -2
  8.  
  9.  
  10. # key 存在,但沒有設置剩餘生存時間
  11.  
  12. redis> SET key value
  13. OK
  14.  
  15. redis> TTL key
  16. (integer) -1
  17.  
  18.  
  19. # 有剩餘生存時間的 key
  20.  
  21. redis> EXPIRE key 10086
  22. (integer) 1
  23.  
  24. redis> TTL key
  25. (integer) 10084

Redis RANDOMKEY 命令


Redis RANDOMKEY 命令從當前數據庫中隨機返回一個 key 。

語法

redis RANDOMKEY 命令基本語法以下:

  1. redis 127.0.0.1:6379> RANDOMKEY
可用版本

>= 1.0.0

返回值

當數據庫不爲空時,返回一個 key 。 當數據庫爲空時,返回 nil 。

實例
  1. # 數據庫不爲空
  2.  
  3. redis> MSET fruit "apple" drink "beer" food "cookies" # 設置多個 key
  4. OK
  5.  
  6. redis> RANDOMKEY
  7. "fruit"
  8.  
  9. redis> RANDOMKEY
  10. "food"
  11.  
  12. redis> KEYS * # 查看數據庫內全部key,證實 RANDOMKEY 並不刪除 key
  13. 1) "food"
  14. 2) "drink"
  15. 3) "fruit"
  16.  
  17.  
  18. # 數據庫爲空
  19.  
  20. redis> FLUSHDB # 刪除當前數據庫全部 key
  21. OK
  22.  
  23. redis> RANDOMKEY
  24. (nil)

 


 

Redis Rename 命令


Redis Rename 命令用於修改 key 的名稱 。

語法

redis Rename 命令基本語法以下:

  1. redis 127.0.0.1:6379> RENAME OLD_KEY_NAME NEW_KEY_NAME
可用版本

>= 1.0.0

返回值

更名成功時提示 OK ,失敗時候返回一個錯誤。

當 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在時,返回一個錯誤。 當 NEW_KEY_NAME 已經存在時, RENAME 命令將覆蓋舊值。

實例
  1. # key 存在且 newkey 不存在
  2.  
  3. redis> SET message "hello world"
  4. OK
  5.  
  6. redis> RENAME message greeting
  7. OK
  8.  
  9. redis> EXISTS message # message 不復存在
  10. (integer) 0
  11.  
  12. redis> EXISTS greeting # greeting 取而代之
  13. (integer) 1
  14.  
  15.  
  16. # 當 key 不存在時,返回錯誤
  17.  
  18. redis> RENAME fake_key never_exists
  19. (error) ERR no such key
  20.  
  21.  
  22. # newkey 已存在時, RENAME 會覆蓋舊 newkey
  23.  
  24. redis> SET pc "lenovo"
  25. OK
  26.  
  27. redis> SET personal_computer "dell"
  28. OK
  29.  
  30. redis> RENAME pc personal_computer
  31. OK
  32.  
  33. redis> GET pc
  34. (nil)
  35.  
  36. redis:1> GET personal_computer # 原來的值 dell 被覆蓋了
  37. "lenovo"

 


Redis Renamenx 命令


Redis Renamenx 命令用於在新的 key 不存在時修改 key 的名稱 。

語法

redis Renamenx 命令基本語法以下:

  1. redis 127.0.0.1:6379> RENAMENX OLD_KEY_NAME NEW_KEY_NAME
可用版本

>= 1.0.0

返回值

修改爲功時,返回 1 。 若是 NEW_KEY_NAME 已經存在,返回 0 。

實例
  1. # newkey 不存在,更名成功
  2.  
  3. redis> SET player "MPlyaer"
  4. OK
  5.  
  6. redis> EXISTS best_player
  7. (integer) 0
  8.  
  9. redis> RENAMENX player best_player
  10. (integer) 1
  11.  
  12.  
  13. # newkey存在時,失敗
  14.  
  15. redis> SET animal "bear"
  16. OK
  17.  
  18. redis> SET favorite_animal "butterfly"
  19. OK
  20.  
  21. redis> RENAMENX animal favorite_animal
  22. (integer) 0
  23.  
  24. redis> get animal
  25. "bear"
  26.  
  27. redis> get favorite_animal
  28. "butterfly"

Redis Type 命令


 

Redis Type 命令用於返回 key 所儲存的值的類型。

語法

redis Renamenx 命令基本語法以下:

  1. redis 127.0.0.1:6379> TYPE KEY_NAME

可用版本

>= 1.0.0

返回值

返回 key 的數據類型,數據類型有:

  • none (key不存在)
  • string (字符串)
  • list (列表)
  • set (集合)
  • zset (有序集)
  • hash (哈希表)

實例

  1. # 字符串
  2.  
  3. redis> SET weather "sunny"
  4. OK
  5.  
  6. redis> TYPE weather
  7. string
  8.  
  9.  
  10. # 列表
  11.  
  12. redis> LPUSH book_list "programming in scala"
  13. (integer)1
  14.  
  15. redis> TYPE book_list
  16. list
  17.  
  18.  
  19. # 集合
  20.  
  21. redis> SADD pat "dog"
  22. (integer)1
  23.  
  24. redis> TYPE pat
  25. set

 

 

 


 

Redis 字符串(String)


Redis 字符串數據類型的相關命令用於管理 redis 字符串值,基本語法以下:

語法

  1. redis 127.0.0.1:6379> COMMAND KEY_NAME

 

實例

redis 127.0.0.1:6379> SET w3ckey redis OK redis 127.0.0.1:6379> GET w3ckey "redis"

在以上實例中咱們使用了 SET 和 GET 命令,鍵爲 w3ckey。


Redis 字符串命令

下表列出了經常使用的 redis 字符串命令:

序號 命令及描述
1 SET key value 
設置指定 key 的值
2 GET key 
獲取指定 key 的值。
3 GETRANGE key start end 
返回 key 中字符串值的子字符
4 GETSET key value
將給定 key 的值設爲 value ,並返回 key 的舊值(old value)。
5 GETBIT key offset
對 key 所儲存的字符串值,獲取指定偏移量上的位(bit)。
6 MGET key1 [key2..]
獲取全部(一個或多個)給定 key 的值。
7 SETBIT key offset value
對 key 所儲存的字符串值,設置或清除指定偏移量上的位(bit)。
8 SETEX key seconds value
將值 value 關聯到 key ,並將 key 的過時時間設爲 seconds (以秒爲單位)。
9 SETNX key value
只有在 key 不存在時設置 key 的值。
10 SETRANGE key offset value
用 value 參數覆寫給定 key 所儲存的字符串值,從偏移量 offset 開始。
11 STRLEN key
返回 key 所儲存的字符串值的長度。
12 MSET key value [key value ...]
同時設置一個或多個 key-value 對。
13 MSETNX key value [key value ...] 
同時設置一個或多個 key-value 對,當且僅當全部給定 key 都不存在。
14 PSETEX key milliseconds value
這個命令和 SETEX 命令類似,但它以毫秒爲單位設置 key 的生存時間,而不是像 SETEX 命令那樣,以秒爲單位。
15 INCR key
將 key 中儲存的數字值增一。
16 INCRBY key increment
將 key 所儲存的值加上給定的增量值(increment) 。
17 INCRBYFLOAT key increment
將 key 所儲存的值加上給定的浮點增量值(increment) 。
18 DECR key
將 key 中儲存的數字值減一。
19 DECRBY key decrement
key 所儲存的值減去給定的減量值(decrement) 。
20 APPEND key value
若是 key 已經存在而且是一個字符串, APPEND 命令將 value 追加到 key 原來的值的末尾。

 


 

Redis SET 命令


 

Redis SET 命令用於設置給定 key 的值。若是 key 已經存儲其餘值, SET 就覆寫舊值,且無視類型。

語法

redis SET 命令基本語法以下:

  1. redis 127.0.0.1:6379> SET KEY_NAME VALUE

可用版本

>= 1.0.0

返回值

在 Redis 2.6.12 之前版本, SET 命令老是返回 OK 。

從 Redis 2.6.12 版本開始, SET 在設置操做成功完成時,才返回 OK 。

實例

首先,咱們在 redis 中建立一個 key 並設置值。

  1. # 對不存在的鍵進行設置
  2.  
  3. redis 127.0.0.1:6379> SET key "value"
  4. OK
  5.  
  6. redis 127.0.0.1:6379> GET key
  7. "value"
  8.  
  9.  
  10. # 對已存在的鍵進行設置
  11.  
  12. redis 127.0.0.1:6379> SET key "new-value"
  13. OK
  14.  
  15. redis 127.0.0.1:6379> GET key
  16. "new-value"

 


 

Redis Get 命令


 

Redis Get 命令用於獲取指定 key 的值。若是 key 不存在,返回 nil 。若是key 儲存的值不是字符串類型,返回一個錯誤。

語法

redis Get 命令基本語法以下:

  1. redis 127.0.0.1:6379> GET KEY_NAME

可用版本

>= 1.0.0

返回值

返回 key 的值,若是 key 不存在時,返回 nil。 若是 key 不是字符串類型,那麼返回一個錯誤。

實例

  1. # 對不存在的 key 或字符串類型 key 進行 GET
  2.  
  3. redis> GET db
  4. (nil)
  5.  
  6. redis> SET db redis
  7. OK
  8.  
  9. redis> GET db
  10. "redis"
  11.  
  12.  
  13. # 對不是字符串類型的 key 進行 GET
  14.  
  15. redis> DEL db
  16. (integer)1
  17.  
  18. redis> LPUSH db redis mongodb mysql
  19. (integer)3
  20.  
  21. redis> GET db
  22. (error) ERR Operation against a key holding the wrong kind of value

 


 

Redis Getrange 命令


 

Redis Getrange 命令用於獲取存儲在指定 key 中字符串的子字符串。字符串的截取範圍由 start 和 end 兩個偏移量決定(包括 start 和 end 在內)。

語法

redis Getrange 命令基本語法以下:

  1. redis 127.0.0.1:6379> GETRANGE KEY_NAME start end

可用版本

>= 2.4.0

返回值

截取獲得的子字符串。

實例

首先,設置 mykey 的值並截取字符串。

  1. redis 127.0.0.1:6379> SET mykey "This is my test key"
  2. OK
  3. redis 127.0.0.1:6379> GETRANGE mykey 03
  4. "This"
  5. redis 127.0.0.1:6379> GETRANGE mykey 0-1
  6. "This is my test key"

 

 


Redis Getset 命令


 

Redis Getset 命令用於設置指定 key 的值,並返回 key 舊的值。

語法

redis Getset 命令基本語法以下:

  1. redis 127.0.0.1:6379> GETSET KEY_NAME VALUE

可用版本

>= 1.0.0

返回值

返回給定 key 的舊值。 當 key 沒有舊值時,即 key 不存在時,返回 nil 。

當 key 存在但不是字符串類型時,返回一個錯誤。

實例

首先,設置 mykey 的值並截取字符串。

  1. redis 127.0.0.1:6379> GETSET mynewkey "This is my test key"
  2. (nil)
  3. redis 127.0.0.1:6379> GETSET mynewkey "This is my new value to test getset"
  4. "This is my test key"

 


 

Redis Getbit 命令


 

Redis Getbit 命令用於對 key 所儲存的字符串值,獲取指定偏移量上的位(bit)。

語法

redis Getbit 命令基本語法以下:

  1. redis 127.0.0.1:6379> GETBIT KEY_NAME OFFSET

可用版本

>= 2.2.0

返回值

字符串值指定偏移量上的位(bit)。

當偏移量 OFFSET 比字符串值的長度大,或者 key 不存在時,返回 0 。

實例

  1. # 對不存在的 key 或者不存在的 offset 進行 GETBIT, 返回 0
  2.  
  3. redis> EXISTS bit
  4. (integer)0
  5.  
  6. redis> GETBIT bit 10086
  7. (integer)0
  8.  
  9.  
  10. # 對已存在的 offset 進行 GETBIT
  11.  
  12. redis> SETBIT bit 100861
  13. (integer)0
  14.  
  15. redis> GETBIT bit 10086
  16. (integer)1

 


 

Redis Mget 命令


 

Redis Mget 命令返回全部(一個或多個)給定 key 的值。 若是給定的 key 裏面,有某個 key 不存在,那麼這個 key 返回特殊值 nil 。

語法

redis Mget 命令基本語法以下:

  1. redis 127.0.0.1:6379> MGET KEY1 KEY2 .. KEYN

可用版本

>= 1.0.0

返回值

一個包含全部給定 key 的值的列表。

實例

  1. redis 127.0.0.1:6379> SET key1 "hello"
  2. OK
  3. redis 127.0.0.1:6379> SET key2 "world"
  4. OK
  5. redis 127.0.0.1:6379> MGET key1 key2 someOtherKey
  6. 1)"Hello"
  7. 2)"World"
  8. 3)(nil)

 

 


 

Redis Setbit 命令


 

Redis Setbit 命令用於對 key 所儲存的字符串值,設置或清除指定偏移量上的位(bit)。

語法

redis Setbit 命令基本語法以下:

  1. redis 127.0.0.1:6379>Setbit KEY_NAME OFFSET

可用版本

>= 2.2.0

返回值

指定偏移量原來儲存的位。

實例

  1. redis> SETBIT bit 100861
  2. (integer)0
  3.  
  4. redis> GETBIT bit 10086
  5. (integer)1
  6.  
  7. redis> GETBIT bit 100# bit 默認被初始化爲 0
  8. (integer)0

 


Redis Setex 命令


 

Redis Setex 命令爲指定的 key 設置值及其過時時間。若是 key 已經存在, SETEX 命令將會替換舊的值。

語法

redis Setex 命令基本語法以下:

  1. redis 127.0.0.1:6379> SETEX KEY_NAME TIMEOUT VALUE

可用版本

>= 2.0.0

返回值

設置成功時返回 OK 。

實例

  1. redis 127.0.0.1:6379> SETEX mykey 60 redis
  2. OK
  3. redis 127.0.0.1:6379> TTL mykey
  4. 60
  5. redis 127.0.0.1:6379> GET mykey
  6. "redis

 

 


Redis Setnx 命令


 

Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在時,爲 key 設置指定的值。

語法

redis Setnx 命令基本語法以下:

  1. redis 127.0.0.1:6379> SETNX KEY_NAME VALUE

可用版本

>= 1.0.0

返回值

設置成功,返回 1 。 設置失敗,返回 0 。

實例

  1. redis> EXISTS job # job 不存在
  2. (integer)0
  3.  
  4. redis> SETNX job "programmer"# job 設置成功
  5. (integer)1
  6.  
  7. redis> SETNX job "code-farmer"# 嘗試覆蓋 job ,失敗
  8. (integer)0
  9.  
  10. redis> GET job # 沒有被覆蓋
  11. "programmer"

 

 


 

Redis Setrange 命令


 

Redis Setrange 命令用指定的字符串覆蓋給定 key 所儲存的字符串值,覆蓋的位置從偏移量 offset 開始。

語法

redis Setrange 命令基本語法以下:

  1. redis 127.0.0.1:6379> SETRANGE KEY_NAME OFFSET VALUE

可用版本

>= 2.2.0

返回值

被修改後的字符串長度。

實例

  1. redis 127.0.0.1:6379> SET key1 "Hello World"
  2. OK
  3. redis 127.0.0.1:6379> SETRANGE key1 6"Redis"
  4. (integer)11
  5. redis 127.0.0.1:6379> GET key1
  6. "Hello Redis"

 

 

 


 

Redis Strlen 命令


 

Redis Strlen 命令用於獲取指定 key 所儲存的字符串值的長度。當 key 儲存的不是字符串值時,返回一個錯誤。

語法

redis Strlen 命令基本語法以下:

  1. redis 127.0.0.1:6379> STRLEN KEY_NAME

可用版本

>= 2.2.0

返回值

字符串值的長度。 當 key 不存在時,返回 0。

實例

  1. # 獲取字符串的長度
  2.  
  3. redis> SET mykey "Hello world"
  4. OK
  5.  
  6. redis> STRLEN mykey
  7. (integer)11
  8.  
  9.  
  10. # 不存在的 key 長度爲 0
  11.  
  12. redis> STRLEN nonexisting
  13. (integer)0

 


Redis Mset 命令


 

Redis Mset 命令用於同時設置一個或多個 key-value 對。

語法

redis Mset 命令基本語法以下:

  1. redis 127.0.0.1:6379> MSET key1 value1 key2 value2 .. keyN valueN

可用版本

>= 1.0.1

返回值

老是返回 OK 。

實例

  1. redis 127.0.0.1:6379> MSET key1 "Hello" key2 "World"
  2. OK
  3. redis 127.0.0.1:6379> GET key1
  4. "Hello"
  5. redis 127.0.0.1:6379> GET key2
  6. 1)"World"

 

 



 

Redis Msetnx 命令


 

Redis Msetnx 命令用於全部給定 key 都不存在時,同時設置一個或多個 key-value 對。

語法

redis Msetnx 命令基本語法以下:

  1. redis 127.0.0.1:6379> MSETNX key1 value1 key2 value2 .. keyN valueN

可用版本

>= 1.0.1

返回值

當全部 key 都成功設置,返回 1 。 若是全部給定 key 都設置失敗(至少有一個 key 已經存在),那麼返回 0 。

實例

  1. # 對不存在的 key 進行 MSETNX
  2.  
  3. redis> MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis"
  4. (integer)1
  5.  
  6. redis> MGET rmdbs nosql key-value-store
  7. 1)"MySQL"
  8. 2)"MongoDB"
  9. 3)"redis"
  10.  
  11.  
  12. # MSET 的給定 key 當中有已存在的 key
  13.  
  14. redis> MSETNX rmdbs "Sqlite" language "python"# rmdbs 鍵已經存在,操做失敗
  15. (integer)0
  16.  
  17. redis> EXISTS language # 由於 MSET 是原子性操做,language 沒有被設置
  18. (integer)0
  19.  
  20. redis> GET rmdbs # rmdbs 也沒有被修改
  21. "MySQL"

 

 

Redis Psetex 命令


 

Redis Psetex 命令以毫秒爲單位設置 key 的生存時間。

語法

redis Psetex 命令基本語法以下:

  1. redis 127.0.0.1:6379> PSETEX key1 EXPIRY_IN_MILLISECONDS value1

可用版本

>= 2.6.0

返回值

設置成功時返回 OK 。

實例

  1. redis 127.0.0.1:6379> PSETEX mykey 1000"Hello"
  2. OK
  3. redis 127.0.0.1:6379> PTTL mykey
  4. 999
  5. redis 127.0.0.1:6379> GET mykey
  6. 1)"Hello"

 

 

Redis Incr 命令


 

Redis Incr 命令將 key 中儲存的數字值增一。

若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 INCR 操做。

若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。

本操做的值限制在 64 位(bit)有符號數字表示以內。

語法

redis Incr 命令基本語法以下:

  1. redis 127.0.0.1:6379> INCR KEY_NAME

可用版本

>= 1.0.0

返回值

執行 INCR 命令以後 key 的值。

實例

  1. redis> SET page_view 20
  2. OK
  3.  
  4. redis> INCR page_view
  5. (integer)21
  6.  
  7. redis> GET page_view # 數字值在 Redis 中以字符串的形式保存
  8. "21"

 

 

Redis Incrby 命令


 

Redis Incrby 命令將 key 中儲存的數字加上指定的增量值。

若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 INCRBY 命令。

若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。

本操做的值限制在 64 位(bit)有符號數字表示以內。

語法

redis Incrby 命令基本語法以下:

  1. redis 127.0.0.1:6379> INCRBY KEY_NAME INCR_AMOUNT

可用版本

>= 1.0.0

返回值

加上指定的增量值以後, key 的值。

實例

  1. # key 存在且是數字值
  2.  
  3. redis> SET rank 50
  4. OK
  5.  
  6. redis> INCRBY rank 20
  7. (integer)70
  8.  
  9. redis> GET rank
  10. "70"
  11.  
  12.  
  13. # key 不存在時
  14.  
  15. redis> EXISTS counter
  16. (integer)0
  17.  
  18. redis> INCRBY counter 30
  19. (integer)30
  20.  
  21. redis> GET counter
  22. "30"
  23.  
  24.  
  25. # key 不是數字值時
  26.  
  27. redis> SET book "long long ago..."
  28. OK
  29.  
  30. redis> INCRBY book 200
  31. (error) ERR value isnot an integer orout of range

 

 

Redis Incrbyfloat 命令


 

Redis Incrbyfloat 命令爲 key 中所儲存的值加上指定的浮點數增量值。

若是 key 不存在,那麼 INCRBYFLOAT 會先將 key 的值設爲 0 ,再執行加法操做。

語法

redis Incrbyfloat 命令基本語法以下:

  1. redis 127.0.0.1:6379> INCRBYFLOAT KEY_NAME INCR_AMOUNT

可用版本

>= 2.6.0

返回值

執行命令以後 key 的值。

實例

  1. # 值和增量都不是指數符號
  2.  
  3. redis> SET mykey 10.50
  4. OK
  5.  
  6. redis> INCRBYFLOAT mykey 0.1
  7. "10.6"
  8.  
  9.  
  10. # 值和增量都是指數符號
  11.  
  12. redis> SET mykey 314e-2
  13. OK
  14.  
  15. redis> GET mykey # 用 SET 設置的值能夠是指數符號
  16. "314e-2"
  17.  
  18. redis> INCRBYFLOAT mykey 0# 但執行 INCRBYFLOAT 以後格式會被改爲非指數符號
  19. "3.14"
  20.  
  21.  
  22. # 能夠對整數類型執行
  23.  
  24. redis> SET mykey 3
  25. OK
  26.  
  27. redis> INCRBYFLOAT mykey 1.1
  28. "4.1"
  29.  
  30.  
  31. # 後跟的 0 會被移除
  32.  
  33. redis> SET mykey 3.0
  34. OK
  35.  
  36. redis> GET mykey # SET 設置的值小數部分能夠是 0
  37. "3.0"
  38.  
  39. redis> INCRBYFLOAT mykey 1.000000000000000000000# 但 INCRBYFLOAT 會將無用的 0 忽略掉,有須要的話,將浮點變爲整數
  40. "4"
  41.  
  42. redis> GET mykey
  43. "4"

 

 

 

Redis Decr 命令


 

Redis Decr 命令將 key 中儲存的數字值減一。

若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 DECR 操做。

若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。

本操做的值限制在 64 位(bit)有符號數字表示以內。

語法

redis Decr 命令基本語法以下:

  1. redis 127.0.0.1:6379> DECR KEY_NAME

可用版本

>= 1.0.0

返回值

執行命令以後 key 的值。

實例

  1. # 對存在的數字值 key 進行 DECR
  2.  
  3. redis> SET failure_times 10
  4. OK
  5.  
  6. redis> DECR failure_times
  7. (integer)9
  8.  
  9.  
  10. # 對不存在的 key 值進行 DECR
  11.  
  12. redis> EXISTS count
  13. (integer)0
  14.  
  15. redis> DECR count
  16. (integer)-1
  17.  
  18.  
  19. # 對存在但不是數值的 key 進行 DECR
  20.  
  21. redis> SET company YOUR_CODE_SUCKS.LLC
  22. OK
  23.  
  24. redis> DECR company
  25. (error) ERR value isnot an integer orout of range

 

 

Redis Decrby 命令


 

Redis Decrby 命令將 key 所儲存的值減去指定的減量值。

若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 DECRBY 操做。

若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。

本操做的值限制在 64 位(bit)有符號數字表示以內。

語法

redis Decrby 命令基本語法以下:

  1. redis 127.0.0.1:6379> DECRBY KEY_NAME DECREMENT_AMOUNT

可用版本

>= 1.0.0

返回值

減去指定減量值以後, key 的值。

實例

  1. # 對已存在的 key 進行 DECRBY
  2.  
  3. redis> SET count 100
  4. OK
  5.  
  6. redis> DECRBY count 20
  7. (integer)80
  8.  
  9.  
  10. # 對不存在的 key 進行DECRBY
  11.  
  12. redis> EXISTS pages
  13. (integer)0
  14.  
  15. redis> DECRBY pages 10
  16. (integer)-10

 

 

Redis Append 命令


 

Redis Append 命令用於爲指定的 key 追加值。

若是 key 已經存在而且是一個字符串, APPEND 命令將 value 追加到 key 原來的值的末尾。

若是 key 不存在, APPEND 就簡單地將給定 key 設爲 value ,就像執行 SET key value 同樣。

語法

redis Append 命令基本語法以下:

  1. redis 127.0.0.1:6379> APPEND KEY_NAME NEW_VALUE

可用版本

>= 2.0.0

返回值

追加指定值以後, key 中字符串的長度。

實例

  1. # 對不存在的 key 執行 APPEND
  2.  
  3. redis> EXISTS myphone # 確保 myphone 不存在
  4. (integer)0
  5.  
  6. redis> APPEND myphone "nokia"# 對不存在的 key 進行 APPEND ,等同於 SET myphone "nokia"
  7. (integer)5# 字符長度
  8.  
  9.  
  10. # 對已存在的字符串進行 APPEND
  11.  
  12. redis> APPEND myphone " - 1110"# 長度從 5 個字符增長到 12 個字符
  13. (integer)12
  14.  
  15. redis> GET myphone
  16. "nokia - 1110"

 

 


Redis hash 命令

下表列出了 redis hash 基本的相關命令:

序號 命令及描述
1 HDEL key field2 [field2] 
刪除一個或多個哈希表字段
2 HEXISTS key field 
查看哈希表 key 中,指定的字段是否存在。
3 HGET key field 
獲取存儲在哈希表中指定字段的值/td>
4 HGETALL key 
獲取在哈希表中指定 key 的全部字段和值
5 HINCRBY key field increment 
爲哈希表 key 中的指定字段的整數值加上增量 increment 。
6 HINCRBYFLOAT key field increment 
爲哈希表 key 中的指定字段的浮點數值加上增量 increment 。
7 HKEYS key 
獲取全部哈希表中的字段
8 HLEN key 
獲取哈希表中字段的數量
9 HMGET key field1 [field2] 
獲取全部給定字段的值
10 HMSET key field1 value1 [field2 value2 ] 
同時將多個 field-value (域-值)對設置到哈希表 key 中。
11 HSET key field value 
將哈希表 key 中的字段 field 的值設爲 value 。
12 HSETNX key field value 
只有在字段 field 不存在時,設置哈希表字段的值。
13 HVALS key 
獲取哈希表中全部值
14 HSCAN key cursor [MATCH pattern] [COUNT count] 
迭代哈希表中的鍵值對。

 

Redis 哈希(Hash)


Redis hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

Redis 中每一個 hash 能夠存儲 232 - 1 鍵值對(40多億)。

實例
  1. redis 127.0.0.1:6379> HMSET w3ckey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
  2. OK
  3. redis 127.0.0.1:6379> HGETALL w3ckey
  4.  
  5. 1) "name"
  6. 2) "redis tutorial"
  7. 3) "description"
  8. 4) "redis basic commands for caching"
  9. 5) "likes"
  10. 6) "20"
  11. 7) "visitors"
  12. 8) "23000"

 

在以上實例中,咱們設置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 w3ckey 中。

 

 

Redis Hdel 命令


 

Redis Hdel 命令用於刪除哈希表 key 中的一個或多個指定字段,不存在的字段將被忽略。

語法

redis Hdel 命令基本語法以下:

  1. redis 127.0.0.1:6379> HDEL KEY_NAME FIELD1.. FIELDN

可用版本

>= 2.0.0

返回值

被成功刪除字段的數量,不包括被忽略的字段。

實例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HDEL myhash field1
  4. (integer)1
  5. redis 127.0.0.1:6379> HDEL myhash field2
  6. (integer)0

 

 

Redis Hexists 命令


 

Redis Hexists 命令用於查看哈希表的指定字段是否存在。

語法

redis Hexists 命令基本語法以下:

  1. redis 127.0.0.1:6379> HEXISTS KEY_NAME FIELD_NAME

可用版本

>= 2.0.0

返回值

若是哈希表含有給定字段,返回 1 。 若是哈希表不含有給定字段,或 key 不存在,返回 0 。

實例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HEXISTS myhash field1
  4. (integer)1
  5. redis 127.0.0.1:6379> HEXISTS myhash field2
  6. (integer)0

 

Redis Hgetall 命令


 

Redis Hgetall 命令用於返回哈希表中,全部的字段和值。

在返回值裏,緊跟每一個字段名(field name)以後是字段的值(value),因此返回值的長度是哈希表大小的兩倍。

語法

redis Hgetall 命令基本語法以下:

  1. redis 127.0.0.1:6379> HGETALL KEY_NAME

可用版本

>= 2.0.0

返回值

以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。

實例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HGETALL myhash
  6. 1)"field1"
  7. 2)"Hello"
  8. 3)"field2"
  9. 4)"World"

 

 

Redis Hincrby 命令


 

Redis Hincrby 命令用於爲哈希表中的字段值加上指定增量值。

增量也能夠爲負數,至關於對指定字段進行減法操做。

若是哈希表的 key 不存在,一個新的哈希表被建立並執行 HINCRBY 命令。

若是指定的字段不存在,那麼在執行命令前,字段的值被初始化爲 0 。

對一個儲存字符串值的字段執行 HINCRBY 命令將形成一個錯誤。

本操做的值被限制在 64 位(bit)有符號數字表示以內。

語法

redis Hincrby 命令基本語法以下:

  1. redis 127.0.0.1:6379> HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本

>= 2.0.0

返回值

執行 HINCRBY 命令以後,哈希表中字段的值。

實例

  1. redis 127.0.0.1:6379> HSET myhash field1 20
  2. (integer)1
  3. redis 127.0.0.1:6379> HINCRBY myhash field 1
  4. (integer)21
  5. redis 127.0.0.1:6379> HINCRBY myhash field -1
  6. (integer)20

 

 

Redis Hincrbyfloat 命令


 

Redis Hincrbyfloat 命令用於爲哈希表中的字段值加上指定浮點數增量值。

若是指定的字段不存在,那麼在執行命令前,字段的值被初始化爲 0 。

語法

redis Hincrbyfloat 命令基本語法以下:

  1. redis 127.0.0.1:6379> HINCRBYFLOAT KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本

>= 2.6.0

返回值

執行 Hincrbyfloat 命令以後,哈希表中字段的值。

實例

  1. redis 127.0.0.1:6379> HSET myhash field 20.50
  2. (integer)1
  3. redis 127.0.0.1:6379> HINCRBYFLOAT mykey field 0.1
  4. "20.60"

 



Redis Hkeys 命令


 

Redis Hkeys 命令用於獲取哈希表中的全部字段名。

語法

redis Hkeys 命令基本語法以下:

  1. redis 127.0.0.1:6379> HKEYS KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本

>= 2.0.0

返回值

包含哈希表中全部字段的列表。 當 key 不存在時,返回一個空列表。

實例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HKEYS myhash
  6. 1)"field1"
  7. 2)"field2"

 

Redis Hlen 命令


 

Redis Hlen 命令用於獲取哈希表中字段的數量。

語法

redis Hlen 命令基本語法以下:

  1. redis 127.0.0.1:6379> HLEN KEY_NAME

可用版本

>= 2.0.0

返回值

哈希表中字段的數量。 當 key 不存在時,返回 0 。

實例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HLEN myhash
  6. (integer)2

 



Redis Hmget 命令


 

Redis Hmget 命令用於返回哈希表中,一個或多個給定字段的值。

若是指定的字段不存在於哈希表,那麼返回一個 nil 值。

語法

redis Hmget 命令基本語法以下:

  1. redis 127.0.0.1:6379> HMGET KEY_NAME FIELD1...FIELDN

可用版本

>= 2.0.0

返回值

一個包含多個給定字段關聯值的表,表值的排列順序和指定字段的請求順序同樣。

實例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HMGET myhash field1 field2 nofield
  6. 1)"foo"
  7. 2)"bar"
  8. 3)(nil)

 

Redis Hset 命令


 

Redis Hset 命令用於爲哈希表中的字段賦值 。

若是哈希表不存在,一個新的哈希表被建立並進行 HSET 操做。

若是字段已經存在於哈希表中,舊值將被覆蓋。

語法

redis Hset 命令基本語法以下:

  1. redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE

可用版本

>= 2.0.0

返回值

若是字段是哈希表中的一個新建字段,而且值設置成功,返回 1 。 若是哈希表中域字段已經存在且舊值已被新值覆蓋,返回 0 。

實例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. OK
  3. redis 127.0.0.1:6379> HGET myhash field1
  4. "foo"
  5.  
  6. redis 127.0.0.1:6379> HSET website google "www.g.cn"# 設置一個新域
  7. (integer)1
  8.  
  9. redis 127.0.0.1:6379>HSET website google "www.google.com"# 覆蓋一箇舊域
  10. (integer)0

 



Redis Hsetnx 命令


 

Redis Hsetnx 命令用於爲哈希表中不存在的的字段賦值 。

若是哈希表不存在,一個新的哈希表被建立並進行 HSET 操做。

若是字段已經存在於哈希表中,操做無效。

若是 key 不存在,一個新哈希表被建立並執行 HSETNX 命令。

語法

redis Hsetnx 命令基本語法以下:

  1. redis 127.0.0.1:6379> HSETNX KEY_NAME FIELD VALUE

可用版本

>= 2.0.0

返回值

設置成功,返回 1 。 若是給定字段已經存在且沒有操做被執行,返回 0 。

實例

  1. redis 127.0.0.1:6379> HSETNX myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSETNX myhash field1 "bar"
  4. (integer)0
  5. redis 127.0.0.1:6379> HGET myhash field1
  6. "foo"
  7.  
  8. redis 127.0.0.1:6379> HSETNX nosql key-value-store redis
  9. (integer)1
  10.  
  11. redis 127.0.0.1:6379> HSETNX nosql key-value-store redis # 操做無效, key-value-store 已存在
  12. (integer)0

 

 

 

 

Redis Hvals 命令


 

Redis Hvals 命令返回哈希表全部字段的值。

語法

redis Hvals 命令基本語法以下:

  1. redis 127.0.0.1:6379> HVALS KEY_NAME FIELD VALUE

可用版本

>= 2.0.0

返回值

一個包含哈希表中全部值的表。 當 key 不存在時,返回一個空表。

實例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HVALS myhash
  6. 1)"foo"
  7. 2)"bar"
  8.  
  9. # 空哈希表/不存在的key
  10.  
  11. redis 127.0.0.1:6379> EXISTS not_exists
  12. (integer)0
  13.  
  14. redis 127.0.0.1:6379> HVALS not_exists
  15. (empty list orset)

 

 

 

Redis 列表命令

下表列出了列表相關的基本命令:

序號 命令及描述
1 BLPOP key1 [key2 ] timeout 
移出並獲取列表的第一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
2 BRPOP key1 [key2 ] timeout 
移出並獲取列表的最後一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
3 BRPOPLPUSH source destination timeout 
從列表中彈出一個值,將彈出的元素插入到另一個列表中並返回它; 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
4 LINDEX key index 
經過索引獲取列表中的元素
5 LINSERT key BEFORE|AFTER pivot value 
在列表的元素前或者後插入元素
6 LLEN key 
獲取列表長度
7 LPOP key 
移出並獲取列表的第一個元素
8 LPUSH key value1 [value2] 
將一個或多個值插入到列表頭部
9 LPUSHX key value 
將一個或多個值插入到已存在的列表頭部
10 LRANGE key start stop 
獲取列表指定範圍內的元素
11 LREM key count value 
移除列表元素
12 LSET key index value 
經過索引設置列表元素的值
13 LTRIM key start stop 
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間以內的元素都將被刪除。
14 RPOP key 
移除並獲取列表最後一個元素
15 RPOPLPUSH source destination 
移除列表的最後一個元素,並將該元素添加到另外一個列表並返回
16 RPUSH key value1 [value2] 
在列表中添加一個或多個值
17 RPUSHX key value 
爲已存在的列表添加值

 

 

 

 

 

 

Redis 列表(List)


Redis列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素導列表的頭部(左邊)或者尾部(右邊)

一個列表最多能夠包含 232 - 1 個元素 (4294967295, 每一個列表超過40億個元素)。

實例

  1. redis 127.0.0.1:6379> LPUSH w3ckey redis
  2. (integer)1
  3. redis 127.0.0.1:6379> LPUSH w3ckey mongodb
  4. (integer)2
  5. redis 127.0.0.1:6379> LPUSH w3ckey mysql
  6. (integer)3
  7. redis 127.0.0.1:6379> LRANGE w3ckey 010
  8.  
  9. 1)"mysql"
  10. 2)"mongodb"
  11. 3)"redis"

在以上實例中咱們使用了 LPUSH 將三個值插入了名爲 w3ckey 的列表當中。

 

Redis Blpop 命令


 

Redis Blpop 命令移出並獲取列表的第一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。

語法

redis Blpop 命令基本語法以下:

  1. redis 127.0.0.1:6379> BLPOP LIST1 LIST2 .. LISTN TIMEOUT

可用版本

>= 2.0.0

返回值

若是列表爲空,返回一個 nil 。 不然,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。

實例

  1. redis 127.0.0.1:6379> BLPOP list1 100

在以上實例中,操做會被阻塞,若是指定的列表 key list1 存在數據則會返回第一個元素,不然在等待100秒後會返回 nil 。

 

  1. (nil)
  2. (100.06s)

 

 

Redis Brpop 命令


 

Redis Brpop 命令移出並獲取列表的最後一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。

語法

redis Blpop 命令基本語法以下:

  1. redis 127.0.0.1:6379> BRPOP LIST1 LIST2 .. LISTN TIMEOUT

可用版本

>= 2.0.0

返回值

假如在指定時間內沒有任何元素被彈出,則返回一個 nil 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。

實例

  1. redis 127.0.0.1:6379> BRPOP list1 100

在以上實例中,操做會被阻塞,若是指定的列表 key list1 存在數據則會返回第一個元素,不然在等待100秒後會返回 nil 。

 

  1. (nil)
  2. (100.06s)

 

 

Redis Brpoplpush 命令


 

Redis Brpoplpush 命令從列表中彈出一個值,將彈出的元素插入到另一個列表中並返回它; 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。

語法

redis Brpoplpush 命令基本語法以下:

  1. redis 127.0.0.1:6379> BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT

可用版本

>= 2.0.0

返回值

假如在指定時間內沒有任何元素被彈出,則返回一個 nil 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素的值,第二個元素是等待時長。

實例

  1. # 非空列表
  2.  
  3. redis> BRPOPLPUSH msg reciver 500
  4. "hello moto"# 彈出元素的值
  5. (3.38s)# 等待時長
  6.  
  7. redis> LLEN reciver
  8. (integer)1
  9.  
  10. redis> LRANGE reciver 00
  11. 1)"hello moto"
  12.  
  13.  
  14. # 空列表
  15.  
  16. redis> BRPOPLPUSH msg reciver 1
  17. (nil)
  18. (1.34s)

 

 

 

Redis Lindex 命令


 

Redis Lindex 命令用於經過索引獲取列表中的元素。你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。

語法

redis Lindex 命令基本語法以下:

  1. redis 127.0.0.1:6379> LINDEX KEY_NAME INDEX_POSITION

可用版本

>= 1.0.0

返回值

列表中下標爲指定索引值的元素。 若是指定索引值不在列表的區間範圍內,返回 nil 。

實例

 

127.0.0.1:6379> RPUSH list1 "foo"
(integer) 1
127.0.0.1:6379> RPUSH list1 "bar"
(integer) 2
127.0.0.1:6379> LINSERT list1 BEFORE "bar" "Yes"
(integer) 3
127.0.0.1:6379>  LRANGE mylist 0 -1
(empty list or set)
127.0.0.1:6379>  LRANGE list1 0 -1
1) "foo"
2) "Yes"
3) "bar"
127.0.0.1:6379>

 

 

Redis Llen 命令


 

Redis Llen 命令用於返回列表的長度。 若是列表 key 不存在,則 key 被解釋爲一個空列表,返回 0 。 若是 key 不是列表類型,返回一個錯誤。

語法

redis Llen 命令基本語法以下:

  1. redis 127.0.0.1:6379> LLEN KEY_NAME

可用版本

>= 1.0.0

返回值

列表的長度。

實例

 

 

127.0.0.1:6379> RPUSH list1 "foo"
(integer) 4
127.0.0.1:6379>  LRANGE list1 0 -1
1) "foo"
2) "Yes"
3) "bar"
4) "foo"
127.0.0.1:6379> RPUSH list1 "bar"
(integer) 5
127.0.0.1:6379>  LRANGE list1 0 -1
1) "foo"
2) "Yes"
3) "bar"
4) "foo"
5) "bar"
127.0.0.1:6379>  LLEN list1
(integer) 5
127.0.0.1:6379>

 

 

Redis Lpop 命令


 

Redis Lpop 命令用於移除並返回列表的第一個元素。

語法

redis Lpop 命令基本語法以下:

  1. redis 127.0.0.1:6379> LLEN KEY_NAME

可用版本

>= 1.0.0

返回值

列表的第一個元素。 當列表 key 不存在時,返回 nil 。

實例


127.0.0.1:6379>  LLEN list1
(integer) 5
127.0.0.1:6379> RPUSH list1 "foo"
(integer) 6
127.0.0.1:6379> RPUSH list1 "bar"
(integer) 7
127.0.0.1:6379>  LPOP list1
"foo"
127.0.0.1:6379>

 

 

Redis Lpush 命令


 

Redis Lpush 命令將一個或多個值插入到列表頭部。 若是 key 不存在,一個空列表會被建立並執行 LPUSH 操做。 當 key 存在但不是列表類型時,返回一個錯誤。

注意:在Redis 2.4版本之前的 LPUSH 命令,都只接受單個 value 值。

語法

redis Lpush 命令基本語法以下:

  1. redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN

可用版本

>= 1.0.0

返回值

執行 LPUSH 命令後,列表的長度。

實例

 

127.0.0.1:6379> LPUSH list1 "foo"
(integer) 7
127.0.0.1:6379>  LPUSH list1 "bar"
(integer) 8
127.0.0.1:6379>  LRANGE list1 0 -1
1) "bar"
2) "foo"
3) "Yes"
4) "bar"
5) "foo"
6) "bar"
7) "foo"
8) "bar"
127.0.0.1:6379>

 

Redis Lpushx 命令


 

Redis Lpushx 將一個或多個值插入到已存在的列表頭部,列表不存在時操做無效。

語法

redis Lpushx 命令基本語法以下:

  1. redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN

可用版本

>= 2.2.0

返回值

LPUSHX 命令執行以後,列表的長度。

實例

  1. 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. 127.0.0.1:6379> LPUSHX list1 "bar"
  4. (integer)2
  5. 127.0.0.1:6379> LPUSHX list2 "bar"
  6. (integer)0
  7. 127.0.0.1:6379> LRANGE list1 0-1
  8. 1)"bar"
  9. 2)"foo"

 

Redis Lrange 命令


 

Redis Lrange 返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。 你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。

語法

redis Lrange 命令基本語法以下:

  1. redis 127.0.0.1:6379> LRANGE KEY_NAME START END

可用版本

>= 1.0.0

返回值

一個列表,包含指定區間內的元素。

實例

  1. redis 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> LPUSH list1 "bar"
  4. (integer)2
  5. redis 127.0.0.1:6379> LPUSHX list1 "bar"
  6. (integer)0
  7. redis 127.0.0.1:6379> LRANGE list1 0-1
  8. 1)"bar"
  9. 2)"bar"
  10. 3)"foo"

 



Redis Lrem 命令


 

Redis Lrem 根據參數 COUNT 的值,移除列表中與參數 VALUE 相等的元素。

COUNT 的值能夠是如下幾種:

  • count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數量爲 COUNT 。
  • count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數量爲 COUNT 的絕對值。
  • count = 0 : 移除表中全部與 VALUE 相等的值。

語法

redis Lrem 命令基本語法以下:

  1. redis 127.0.0.1:6379> LREM KEY_NAME COUNT VALUE

可用版本

>= 1.0.0

返回值

被移除元素的數量。 列表不存在時返回 0 。

實例

  1. redis 127.0.0.1:6379> RPUSH mylist "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> RPUSH mylist "hello"
  4. (integer)2
  5. redis 127.0.0.1:6379> RPUSH mylist "foo"
  6. (integer)3
  7. redis 127.0.0.1:6379> RPUSH mylist "hello"
  8. (integer)4
  9. redis 127.0.0.1:6379> LREM mylist -2"hello"
  10. (integer)2

 

 

Redis Lset 命令


 

Redis Lset 經過索引來設置元素的值。

當索引參數超出範圍,或對一個空列表進行 LSET 時,返回一個錯誤。

關於列表下標的更多信息,請參考 LINDEX 命令

語法

redis Lset 命令基本語法以下:

  1. redis 127.0.0.1:6379> LSET KEY_NAME INDEX VALUE

可用版本

>= 1.0.0

返回值

操做成功返回 ok ,不然返回錯誤信息。

實例

  1. redis 127.0.0.1:6379> RPUSH mylist "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> RPUSH mylist "hello"
  4. (integer)2
  5. redis 127.0.0.1:6379> RPUSH mylist "foo"
  6. (integer)3
  7. redis 127.0.0.1:6379> RPUSH mylist "hello"
  8. (integer)4
  9. redis 127.0.0.1:6379> LSET mylist 0"bar"
  10. OK
  11. redis 127.0.0.1:6379> LRANGE mylist 0-1
  12. 1:"bar"
  13. 2)"hello"
  14. 3)"foo"
  15. 4)"hello"

 

 

Redis Ltrim 命令


 

Redis Ltrim 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間以內的元素都將被刪除。

下標 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。 你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。

語法

redis Ltrim 命令基本語法以下:

  1. redis 127.0.0.1:6379> LTRIM KEY_NAME START STOP

可用版本

>= 1.0.0

返回值

命令執行成功時,返回 ok 。

實例

  1. redis 127.0.0.1:6379> RPUSH mylist "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> RPUSH mylist "hello"
  4. (integer)2
  5. redis 127.0.0.1:6379> RPUSH mylist "foo"
  6. (integer)3
  7. redis 127.0.0.1:6379> RPUSH mylist "bar"
  8. (integer)4
  9. redis 127.0.0.1:6379> LTRIM mylist 1-1
  10. OK
  11. redis 127.0.0.1:6379> LRANGE mylist 0-1
  12. 1)"hello"
  13. 2)"foo"
  14. 3)"bar"

 

 

Redis Rpop 命令


 

Redis Rpop 命令用於移除並返回列表的最後一個元素。

語法

redis Rpop 命令基本語法以下:

  1. redis 127.0.0.1:6379> RPOP KEY_NAME

可用版本

>= 1.0.0

返回值

列表的最後一個元素。 當列表不存在時,返回 nil 。

實例

  1. redis 127.0.0.1:6379> RPUSH mylist "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> RPUSH mylist "hello"
  4. (integer)2
  5. redis 127.0.0.1:6379> RPUSH mylist "foo"
  6. (integer)3
  7. redis 127.0.0.1:6379> RPUSH mylist "bar"
  8. (integer)4
  9. redis 127.0.0.1:6379> RPOP mylist
  10. OK
  11. redis 127.0.0.1:6379> LRANGE mylist 0-1
  12. 1)"hello"
  13. 2)"hello"
  14. 3)"foo"

 

 

 

Redis Lpush 命令


 

Redis Lpush 命令將一個或多個值插入到列表頭部。 若是 key 不存在,一個空列表會被建立並執行 LPUSH 操做。 當 key 存在但不是列表類型時,返回一個錯誤。

注意:在Redis 2.4版本之前的 LPUSH 命令,都只接受單個 value 值。

語法

redis Lpush 命令基本語法以下:

  1. redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN

可用版本

>= 1.0.0

返回值

執行 LPUSH 命令後,列表的長度。

實例

  1. 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. 127.0.0.1:6379> LPUSH list1 "bar"
  4. (integer)2
  5. 127.0.0.1:6379> LRANGE list1 0-1
  6. 1)"bar"
  7. 2)"foo"

 

 

 

Redis Lpushx 命令


 

Redis Lpushx 將一個或多個值插入到已存在的列表頭部,列表不存在時操做無效。

語法

redis Lpushx 命令基本語法以下:

  1. redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN

可用版本

>= 2.2.0

返回值

LPUSHX 命令執行以後,列表的長度。

實例

  1. 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. 127.0.0.1:6379> LPUSHX list1 "bar"
  4. (integer)2
  5. 127.0.0.1:6379> LPUSHX list2 "bar"
  6. (integer)0
  7. 127.0.0.1:6379> LRANGE list1 0-1
  8. 1)"bar"
  9. 2)"foo"

 

Redis Lrange 命令


 

Redis Lrange 返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。 你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。

語法

redis Lrange 命令基本語法以下:

  1. redis 127.0.0.1:6379> LRANGE KEY_NAME START END

可用版本

>= 1.0.0

返回值

一個列表,包含指定區間內的元素。

實例

  1. redis 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> LPUSH list1 "bar"
  4. (integer)2
  5. redis 127.0.0.1:6379> LPUSHX list1 "bar"
  6. (integer)0
  7. redis 127.0.0.1:6379> LRANGE list1 0-1
  8. 1)"bar"
  9. 2)"bar"
  10. 3)"foo"

 



 

 

Redis 集合命令

下表列出了 Redis 集合基本命令:

序號 命令及描述
1 SADD key member1 [member2] 
向集合添加一個或多個成員
2 SCARD key 
獲取集合的成員數
3 SDIFF key1 [key2] 
返回給定全部集合的差集
4 SDIFFSTORE destination key1 [key2] 
返回給定全部集合的差集並存儲在 destination 中
5 SINTER key1 [key2] 
返回給定全部集合的交集
6 SINTERSTORE destination key1 [key2] 
返回給定全部集合的交集並存儲在 destination 中
7 SISMEMBER key member 
判斷 member 元素是不是集合 key 的成員
8 SMEMBERS key 
返回集合中的全部成員
9 SMOVE source destination member 
將 member 元素從 source 集合移動到 destination 集合
10 SPOP key 
移除並返回集合中的一個隨機元素
11 SRANDMEMBER key [count] 
返回集合中一個或多個隨機數
12 SREM key member1 [member2] 
移除集合中一個或多個成員
13 SUNION key1 [key2] 
返回全部給定集合的並集
14 SUNIONSTORE destination key1 [key2] 
全部給定集合的並集存儲在 destination 集合中
15 SSCAN key cursor [MATCH pattern] [COUNT count] 
迭代集合中的元素

 

Redis 集合(Set)


Redis的Set是string類型的無序集合。集合成員是惟一的,這就意味着集合中不能出現重複的數據。

Redis 中 集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。

集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。

實例

  1. redis 127.0.0.1:6379> SADD w3ckey redis
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD w3ckey mongodb
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD w3ckey mysql
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD w3ckey mysql
  8. (integer)0
  9. redis 127.0.0.1:6379> SMEMBERS w3ckey
  10.  
  11. 1)"mysql"
  12. 2)"mongodb"
  13. 3)"redis"

在以上實例中咱們經過 SADD 命令向名爲 w3ckey 的集合插入的三個元素。

 

Redis Sadd 命令


 

Redis Sadd 命令將一個或多個成員元素加入到集合中,已經存在於集合的成員元素將被忽略。

假如集合 key 不存在,則建立一個只包含添加的元素做成員的集合。

當集合 key 不是集合類型時,返回一個錯誤。

注意:在Redis2.4版本之前, SADD 只接受單個成員值。

語法

redis Sadd 命令基本語法以下:

  1. redis 127.0.0.1:6379> SADD KEY_NAME VALUE1..VALUEN

可用版本

>= 1.0.0

返回值

被添加到集合中的新元素的數量,不包括被忽略的元素。

實例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "hello"
  6. (integer)0
  7. redis 127.0.0.1:6379> SMEMBERS myset
  8. 1)"hello"
  9. 2)"foo"

 

 

 

Redis Scard 命令


 

Redis Scard 命令返回集合中元素的數量。

語法

redis Scard 命令基本語法以下:

  1. redis 127.0.0.1:6379> SCARD KEY_NAME

可用版本

>= 1.0.0

返回值

集合的數量。 當集合 key 不存在時,返回 0 。

實例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "hello"
  6. (integer)0
  7. redis 127.0.0.1:6379> SCARD myset
  8. (integer)2

 

 

 

Redis Sdiff 命令


 

Redis Sdiff 命令返回給定集合之間的差集。不存在的集合 key 將視爲空集。

語法

redis Sdiff 命令基本語法以下:

  1. redis 127.0.0.1:6379> SDIFF FIRST_KEY OTHER_KEY1..OTHER_KEYN

可用版本

>= 1.0.0

返回值

包含差集成員的列表。

實例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "world"
  10. (integer)1
  11. redis 127.0.0.1:6379> SDIFF myset myset2
  12. 1)"foo"
  13. 2)"bar"

 

 

 

Redis Sdiffstore 命令


 

Redis Sdiffstore 命令將給定集合之間的差集存儲在指定的集合中。若是指定的集合 key 已存在,則會被覆蓋。

語法

redis Sdiffstore 命令基本語法以下:

  1. redis 127.0.0.1:6379> SDIFFSTORE DESTINATION_KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

結果集中的元素數量。

實例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "world"
  10. (integer)1
  11. redis 127.0.0.1:6379> SDIFFSTORE destset myset myset2
  12. (integer)2
  13. redis 127.0.0.1:6379> SMEMBERS destset
  14. 1)"foo"
  15. 2)"bar"

 

 

Redis Sinter 命令


 

Redis Sinter 命令返回給定全部給定集合的交集。 不存在的集合 key 被視爲空集。 當給定集合當中有一個空集時,結果也爲空集(根據集合運算定律)。

語法

redis Sinter 命令基本語法以下:

  1. redis 127.0.0.1:6379> SINTER KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

交集成員的列表。

實例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "world"
  10. (integer)1
  11. redis 127.0.0.1:6379> SINTER myset myset2
  12. 1)"hello"

 

 

 

Redis Sinterstore 命令


 

Redis Sinterstore 命令將給定集合之間的交集存儲在指定的集合中。若是指定的集合已經存在,則將其覆蓋。

語法

redis Sinterstore 命令基本語法以下:

  1. redis 127.0.0.1:6379> SINTERSTORE DESTINATION_KEY KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

交集成員的列表。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "world"
  10. (integer)1
  11. redis 127.0.0.1:6379> SINTERSTORE myset myset1 myset2
  12. (integer)1
  13. redis 127.0.0.1:6379> SMEMBERS myset
  14. 1)"hello"

 

 

 

Redis Sismember 命令


 

Redis Sismember 命令判斷成員元素是不是集合的成員。

語法

redis Sismember 命令基本語法以下:

  1. redis 127.0.0.1:6379> SISMEMBER KEY VALUE

可用版本

>= 1.0.0

返回值

若是成員元素是集合的成員,返回 1 。 若是成員元素不是集合的成員,或 key 不存在,返回 0 。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SISMEMBER myset1 "hello"
  4. (integer)1
  5. redis 127.0.0.1:6379> SISMEMBER myset1 "world"
  6. (integer)0

 

 

 

Redis Smembers 命令


 

Redis Smembers 命令返回集合中的全部的成員。 不存在的集合 key 被視爲空集合。

語法

redis Smembers 命令基本語法以下:

  1. redis 127.0.0.1:6379> SMEMBERS KEY VALUE

可用版本

>= 1.0.0

返回值

集合中的全部成員。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SMEMBERS myset1
  6. 1)"World"
  7. 2)"Hello"

 

 

 

Redis Smove 命令


 

Redis Smove 命令將指定成員 member 元素從 source 集合移動到 destination 集合。

SMOVE 是原子性操做。

若是 source 集合不存在或不包含指定的 member 元素,則 SMOVE 命令不執行任何操做,僅返回 0 。不然, member 元素從 source 集合中被移除,並添加到 destination 集合中去。

當 destination 集合已經包含 member 元素時, SMOVE 命令只是簡單地將 source 集合中的 member 元素刪除。

當 source 或 destination 不是集合類型時,返回一個錯誤。

語法

redis Smove 命令基本語法以下:

  1. redis 127.0.0.1:6379> SMOVE SOURCE DESTINATION MEMBER

可用版本

>= 1.0.0

返回值

若是成員元素被成功移除,返回 1 。 若是成員元素不是 source 集合的成員,而且沒有任何操做對 destination 集合執行,那麼返回 0 。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "foo"
  8. (integer)1
  9. redis 127.0.0.1:6379> SMOVE myset1 myset2 "bar"
  10. (integer)1
  11. redis 127.0.0.1:6379> SMEMBERS myset1
  12. 1)"World"
  13. 2)"Hello"
  14. redis 127.0.0.1:6379> SMEMBERS myset2
  15. 1)"foo"
  16. 2)"bar"

 

 

 

Redis Spop 命令


 

Redis Spop 命令用於移除並返回集合中的一個隨機元素。

語法

redis Spop 命令基本語法以下:

  1. redis 127.0.0.1:6379> SPOP KEY

可用版本

>= 1.0.0

返回值

被移除的隨機元素。 當集合不存在或是空集時,返回 nil 。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SPOP myset1
  8. "bar"
  9. redis 127.0.0.1:6379> SMEMBERS myset1
  10. 1)"Hello"
  11. 2)"world"

 

 

 

 

Redis Srandmember 命令


 

Redis Srandmember 命令用於返回集合中的一個隨機元素。

從 Redis 2.6 版本開始, Srandmember 命令接受可選的 count 參數:

  • 若是 count 爲正數,且小於集合基數,那麼命令返回一個包含 count 個元素的數組,數組中的元素各不相同。若是 count 大於等於集合基數,那麼返回整個集合。
  • 若是 count 爲負數,那麼命令返回一個數組,數組中的元素可能會重複出現屢次,而數組的長度爲 count 的絕對值。

該操做和 SPOP 類似,但 SPOP 將隨機元素從集合中移除並返回,而 Srandmember 則僅僅返回隨機元素,而不對集合進行任何改動。

語法

redis Srandmember 命令基本語法以下:

  1. redis 127.0.0.1:6379> SRANDMEMBER KEY [count]

可用版本

>= 1.0.0

返回值

只提供集合 key 參數時,返回一個元素;若是集合爲空,返回 nil 。 若是提供了 count 參數,那麼返回一個數組;若是集合爲空,返回空數組。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SRANDMEMBER myset1
  8. "bar"
  9. redis 127.0.0.1:6379> SRANDMEMBER myset1 2
  10. 1)"Hello"
  11. 2)"world"

 

 

Redis Srem 命令


 

Redis Srem 命令用於移除集合中的一個或多個成員元素,不存在的成員元素會被忽略。

當 key 不是集合類型,返回一個錯誤。

在 Redis 2.4 版本之前, SREM 只接受單個成員值。

語法

redis Srem 命令基本語法以下:

  1. redis 127.0.0.1:6379> SREM KEY MEMBER1..MEMBERN

可用版本

>= 1.0.0

返回值

被成功移除的元素的數量,不包括被忽略的元素。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SREM myset1 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SREM myset1 "foo"
  10. (integer)0
  11. redis 127.0.0.1:6379> SMEMBERS myset1
  12. 1)"bar"
  13. 2)"world"

 

 



 

Redis Sunion 命令


 

Redis Sunion 命令返回給定集合的並集。不存在的集合 key 被視爲空集。

語法

redis Sunion 命令基本語法以下:

  1. redis 127.0.0.1:6379> SUNION KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

並集成員的列表。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "bar"
  10. (integer)1
  11. redis 127.0.0.1:6379> SUNION myset1 myset2
  12. 1)"bar"
  13. 2)"world"
  14. 3)"hello"
  15. 4)"foo"

 

 

 

 

Redis Sunionstore 命令


 

Redis Sunionstore 命令將給定集合的並集存儲在指定的集合 destination 中。若是 destination 已經存在,則將其覆蓋。

語法

redis Sunionstore 命令基本語法以下:

  1. redis 127.0.0.1:6379> SUNIONSTORE DESTINATION KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

結果集中的元素數量。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "bar"
  10. (integer)1
  11. redis 127.0.0.1:6379> SUNIONSTORE myset myset1 myset2
  12. (integer)1
  13. redis 127.0.0.1:6379> SMEMBERS myset
  14. 1)"bar"
  15. 2)"world"
  16. 3)"hello"
  17. 4)"foo"

 

 

 

Redis Sscan 命令


 

Redis Sscan 命令用於迭代集合鍵中的元素。

語法

redis Sscan 命令基本語法以下:

  1. redis 127.0.0.1:6379> SSCAN KEY [MATCH pattern][COUNT count]

可用版本

>= 1.0.0

返回值

數組列表。

實例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "hi"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> sscan myset1 0 match h*
  8. 1)"0"
  9. 2)1)"hello"
  10. 2)"h1"

 

 

 

 

Redis 有序集合命令

下表列出了 redis 有序集合的基本命令:

序號 命令及描述
1 ZADD key score1 member1 [score2 member2] 
向有序集合添加一個或多個成員,或者更新已存在成員的分數
2 ZCARD key 
獲取有序集合的成員數
3 ZCOUNT key min max 
計算在有序集合中指定區間分數的成員數
4 ZINCRBY key increment member 
有序集合中對指定成員的分數加上增量 increment
5 ZINTERSTORE destination numkeys key [key ...] 
計算給定的一個或多個有序集的交集並將結果集存儲在新的有序集合 key 中
6 ZLEXCOUNT key min max 
在有序集合中計算指定字典區間內成員數量
7 ZRANGE key start stop [WITHSCORES] 
經過索引區間返回有序集合成指定區間內的成員
8 ZRANGEBYLEX key min max [LIMIT offset count] 
經過字典區間返回有序集合的成員
9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 
經過分數返回有序集合指定區間內的成員
10 ZRANK key member 
返回有序集合中指定成員的索引
11 ZREM key member [member ...] 
移除有序集合中的一個或多個成員
12 ZREMRANGEBYLEX key min max 
移除有序集合中給定的字典區間的全部成員
13 ZREMRANGEBYRANK key start stop 
移除有序集合中給定的排名區間的全部成員
14 ZREMRANGEBYSCORE key min max 
移除有序集合中給定的分數區間的全部成員
15 ZREVRANGE key start stop [WITHSCORES] 
返回有序集中指定區間內的成員,經過索引,分數從高到底
16 ZREVRANGEBYSCORE key max min [WITHSCORES] 
返回有序集中指定分數區間內的成員,分數從高到低排序
17 ZREVRANK key member 
返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序
18 ZSCORE key member 
返回有序集中,成員的分數值
19 ZUNIONSTORE destination numkeys key [key ...] 
計算給定的一個或多個有序集的並集,並存儲在新的 key 中
20 ZSCAN key cursor [MATCH pattern] [COUNT count] 
迭代有序集合中的元素(包括元素成員和元素分值)

 

Redis 有序集合(sorted set)


Redis 有序集合和集合同樣也是string類型元素的集合,且不容許重複的成員。

不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。

有序集合的成員是惟一的,但分數(score)卻能夠重複。

集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。 集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。

實例

  1. redis 127.0.0.1:6379> ZADD w3ckey 1 redis
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD w3ckey 2 mongodb
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD w3ckey 3 mysql
  6. (integer)1
  7. redis 127.0.0.1:6379> ZADD w3ckey 3 mysql
  8. (integer)0
  9. redis 127.0.0.1:6379> ZADD w3ckey 4 mysql
  10. (integer)0
  11. redis 127.0.0.1:6379> ZRANGE w3ckey 010 WITHSCORES
  12.  
  13. 1)"redis"
  14. 2)"1"
  15. 3)"mongodb"
  16. 4)"2"
  17. 5)"mysql"
  18. 6)"4"

在以上實例中咱們經過命令 ZADD 向 redis 的有序集合中添加了三個值並關聯上分數。

 

Redis Zadd 命令


Redis Zadd 命令用於將一個或多個成員元素及其分數值加入到有序集當中。

若是某個成員已是有序集的成員,那麼更新這個成員的分數值,並經過從新插入這個成員元素,來保證該成員在正確的位置上。

分數值能夠是整數值或雙精度浮點數。

若是有序集合 key 不存在,則建立一個空的有序集並執行 ZADD 操做。

當 key 存在但不是有序集類型時,返回一個錯誤。

注意: 在 Redis 2.4 版本之前, ZADD 每次只能添加一個元素。

語法

redis Zadd 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN

可用版本

>= 1.2.0

返回值

被成功添加的新成員的數量,不包括那些被更新的、已經存在的成員。

實例

  1. redis 127.0.0.1:6379> ZADD myset 1"hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD myset 1"foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD myset 2"world"3"bar"
  6. (integer)2
  7. redis 127.0.0.1:6379> ZRANGE myzset 0-1 WITHSCORES
  8. 1)"hello"
  9. 2)"1"
  10. 3)"foo"
  11. 4)"1"
  12. 5)"world"
  13. 6)"2"
  14. 7)"bar"
  15. 8)"3"

 

 

Redis Zcard 命令


Redis Zcard 命令用於計算集合中元素的數量。

語法

redis Zcard 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZCARD KEY_NAME

可用版本

>= 1.2.0

返回值

當 key 存在且是有序集類型時,返回有序集的基數。 當 key 不存在時,返回 0 。

實例

  1. redis 127.0.0.1:6379> ZADD myset 1"hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD myset 1"foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD myset 2"world"3"bar"
  6. (integer)2
  7. redis 127.0.0.1:6379> ZCARD myzset
  8. (integer)4

 

 

Redis Zcount 命令


Redis Zcount 命令用於計算有序集合中指定分數區間的成員數量。

語法

redis Zcount 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZCOUNT key min max

可用版本

>= 2.0.0

返回值

分數值在 min 和 max 之間的成員的數量。

實例

  1. redis 127.0.0.1:6379> ZADD myzset 1"hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD myzset 1"foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD myzset 2"world"3"bar"
  6. (integer)2
  7. redis 127.0.0.1:6379> ZCOUNT myzset 13
  8. (integer)4

 

 

Redis Zincrby 命令


Redis Zincrby 命令對有序集合中指定成員的分數加上增量 increment

能夠經過傳遞一個負數值 increment ,讓分數減去相應的值,好比 ZINCRBY key -5 member ,就是讓 member 的 score 值減去 5 。

當 key 不存在,或分數不是 key 的成員時, ZINCRBY key increment member 等同於 ZADD key increment member 。

當 key 不是有序集類型時,返回一個錯誤。

分數值能夠是整數值或雙精度浮點數。

語法

redis Zincrby 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZINCRBY key increment member

可用版本

>= 1.2.0

返回值

member 成員的新分數值,以字符串形式表示。

實例

  1. redis 127.0.0.1:6379> ZADD myzset 1"hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD myzset 1"foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> ZINCRBY myzset 2"hello"
  6. (integer)3
  7. redis 127.0.0.1:6379> ZRANGE myzset 0-1 WITHSCORES
  8. 1)"foo"
  9. 2)"2"
  10. 3)"hello"
  11. 4)"3"

 

 

Redis Zinterstore 命令


Redis Zinterstore 命令計算給定的一個或多個有序集的交集,其中給定 key 的數量必須以 numkeys 參數指定,並將該交集(結果集)儲存到 destination 。

默認狀況下,結果集中某個成員的分數值是全部給定集下該成員分數值之和。

語法

redis Zinterstore 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZINTERSTORE destination numkeys key [key ...][WEIGHTS weight [weight ...]][AGGREGATE SUM|MIN|MAX]

可用版本

>= 2.0.0

返回值

保存到目標結果集的的成員數量。

實例

  1. # 有序集 mid_test
  2. redis 127.0.0.1:6379> ZADD mid_test 70"Li Lei"
  3. (integer)1
  4. redis 127.0.0.1:6379> ZADD mid_test 70"Han Meimei"
  5. (integer)1
  6. redis 127.0.0.1:6379> ZADD mid_test 99.5"Tom"
  7. (integer)1
  8.  
  9. # 另外一個有序集 fin_test
  10. redis 127.0.0.1:6379> ZADD fin_test 88"Li Lei"
  11. (integer)1
  12. redis 127.0.0.1:6379> ZADD fin_test 75"Han Meimei"
  13. (integer)1
  14. redis 127.0.0.1:6379> ZADD fin_test 99.5"Tom"
  15. (integer)1
  16.  
  17. # 交集
  18. redis 127.0.0.1:6379> ZINTERSTORE sum_point 2 mid_test fin_test
  19. (integer)3
  20.  
  21. # 顯示有序集內全部成員及其分數值
  22. redis 127.0.0.1:6379> ZRANGE sum_point 0-1 WITHSCORES
  23. 1)"Han Meimei"
  24. 2)"145"
  25. 3)"Li Lei"
  26. 4)"158"
  27. 5)"Tom"
  28. 6)"199"

 

 

 

Redis Zlexcount 命令


Redis Zlexcount 命令在計算有序集合中指定字典區間內成員數量。

語法

redis Zlexcount 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZLEXCOUNT KEY MIN MAX

可用版本

>= 2.8.9

返回值

指定區間內的成員數量。

實例

  1. redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e
  2. (integer)5
  3. redis 127.0.0.1:6379> ZADD myzset 0 f 0 g
  4. (integer)2
  5. redis 127.0.0.1:6379> ZLEXCOUNT myzset -+
  6. (integer)7
  7. redis 127.0.0.1:6379> ZLEXCOUNT myzset [b [f
  8. (integer)5

 

 

Redis Zrange 命令


Redis Zrange 返回有序集中,指定區間內的成員。

其中成員的位置按分數值遞增(從小到大)來排序。

具備相同分數值的成員按字典序(lexicographical order )來排列。

若是你須要成員按

值遞減(從大到小)來排列,請使用 ZREVRANGE 命令。

下標參數 start 和 stop 都以 0 爲底,也就是說,以 0 表示有序集第一個成員,以 1 表示有序集第二個成員,以此類推。

你也可使用負數下標,以 -1 表示最後一個成員, -2 表示倒數第二個成員,以此類推。

語法

redis Zrange 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZRANGE key start stop [WITHSCORES]

可用版本

>= 1.2.0

返回值

指定區間內,帶有分數值(可選)的有序集成員的列表。

實例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 顯示整個有序集成員
  2. 1)"jack"
  3. 2)"3500"
  4. 3)"tom"
  5. 4)"5000"
  6. 5)"boss"
  7. 6)"10086"
  8.  
  9. redis 127.0.0.1:6379> ZRANGE salary 12 WITHSCORES # 顯示有序集下標區間 1 至 2 的成員
  10. 1)"tom"
  11. 2)"5000"
  12. 3)"boss"
  13. 4)"10086"
  14.  
  15. redis 127.0.0.1:6379> ZRANGE salary 0200000 WITHSCORES # 測試 end 下標超出最大下標時的狀況
  16. 1)"jack"
  17. 2)"3500"
  18. 3)"tom"
  19. 4)"5000"
  20. 5)"boss"
  21. 6)"10086"
  22.  
  23. redis > ZRANGE salary 2000003000000 WITHSCORES # 測試當給定區間不存在於有序集時的狀況
  24. (empty list orset)

 

 

Redis Zrangebylex 命令


Redis Zrangebylex 經過字典區間返回有序集合的成員。

語法

redis Zrange 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZRANGEBYLEX key min max [LIMIT offset count]

可用版本

>= 2.8.9

返回值

指定區間內的元素列表。

實例

  1. redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g
  2. (integer)7
  3. redis 127.0.0.1:6379> ZRANGEBYLEX myzset -[c
  4. 1)"a"
  5. 2)"b"
  6. 3)"c"
  7. redis 127.0.0.1:6379> ZRANGEBYLEX myzset -(c
  8. 1)"a"
  9. 2)"b"
  10. redis 127.0.0.1:6379> ZRANGEBYLEX myzset [aaa (g
  11. 1)"b"
  12. 2)"c"
  13. 3)"d"
  14. 4)"e"
  15. 5)"f"
  16. redis>

 

 

Redis Zremrangebyrank 命令


Redis Zremrangebyrank 命令用於移除有序集中,指定排名(rank)區間內的全部成員。

語法

redis Zremrangebyrank 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZREMRANGEBYRANK key start stop

可用版本

>= 2.0.0

返回值

被移除成員的數量。

實例

  1. redis 127.0.0.1:6379> ZADD salary 2000 jack
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD salary 5000 tom
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD salary 3500 peter
  6. (integer)1
  7.  
  8. redis 127.0.0.1:6379> ZREMRANGEBYRANK salary 01# 移除下標 0 至 1 區間內的成員
  9. (integer)2
  10.  
  11. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 有序集只剩下一個成員
  12. 1)"tom"
  13. 2)"5000"

 

 

Redis Zrank 命令


Redis Zrank 返回有序集中指定成員的排名。其中有序集成員按分數值遞增(從小到大)順序排列。

語法

redis Zrank 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZRANK key member
可用版本

>= 2.0.0

返回值

若是成員是有序集 key 的成員,返回 member 的排名。 若是成員不是有序集 key 的成員,返回 nil 。

實例
  1. redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 顯示全部成員及其 score 值
  2. 1) "peter"
  3. 2) "3500"
  4. 3) "tom"
  5. 4) "4000"
  6. 5) "jack"
  7. 6) "5000"
  8.  
  9. redis 127.0.0.1:6379> ZRANK salary tom # 顯示 tom 的薪水排名,第二
  10. (integer) 1

 

 

 

Redis Zrem 命令


Redis Zrem 命令用於移除有序集中的一個或多個成員,不存在的成員將被忽略。

當 key 存在但不是有序集類型時,返回一個錯誤。

注意: 在 Redis 2.4 版本之前, ZREM 每次只能刪除一個元素。

語法

redis Zrem 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZRANK key member

可用版本

>= 1.2.0

返回值

被成功移除的成員的數量,不包括被忽略的成員。

實例

  1. # 測試數據
  2.  
  3. redis 127.0.0.1:6379> ZRANGE page_rank 0-1 WITHSCORES
  4. 1)"bing.com"
  5. 2)"8"
  6. 3)"baidu.com"
  7. 4)"9"
  8. 5)"google.com"
  9. 6)"10"
  10.  
  11.  
  12. # 移除單個元素
  13.  
  14. redis 127.0.0.1:6379> ZREM page_rank google.com
  15. (integer)1
  16.  
  17. redis 127.0.0.1:6379> ZRANGE page_rank 0-1 WITHSCORES
  18. 1)"bing.com"
  19. 2)"8"
  20. 3)"baidu.com"
  21. 4)"9"
  22.  
  23.  
  24. # 移除多個元素
  25.  
  26. redis 127.0.0.1:6379> ZREM page_rank baidu.com bing.com
  27. (integer)2
  28.  
  29. redis 127.0.0.1:6379> ZRANGE page_rank 0-1 WITHSCORES
  30. (empty list orset)
  31.  
  32.  
  33. # 移除不存在元素
  34.  
  35. redis 127.0.0.1:6379> ZREM page_rank non-exists-element
  36. (integer)0

 

 

Redis Zrangebyscore 命令


Redis Zrangebyscore 返回有序集合中指定分數區間的成員列表。有序集成員按分數值遞增(從小到大)次序排列。

具備相同分數值的成員按字典序來排列(該屬性是有序集提供的,不須要額外的計算)。

默認狀況下,區間的取值使用閉區間 (小於等於或大於等於),你也能夠經過給參數前增長 ( 符號來使用可選的開區間 (小於或大於)。

舉個例子:

  1. ZRANGEBYSCORE zset (15

返回全部符合條件 1

  1. ZRANGEBYSCORE zset (5(10

則返回全部符合條件 5

語法

redis Zrangebyscore 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count]

可用版本

>= 1.0.5

返回值

指定區間內,帶有分數值(可選)的有序集成員的列表。

實例

  1. redis 127.0.0.1:6379> ZADD salary 2500 jack # 測試數據
  2. (integer)0
  3. redis 127.0.0.1:6379> ZADD salary 5000 tom
  4. (integer)0
  5. redis 127.0.0.1:6379> ZADD salary 12000 peter
  6. (integer)0
  7.  
  8. redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf # 顯示整個有序集
  9. 1)"jack"
  10. 2)"tom"
  11. 3)"peter"
  12.  
  13. redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf WITHSCORES # 顯示整個有序集及成員的 score 值
  14. 1)"jack"
  15. 2)"2500"
  16. 3)"tom"
  17. 4)"5000"
  18. 5)"peter"
  19. 6)"12000"
  20.  
  21. redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf 5000 WITHSCORES # 顯示工資 <=5000 的全部成員
  22. 1)"jack"
  23. 2)"2500"
  24. 3)"tom"
  25. 4)"5000"
  26.  
  27. redis 127.0.0.1:6379> ZRANGEBYSCORE salary (5000400000# 顯示工資大於 5000 小於等於 400000 的成員
  28. 1)"peter"

 

 

 

Redis Zremrangebylex 命令


Redis Zremrangebylex 命令用於移除有序集合中給定的字典區間的全部成員。

語法

redis Zremrangebylex命令基本語法以下:

  1. redis 127.0.0.1:6379> ZREMRANGEBYLEX key min max

可用版本

>= 2.8.9

返回值

被成功移除的成員的數量,不包括被忽略的成員。

實例

  1. redis 127.0.0.1:6379> ZADD myzset 0 aaaa 0 b 0 c 0 d 0 e
  2. (integer)5
  3. redis 127.0.0.1:6379> ZADD myzset 0 foo 0 zap 0 zip 0 ALPHA 0 alpha
  4. (integer)5
  5. redis 127.0.0.1:6379> ZRANGE myzset 0-1
  6. 1)"ALPHA"
  7. 2)"aaaa"
  8. 3)"alpha"
  9. 4)"b"
  10. 5)"c"
  11. 6)"d"
  12. 7)"e"
  13. 8)"foo"
  14. 9)"zap"
  15. 10)"zip"
  16. redis 127.0.0.1:6379> ZREMRANGEBYLEX myzset [alpha [omega
  17. (integer)6
  18. redis 127.0.0.1:6379> ZRANGE myzset 0-1
  19. 1)"ALPHA"
  20. 2)"aaaa"
  21. 3)"zap"
  22. 4)"zip"
  23. redis>

 

 

Redis Zremrangebyscore 命令


Redis Zremrangebyscore 命令用於移除有序集中,指定分數(score)區間內的全部成員。

語法

redis Zremrangebyscore 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZREMRANGEBYSCORE key min max
可用版本

>= 1.2.0

返回值

被移除成員的數量。

實例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 顯示有序集內全部成員及其 score 值
  2. 1)"tom"
  3. 2)"2000"
  4. 3)"peter"
  5. 4)"3500"
  6. 5)"jack"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZREMRANGEBYSCORE salary 15003500# 移除全部薪水在 1500 到 3500 內的員工
  10. (integer)2
  11.  
  12. redis> ZRANGE salary 0-1 WITHSCORES # 剩下的有序集成員
  13. 1)"jack"
  14. 2)"5000"

 

 

Redis Zrevrange 命令


Redis Zrevrange 命令返回有序集中,指定區間內的成員。

其中成員的位置按分數值遞減(從大到小)來排列。

具備相同分數值的成員按字典序的逆序(reverse lexicographical order)排列。

除了成員按分數值遞減的次序排列這一點外, ZREVRANGE 命令的其餘方面和 ZRANGE 命令同樣。

語法

redis Zrevrange 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZREVRANGE key start stop [WITHSCORES]

可用版本

>= 1.2.0

返回值

指定區間內,帶有分數值(可選)的有序集成員的列表。

實例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 遞增排列
  2. 1)"peter"
  3. 2)"3500"
  4. 3)"tom"
  5. 4)"4000"
  6. 5)"jack"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZREVRANGE salary 0-1 WITHSCORES # 遞減排列
  10. 1)"jack"
  11. 2)"5000"
  12. 3)"tom"
  13. 4)"4000"
  14. 5)"peter"
  15. 6)"3500"

 

 

Redis Zrevrangebyscore 命令


Redis Zrevrangebyscore 返回有序集中指定分數區間內的全部的成員。有序集成員按分數值遞減(從大到小)的次序排列。

具備相同分數值的成員按字典序的逆序(reverse lexicographical order )排列。

除了成員按分數值遞減的次序排列這一點外, ZREVRANGEBYSCORE 命令的其餘方面和 ZRANGEBYSCORE 命令同樣。

語法

redis Zrevrangebyscore 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZREVRANGEBYSCORE key max min [WITHSCORES][LIMIT offset count]

可用版本

>= 2.2.0

返回值

指定區間內,帶有分數值(可選)的有序集成員的列表。

實例

  1. redis 127.0.0.1:6379> ZADD salary 10086 jack
  2. (integer)1
  3. redis > ZADD salary 5000 tom
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD salary 7500 peter
  6. (integer)1
  7. redis 127.0.0.1:6379> ZADD salary 3500 joe
  8. (integer)1
  9.  
  10. redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary +inf -inf # 逆序排列全部成員
  11. 1)"jack"
  12. 2)"peter"
  13. 3)"tom"
  14. 4)"joe"
  15.  
  16. redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary 100002000# 逆序排列薪水介於 10000 和 2000 之間的成員
  17. 1)"peter"
  18. 2)"tom"
  19. 3)"joe"

 

Redis Zrevrank 命令


Redis Zrevrank 命令返回有序集中成員的排名。其中有序集成員按分數值遞減(從大到小)排序。

排名以 0 爲底,也就是說, 分數值最大的成員排名爲 0 。

使用 ZRANK 命令能夠得到成員按分數值遞增(從小到大)排列的排名。

語法

redis Zrevrank 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZREVRANK key member

可用版本

>= 2.2.0

返回值

若是成員是有序集 key 的成員,返回成員的排名。 若是成員不是有序集 key 的成員,返回 nil 。

實例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 測試數據
  2. 1)"jack"
  3. 2)"2000"
  4. 3)"peter"
  5. 4)"3500"
  6. 5)"tom"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZREVRANK salary peter # peter 的工資排第二
  10. (integer)1
  11.  
  12. redis 127.0.0.1:6379> ZREVRANK salary tom # tom 的工資最高
  13. (integer)0

 



 

Redis Zscore 命令


Redis Zscore 命令返回有序集中,成員的分數值。 若是成員元素不是有序集 key 的成員,或 key 不存在,返回 nil 。

語法

redis Zscore 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZSCORE key member

可用版本

>= 1.2.0

返回值

成員的分數值,以字符串形式表示。

實例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 測試數據
  2. 1)"tom"
  3. 2)"2000"
  4. 3)"peter"
  5. 4)"3500"
  6. 5)"jack"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZSCORE salary peter # 注意返回值是字符串
  10. "3500"

 

 

 

Redis Zunionstore 命令


Redis Zunionstore 命令計算給定的一個或多個有序集的並集,其中給定 key 的數量必須以 numkeys 參數指定,並將該並集(結果集)儲存到 destination 。

默認狀況下,結果集中某個成員的分數值是全部給定集下該成員分數值之和 。

語法

redis Zunionstore 命令基本語法以下:

  1. redis 127.0.0.1:6379> ZUNIONSTORE destination numkeys key [key ...][WEIGHTS weight [weight ...]][AGGREGATE SUM|MIN|MAX]

可用版本

>= 2.0.0

返回值

保存到 destination 的結果集的成員數量。

實例

  1. redis 127.0.0.1:6379> ZRANGE programmer 0-1 WITHSCORES
  2. 1)"peter"
  3. 2)"2000"
  4. 3)"jack"
  5. 4)"3500"
  6. 5)"tom"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZRANGE manager 0-1 WITHSCORES
  10. 1)"herry"
  11. 2)"2000"
  12. 3)"mary"
  13. 4)"3500"
  14. 5)"bob"
  15. 6)"4000"
  16.  
  17. redis 127.0.0.1:6379> ZUNIONSTORE salary 2 programmer manager WEIGHTS 13# 公司決定加薪。。。除了程序員。。。
  18. (integer)6
  19.  
  20. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES
  21. 1)"peter"
  22. 2)"2000"
  23. 3)"jack"
  24. 4)"3500"
  25. 5)"tom"
  26. 6)"5000"
  27. 7)"herry"
  28. 8)"6000"
  29. 9)"mary"
  30. 10)"10500"
  31. 11)"bob"
  32. 12)"12000"

 

Redis Zscan 命令


Redis Zscan 命令用於迭代有序集合中的元素(包括元素成員和元素分值)

語法

redis Zscan 命令基本語法以下:

  1. redis 127.0.0.1:6379> redis 127.0.0.1:6379> ZSCAN key cursor [MATCH pattern][COUNT count]

可用版本

>= 2.8.0

返回值

返回的每一個元素都是一個有序集合元素,一個有序集合元素由一個成員(member)和一個分值(score)組成。

 



Redis HyperLogLog 命令

下表列出了 redis HyperLogLog 的基本命令:

序號 命令及描述
1 PFADD key element [element ...] 
添加指定元素到 HyperLogLog 中。
2 PFCOUNT key [key ...] 
返回給定 HyperLogLog 的基數估算值。
3 PFMERGE destkey sourcekey [sourcekey ...] 
將多個 HyperLogLog 合併爲一個 HyperLogLog

Redis HyperLogLog


Redis 在 2.8.9 版本添加了 HyperLogLog 結構。

Redis HyperLogLog 是用來作基數統計的算法,HyperLogLog 的優勢是,在輸入元素的數量或者體積很是很是大時,計算基數所需的空間老是固定 的、而且是很小的。

在 Redis 裏面,每一個 HyperLogLog 鍵只須要花費 12 KB 內存,就能夠計算接近 2^64 個不一樣元素的基 數。這和計算基數時,元素越多耗費內存就越多的集合造成鮮明對比。

可是,由於 HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素自己,因此 HyperLogLog 不能像集合那樣,返回輸入的各個元素。


什麼是基數?

好比數據集 {1, 3, 5, 7, 5, 7, 8}, 那麼這個數據集的基數集爲 {1, 3, 5 ,7, 8}, 基數(不重複元素)爲5。 基數估計就是在偏差可接受的範圍內,快速計算基數。


實例

如下實例演示了 HyperLogLog 的工做過程:

  1. redis 127.0.0.1:6379> PFADD w3ckey "redis"
  2.  
  3. 1)(integer)1
  4.  
  5. redis 127.0.0.1:6379> PFADD w3ckey "mongodb"
  6.  
  7. 1)(integer)1
  8.  
  9. redis 127.0.0.1:6379> PFADD w3ckey "mysql"
  10.  
  11. 1)(integer)1
  12.  
  13. redis 127.0.0.1:6379> PFCOUNT w3ckey
  14.  
  15. (integer)3

 

Redis Debug Segfault 命令


Redis Debug Segfault 命令執行一個非法的內存訪問從而讓 Redis 崩潰,僅在開發時用於 BUG 調試。

語法

redis Debug Segfault 命令基本語法以下:

  1. redis 127.0.0.1:6379> DEBUG SEGFAULT

可用版本

>= 1.0.0

返回值

實例

  1. redis 127.0.0.1:6379> DEBUG SEGFAULT
  2. Couldnot connect to Redis at 127.0.0.1:6379:Connection refused
  3. not connected>

 

 

Redis Pfcount 命令


Redis Pfcount 命令返回給定 HyperLogLog 的基數估算值。

語法

redis Pfcount 命令基本語法以下:

  1. redis 127.0.0.1:6379> PFCOUNT key [key ...]

可用版本

>= 2.8.9

返回值

整數,返回給定 HyperLogLog 的基數值,若是多個 HyperLogLog 則返回基數估值之和。

實例

  1. redis 127.0.0.1:6379> PFADD hll foo bar zap
  2. (integer)1
  3. redis 127.0.0.1:6379> PFADD hll zap zap zap
  4. (integer)0
  5. redis 127.0.0.1:6379> PFADD hll foo bar
  6. (integer)0
  7. redis 127.0.0.1:6379> PFCOUNT hll
  8. (integer)3
  9. redis 127.0.0.1:6379> PFADD some-other-hll 123
  10. (integer)1
  11. redis 127.0.0.1:6379> PFCOUNT hll some-other-hll
  12. (integer)6
  13. redis>

 

 

Redis Pgmerge 命令


Redis Pgmerge 命令將多個 HyperLogLog 合併爲一個 HyperLogLog ,合併後的 HyperLogLog 的基數估算值是經過對全部 給定 HyperLogLog 進行並集計算得出的。

語法

redis Pgmerge 命令基本語法以下:

  1. redis 127.0.0.1:6379> PFMERGE destkey sourcekey [sourcekey ...]

可用版本

>= 2.8.9

返回值

返回 OK。

實例

  1. redis 127.0.0.1:6379> PFADD hll1 foo bar zap a
  2. (integer)1
  3. redis 127.0.0.1:6379> PFADD hll2 a b c foo
  4. (integer)1
  5. redis 127.0.0.1:6379> PFMERGE hll3 hll1 hll2
  6. OK
  7. redis 127.0.0.1:6379> PFCOUNT hll3
  8. (integer)6
  9. redis>

 

 

Redis 發佈訂閱命令

下表列出了 redis 發佈訂閱經常使用命令:

序號 命令及描述
1 PSUBSCRIBE pattern [pattern ...] 
訂閱一個或多個符合給定模式的頻道。
2 PUBSUB subcommand [argument [argument ...]] 
查看訂閱與發佈系統狀態。
3 PUBLISH channel message 
將信息發送到指定的頻道。
4 PUNSUBSCRIBE [pattern [pattern ...]] 
退訂全部給定模式的頻道。
5 SUBSCRIBE channel [channel ...] 
訂閱給定的一個或多個頻道的信息。
6 UNSUBSCRIBE [channel [channel ...]] 
指退訂給定的頻道。

 

 

Redis 發佈訂閱


Redis 發佈訂閱(pub/sub)是一種消息通訊模式:發送者(pub)發送消息,訂閱者(sub)接收消息。

Redis 客戶端能夠訂閱任意數量的頻道。

下圖展現了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的關係:

pubsub1

當有新消息經過 PUBLISH 命令發送給頻道 channel1 時, 這個消息就會被髮送給訂閱它的三個客戶端:

pubsub2


實例

如下實例演示了發佈訂閱是如何工做的。在咱們實例中咱們建立了訂閱頻道名爲 redisChat:

  1. redis 127.0.0.1:6379> SUBSCRIBE redisChat
  2.  
  3. Reading messages...(press Ctrl-C to quit)
  4. 1)"subscribe"
  5. 2)"redisChat"
  6. 3)(integer)1

如今,咱們先從新開啓個 redis 客戶端,而後在同一個頻道 redisChat 發佈兩次消息,訂閱者就能接收到消息。

  1. redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
  2.  
  3. (integer)1
  4.  
  5. redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by apiref.com"
  6.  
  7. (integer)1
  8.  
  9. # 訂閱者的客戶端會顯示以下消息
  10. 1)"message"
  11. 2)"redisChat"
  12. 3)"Redis is a great caching technique"
  13. 1)"message"
  14. 2)"redisChat"
  15. 3)"Learn redis by apiref.com"

 

Redis Psubscribe 命令


Redis Psubscribe 命令訂閱一個或多個符合給定模式的頻道。

每一個模式以 * 做爲匹配符,好比 it* 匹配全部以 it 開頭的頻道( it.news 、 it.blog 、 it.tweets 等等)。 news.* 匹配全部以 news. 開頭的頻道( news.it 、 news.global.today 等等),諸如此類。

語法

redis Psubscribe 命令基本語法以下:

  1. redis 127.0.0.1:6379> PSUBSCRIBE pattern [pattern ...]

可用版本

>= 2.0.0

返回值

接收到的信息。

實例

  1. redis 127.0.0.1:6379> PSUBSCRIBE mychannel
  2. Reading messages...(press Ctrl-C to quit)
  3. 1)"psubscribe"
  4. 2)"mychannel"
  5. 3)(integer)1

 

 

Redis Pubsub 命令


Redis Pubsub 命令用於查看訂閱與發佈系統狀態,它由數個不一樣格式的子命令組成。

語法

redis Pubsub 命令基本語法以下:

  1. redis 127.0.0.1:6379> PUBSUB <subcommand>[argument [argument ...]]

可用版本

>= 2.8.0

返回值

由活躍頻道組成的列表。

實例

  1. redis 127.0.0.1:6379> PUBSUB CHANNELS
  2. (empty list orset)

 

 

Redis Publish 命令


Redis Publish 命令用於將信息發送到指定的頻道。

語法

redis Publish 命令基本語法以下:

  1. redis 127.0.0.1:6379> PUBLISH channel message

可用版本

>= 2.0.0

返回值

接收到信息的訂閱者數量。

實例

  1. redis 127.0.0.1:6379> PUBLISH mychannel "hello, i m here"
  2. (integer)1

 

 

Redis Punsubscribe 命令


Redis Punsubscribe 命令用於退訂全部給定模式的頻道。

語法

redis Punsubscribe 命令基本語法以下:

  1. redis 127.0.0.1:6379> PUNSUBSCRIBE [pattern [pattern ...]]

可用版本

>= 2.0.0

返回值

這個命令在不一樣的客戶端中有不一樣的表現。

實例

  1. redis 127.0.0.1:6379> PUNSUBSCRIBE mychannel
  2. 1)"punsubscribe"
  3. 2)"a"
  4. 3)(integer)1

 

 

Redis Subscribe 命令


Redis Subscribe 命令用於訂閱給定的一個或多個頻道的信息。。

語法

redis Subscribe 命令基本語法以下:

  1. redis 127.0.0.1:6379> SUBSCRIBE channel [channel ...]

可用版本

>= 2.0.0

返回值

接收到的信息

實例

  1. redis 127.0.0.1:6379> SUBSCRIBE mychannel
  2. Reading messages...(press Ctrl-C to quit)
  3. 1)"subscribe"
  4. 2)"mychannel"
  5. 3)(integer)1
  6. 1)"message"
  7. 2)"mychannel"
  8. 3)"a"

 

 

 

Redis Unsubscribe 命令


Redis Unsubscribe 命令用於退訂給定的一個或多個頻道的信息。

語法

redis Unsubscribe 命令基本語法以下:

  1. redis 127.0.0.1:6379> UNSUBSCRIBE channel [channel ...]

可用版本

>= 2.0.0

返回值

這個命令在不一樣的客戶端中有不一樣的表現。

實例

  1. redis 127.0.0.1:6379> UNSUBSCRIBE mychannel
  2. 1)"unsubscribe"
  3. 2)"a"
  4. 3)(integer)0

 

 

Redis 事務命令

下表列出了 redis 事務的相關命令:

序號 命令及描述
1 DISCARD 
取消事務,放棄執行事務塊內的全部命令。
2 EXEC 
執行全部事務塊內的命令。
3 MULTI 
標記一個事務塊的開始。
4 UNWATCH 
取消 WATCH 命令對全部 key 的監視。
5 WATCH key [key ...] 
監視一個(或多個) key ,若是在事務執行以前這個(或這些) key 被其餘命令所改動,那麼事務將被打斷。

Redis 事務


Redis 事務能夠一次執行多個命令, 而且帶有如下兩個重要的保證:

  • 事務是一個單獨的隔離操做:事務中的全部命令都會序列化、按順序地執行。事務在執行的過程當中,不會被其餘客戶端發送來的命令請求所打斷。
  • 事務是一個原子操做:事務中的命令要麼所有被執行,要麼所有都不執行。

一個事務從開始到執行會經歷如下三個階段:

  • 開始事務。
  • 命令入隊。
  • 執行事務。

實例

如下是一個事務的例子, 它先以 MULTI 開始一個事務, 而後將多個命令入隊到事務中, 最後由 EXEC 命令觸發事務, 一併執行事務中的全部命令:

  1. redis 127.0.0.1:6379> MULTI
  2. OK
  3.  
  4. redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
  5. QUEUED
  6.  
  7. redis 127.0.0.1:6379> GET book-name
  8. QUEUED
  9.  
  10. redis 127.0.0.1:6379> SADD tag "C++""Programming""Mastering Series"
  11. QUEUED
  12.  
  13. redis 127.0.0.1:6379> SMEMBERS tag
  14. QUEUED
  15.  
  16. redis 127.0.0.1:6379> EXEC
  17. 1) OK
  18. 2)"Mastering C++ in 21 days"
  19. 3)(integer)3
  20. 4)1)"Mastering Series"
  21. 2)"C++"
  22. 3)"Programming"

 

Redis Discard 命令


Redis Discard 命令用於取消事務,放棄執行事務塊內的全部命令。

語法

redis Discard 命令基本語法以下:

  1. redis 127.0.0.1:6379> DISCARD

可用版本

>= 2.0.0

返回值

老是返回 OK 。

實例

  1. redis 127.0.0.1:6379> MULTI
  2. OK
  3.  
  4. redis 127.0.0.1:6379> PING
  5. QUEUED
  6.  
  7. redis 127.0.0.1:6379> SET greeting "hello"
  8. QUEUED
  9.  
  10. redis 127.0.0.1:6379> DISCARD
  11. OK

 

 

Redis Exec 命令


Redis Exec 命令用於執行全部事務塊內的命令。

語法

redis Exec 命令基本語法以下:

  1. redis 127.0.0.1:6379> Exec

可用版本

>= 1.2.0

返回值

事務塊內全部命令的返回值,按命令執行的前後順序排列。 當操做被打斷時,返回空值 nil 。

實例

  1. # 事務被成功執行
  2.  
  3. redis 127.0.0.1:6379> MULTI
  4. OK
  5.  
  6. redis 127.0.0.1:6379> INCR user_id
  7. QUEUED
  8.  
  9. redis 127.0.0.1:6379> INCR user_id
  10. QUEUED
  11.  
  12. redis 127.0.0.1:6379> INCR user_id
  13. QUEUED
  14.  
  15. redis 127.0.0.1:6379> PING
  16. QUEUED
  17.  
  18. redis 127.0.0.1:6379> EXEC
  19. 1) (integer) 1
  20. 2) (integer) 2
  21. 3) (integer) 3
  22. 4) PONG
  23.  
  24.  
  25. # 監視 key ,且事務成功執行
  26.  
  27. redis 127.0.0.1:6379> WATCH lock lock_times
  28. OK
  29.  
  30. redis 127.0.0.1:6379> MULTI
  31. OK
  32.  
  33. redis 127.0.0.1:6379> SET lock "huangz"
  34. QUEUED
  35.  
  36. redis 127.0.0.1:6379> INCR lock_times
  37. QUEUED
  38.  
  39. redis 127.0.0.1:6379> EXEC
  40. 1) OK
  41. 2) (integer) 1
  42.  
  43.  
  44. # 監視 key ,且事務被打斷
  45.  
  46. redis 127.0.0.1:6379> WATCH lock lock_times
  47. OK
  48.  
  49. redis 127.0.0.1:6379> MULTI
  50. OK
  51.  
  52. redis 127.0.0.1:6379> SET lock "joe" # 就在這時,另外一個客戶端修改了 lock_times 的值
  53. QUEUED
  54.  
  55. redis 127.0.0.1:6379> INCR lock_times
  56. QUEUED
  57.  
  58. redis 127.0.0.1:6379> EXEC # 由於 lock_times 被修改, joe 的事務執行失敗
  59. (nil)
  60.  

 

 

Redis Multi 命令


Redis Multi 命令用於標記一個事務塊的開始。

事務塊內的多條命令會按照前後順序被放進一個隊列當中,最後由 EXEC 命令原子性(atomic)地執行。

語法

redis Multi 命令基本語法以下:

  1. redis 127.0.0.1:6379> Multi

可用版本

>= 1.2.0

返回值

老是返回 OK 。

實例

  1. redis 127.0.0.1:6379> MULTI # 標記事務開始
  2. OK
  3.  
  4. redis 127.0.0.1:6379> INCR user_id # 多條命令按順序入隊
  5. QUEUED
  6.  
  7. redis 127.0.0.1:6379> INCR user_id
  8. QUEUED
  9.  
  10. redis 127.0.0.1:6379> INCR user_id
  11. QUEUED
  12.  
  13. redis 127.0.0.1:6379> PING
  14. QUEUED
  15.  
  16. redis 127.0.0.1:6379> EXEC # 執行
  17. 1) (integer) 1
  18. 2) (integer) 2
  19. 3) (integer) 3
  20. 4) PONG
  21.  

 

 

 

 

Redis Unwatch 命令


Redis Unwatch 命令用於取消 WATCH 命令對全部 key 的監視。

語法

redis Unwatch 命令基本語法以下:

  1. redis 127.0.0.1:6379> UNWATCH

可用版本

>= 2.2.0

返回值

老是返回 OK 。

實例

  1. redis 127.0.0.1:6379> WATCH lock lock_times
  2. OK
  3.  
  4. redis 127.0.0.1:6379> UNWATCH
  5. OK
  6.  

 

 

 

Redis Watch 命令


Redis Watch 命令用於監視一個(或多個) key ,若是在事務執行以前這個(或這些) key 被其餘命令所改動,那麼事務將被打斷

語法

redis Watch 命令基本語法以下:

  1. redis 127.0.0.1:6379> Watch

可用版本

>= 2.2.0

返回值

老是返回 OK 。

實例

  1. redis> WATCH lock lock_times
  2. OK
  3.  

 

 

 

 

 

 


Redis 腳本命令

下表列出了 redis 腳本經常使用命令:

序號 命令及描述
1 EVAL script numkeys key [key ...] arg [arg ...] 
執行 Lua 腳本。
2 EVALSHA sha1 numkeys key [key ...] arg [arg ...] 
執行 Lua 腳本。
3 SCRIPT EXISTS script [script ...] 
查看指定的腳本是否已經被保存在緩存當中。
4 SCRIPT FLUSH 
從腳本緩存中移除全部腳本。
5 SCRIPT KILL 
殺死當前正在運行的 Lua 腳本。
6 SCRIPT LOAD script 
將腳本 script 添加到腳本緩存中,但並不當即執行這個腳本。

 

Redis 腳本


Redis 腳本使用 Lua 解釋器來執行腳本。 Reids 2.6 版本經過內嵌支持 Lua 環境。執行腳本的經常使用命令爲 EVAL。

語法

Eval 命令的基本語法以下:

  1. redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

實例

如下實例演示了 redis 腳本工做過程:

  1. redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
  2.  
  3. 1) "key1"
  4. 2) "key2"
  5. 3) "first"
  6. 4) "second"

 

 

 

 

Redis Eval 命令


Redis Eval 命令使用 Lua 解釋器執行腳本。

語法

redis Eval 命令基本語法以下:

  1. redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

參數說明:

  • script: 參數是一段 Lua 5.1 腳本程序。腳本沒必要(也不該該)定義爲一個 Lua 函數。
  • numkeys: 用於指定鍵名參數的個數。
  • key [key ...]: 從 EVAL 的第三個參數開始算起,表示在腳本中所用到的那些 Redis 鍵(key),這些鍵名參數能夠在 Lua 中經過全局變量 KEYS 數組,用 1 爲基址的形式訪問( KEYS[1] , KEYS[2] ,以此類推)。
  • arg [arg ...]: 附加參數,在 Lua 中經過全局變量 ARGV 數組訪問,訪問的形式和 KEYS 變量相似( ARGV[1] 、 ARGV[2] ,諸如此類)。

可用版本

>= 2.6.0

實例

  1. redis 127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
  2. 1) "key1"
  3. 2) "key2"
  4. 3) "first"
  5. 4) "second"
  6.  

 

 

Redis Evalsha 命令


Redis Evalsha 命令根據給定的 sha1 校驗碼,執行緩存在服務器中的腳本。

語法

redis Evalsha 命令基本語法以下:

  1. redis 127.0.0.1:6379> EVALSHA sha1 numkeys key [key ...] arg [arg ...]

參數說明:

  • script: 參數是一段 Lua 5.1 腳本程序。腳本沒必要(也不該該)定義爲一個 Lua 函數。
  • numkeys: 用於指定鍵名參數的個數。
  • key [key ...]: 從 EVAL 的第三個參數開始算起,表示在腳本中所用到的那些 Redis 鍵(key),這些鍵名參數能夠在 Lua 中經過全局變量 KEYS 數組,用 1 爲基址的形式訪問( KEYS[1] , KEYS[2] ,以此類推)。
  • arg [arg ...]: 附加參數,在 Lua 中經過全局變量 ARGV 數組訪問,訪問的形式和 KEYS 變量相似( ARGV[1] 、 ARGV[2] ,諸如此類)。

可用版本

>= 2.6.0

實例

  1. redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'"
  2. "232fd51614574cf0867b83d384a5e898cfd24e5a"
  3.  
  4. redis 127.0.0.1:6379> EVALSHA "232fd51614574cf0867b83d384a5e898cfd24e5a" 0
  5. "hello moto"
  6.  

 

 

Redis Script Exists 命令


Redis Script Exists 命令用於校驗指定的腳本是否已經被保存在緩存當中。

語法

redis Script Exists 命令基本語法以下:

  1. redis 127.0.0.1:6379> EVALSHA sha1 numkeys key [key ...] arg [arg ...]

可用版本

>= 2.6.0

返回值

一個列表,包含 0 和 1 ,前者表示腳本不存在於緩存,後者表示腳本已經在緩存裏面了。

列表中的元素和給定的 SHA1 校驗和保持對應關係,好比列表的第三個元素的值就表示第三個 SHA1 校驗和所指定的腳本在緩存中的狀態。

實例

  1. redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'" # 載入一個腳本
  2. "232fd51614574cf0867b83d384a5e898cfd24e5a"
  3.  
  4. redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
  5. 1) (integer) 1
  6.  
  7. redis 127.0.0.1:6379> SCRIPT FLUSH # 清空緩存
  8. OK
  9.  
  10. redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
  11. 1) (integer) 0
  12.  

 

 

Redis Script Flush 命令


Redis Script Flush 命令用於清除全部 Lua 腳本緩存。

語法

redis Script Flush 命令基本語法以下:

  1. redis 127.0.0.1:6379> SCRIPT FLUSH

可用版本

>= 2.6.0

返回值

老是返回 OK

實例

  1. redis 127.0.0.1:6379> SCRIPT FLUSH
  2. OK
  3.  

 

 

 

Redis Script kill 命令


Redis Script kill 命令用於殺死當前正在運行的 Lua 腳本,當且僅當這個腳本沒有執行過任何寫操做時,這個命令才生效。

這個命令主要用於終止運行時間過長的腳本,好比一個由於 BUG 而發生無限循環的腳本。

SCRIPT KILL 執行以後,當前正在運行的腳本會被殺死,執行這個腳本的客戶端會從 EVAL 命令的阻塞當中退出,並收到一個錯誤做爲返回值。

語法

redis Script kill 命令基本語法以下:

  1. redis 127.0.0.1:6379> SCRIPT KILL

可用版本

>= 2.6.0

返回值

老是返回 OK

實例

  1. redis 127.0.0.1:6379> SCRIPT KILL
  2. OK
  3.  

 

 

Redis Script Load 命令


Redis Script Load 命令用於將腳本 script 添加到腳本緩存中,但並不當即執行這個腳本。

EVAL 命令也會將腳本添加到腳本緩存中,可是它會當即對輸入的腳本進行求值。

若是給定的腳本已經在緩存裏面了,那麼不執行任何操做。

在腳本被加入到緩存以後,經過 EVALSHA 命令,可使用腳本的 SHA1 校驗和來調用這個腳本。

腳本能夠在緩存中保留無限長的時間,直到執行 SCRIPT FLUSH 爲止。

關於使用 Redis 對 Lua 腳本進行求值的更多信息,請參見 EVAL 命令。

語法

redis Script Load 命令基本語法以下:

  1. redis 127.0.0.1:6379> SCRIPT LOAD script

可用版本

>= 2.6.0

返回值

給定腳本的 SHA1 校驗和

實例

  1. redis 127.0.0.1:6379> SCRIPT LOAD "return 1"
  2. "e0e1f9fabfc9d4800c877a703b823ac0578ff8db"
  3.  

 

 

 


Redis 鏈接命令

下表列出了 redis 鏈接的基本命令:

 

序號 命令及描述
1 AUTH password 
驗證密碼是否正確
2 ECHO message 
打印字符串
3 PING 
查看服務是否運行
4 QUIT 
關閉當前鏈接
5 SELECT index 
切換到指定的數據庫

 

 

Redis 鏈接


Redis 鏈接命令主要是用於鏈接 redis 服務。

實例

如下實例演示了客戶端如何經過密碼驗證鏈接到 redis 服務,並檢測服務是否在運行:

  1. redis 127.0.0.1:6379> AUTH "password"
  2. OK
  3. redis 127.0.0.1:6379> PING
  4. PONG

 

 

 

Redis Auth 命令


Redis Auth 命令用於檢測給定的密碼和配置文件中的密碼是否相符。

語法

redis Auth 命令基本語法以下:

  1. redis 127.0.0.1:6379> AUTH PASSWORD

可用版本

>= 1.0.0

返回值

密碼匹配時返回 OK ,不然返回一個錯誤。

實例

  1. redis 127.0.0.1:6379> AUTH PASSWORD
  2. (error) ERR Client sent AUTH, but no password is set
  3. redis 127.0.0.1:6379> CONFIG SET requirepass "mypass"
  4. OK
  5. redis 127.0.0.1:6379> AUTH mypass
  6. Ok
  7.  

 

Redis Echo 命令


Redis Echo 命令用於打印給定的字符串。

語法

redis Echo 命令基本語法以下:

  1. redis 127.0.0.1:6379> ECHO message

可用版本

>= 1.0.0

返回值

返回字符串自己。

實例

  1. redis 127.0.0.1:6379> ECHO "Hello World"
  2. "Hello World"
  3.  

 

 

Redis Ping 命令


Redis Ping 命令使用客戶端向 Redis 服務器發送一個 PING ,若是服務器運做正常的話,會返回一個 PONG 。

一般用於測試與服務器的鏈接是否仍然生效,或者用於測量延遲值。

語法

redis Ping 命令基本語法以下:

  1. redis 127.0.0.1:6379> PING

可用版本

>= 1.0.0

返回值

若是鏈接正常就返回一個 PONG ,不然返回一個鏈接錯誤。

實例

  1. # 客戶端和服務器鏈接正常
  2.  
  3. redis 127.0.0.1:6379> PING
  4. PONG
  5.  
  6. # 客戶端和服務器鏈接不正常(網絡不正常或服務器未能正常運行)
  7.  
  8. redis 127.0.0.1:6379> PING
  9. Could not connect to Redis at 127.0.0.1:6379: Connection refused
  10.  

 

 

Redis Quit 命令


Redis Quit 命令用於關閉與當前客戶端與redis服務的鏈接。

一旦全部等待中的回覆(若是有的話)順利寫入到客戶端,鏈接就會被關閉。

語法

redis Quit 命令基本語法以下:

  1. redis 127.0.0.1:6379> QUIT

可用版本

>= 1.0.0

返回值

老是返回 OK 。

實例

  1. redis 127.0.0.1:6379> QUIT
  2. OK
  3.  

 

 

Redis Select 命令


Redis Select 命令用於切換到指定的數據庫,數據庫索引號 index 用數字值指定,以 0 做爲起始索引值。

語法

redis Select 命令基本語法以下:

  1. redis 127.0.0.1:6379> SELECT index

可用版本

>= 1.0.0

返回值

老是返回 OK 。

實例

  1. redis 127.0.0.1:6379> SET db_number 0 # 默認使用 0 號數據庫
  2. OK
  3.  
  4. redis 127.0.0.1:6379> SELECT 1 # 使用 1 號數據庫
  5. OK
  6.  
  7. redis 127.0.0.1:6379[1]> GET db_number # 已經切換到 1 號數據庫,注意 Redis 如今的命令提示符多了個 [1]
  8. (nil)
  9.  
  10. redis 127.0.0.1:6379[1]> SET db_number 1
  11. OK
  12.  
  13. redis 127.0.0.1:6379[1]> GET db_number
  14. "1"
  15.  
  16. redis 127.0.0.1:6379[1]> SELECT 3 # 再切換到 3 號數據庫
  17. OK
  18.  
  19. redis 127.0.0.1:6379[3]> # 提示符從 [1] 改變成了 [3]
  20.  

 

 

Redis 服務器命令

下表列出了 redis 服務器的相關命令:

序號 命令及描述
1 BGREWRITEAOF 
異步執行一個 AOF(AppendOnly File) 文件重寫操做
2 BGSAVE 
在後臺異步保存當前數據庫的數據到磁盤
3 CLIENT KILL [ip:port] [ID client-id] 
關閉客戶端鏈接
4 CLIENT LIST 
獲取鏈接到服務器的客戶端鏈接列表
5 CLIENT GETNAME 
獲取鏈接的名稱
6 CLIENT PAUSE timeout 
在指定時間內終止運行來自客戶端的命令
7 CLIENT SETNAME connection-name 
設置當前鏈接的名稱
8 CLUSTER SLOTS 
獲取集羣節點的映射數組
9 COMMAND 
獲取 Redis 命令詳情數組
10 COMMAND COUNT 
獲取 Redis 命令總數
11 COMMAND GETKEYS 
獲取給定命令的全部鍵
12 TIME 
返回當前服務器時間
13 COMMAND INFO command-name [command-name ...] 
獲取指定 Redis 命令描述的數組
14 CONFIG GET parameter 
獲取指定配置參數的值
15 CONFIG REWRITE 
對啓動 Redis 服務器時所指定的 redis.conf 配置文件進行改寫
16 CONFIG SET parameter value 
修改 redis 配置參數,無需重啓
17 CONFIG RESETSTAT 
重置 INFO 命令中的某些統計數據
18 DBSIZE 
返回當前數據庫的 key 的數量
19 DEBUG OBJECT key 
獲取 key 的調試信息
20 DEBUG SEGFAULT 
讓 Redis 服務崩潰
21 FLUSHALL 
刪除全部數據庫的全部key
22 FLUSHDB 
刪除當前數據庫的全部key
23 INFO [section] 
獲取 Redis 服務器的各類信息和統計數值
24 LASTSAVE 
返回最近一次 Redis 成功將數據保存到磁盤上的時間,以 UNIX 時間戳格式表示
25 MONITOR 
實時打印出 Redis 服務器接收到的命令,調試用
26 ROLE 
返回主從實例所屬的角色
27 SAVE 
異步保存數據到硬盤
28 SHUTDOWN [NOSAVE] [SAVE] 
異步保存數據到硬盤,並關閉服務器
29 SLAVEOF host port 
將當前服務器轉變爲指定服務器的從屬服務器(slave server)
30 SLOWLOG subcommand [argument] 
管理 redis 的慢日誌
31 SYNC 
用於複製功能(replication)的內部命令

Redis 服務器

Redis 服務器命令主要是用於管理 redis 服務。

實例

如下實例演示瞭如何獲取 redis 服務器的統計信息:

  1. redis 127.0.0.1:6379> INFO
  2.  
  3. # Server
  4. redis_version:2.8.13
  5. redis_git_sha1:00000000
  6. redis_git_dirty:0
  7. redis_build_id:c2238b38b1edb0e2
  8. redis_mode:standalone
  9. os:Linux 3.5.0-48-generic x86_64
  10. arch_bits:64
  11. multiplexing_api:epoll
  12. gcc_version:4.7.2
  13. process_id:3856
  14. run_id:0e61abd297771de3fe812a3c21027732ac9f41fe
  15. tcp_port:6379
  16. uptime_in_seconds:11554
  17. uptime_in_days:0
  18. hz:10
  19. lru_clock:16651447
  20. config_file:
  21.  
  22. # Clients
  23. connected_clients:1
  24. client-longest_output_list:0
  25. client-biggest_input_buf:0
  26. blocked_clients:0
  27.  
  28. # Memory
  29. used_memory:589016
  30. used_memory_human:575.21K
  31. used_memory_rss:2461696
  32. used_memory_peak:667312
  33. used_memory_peak_human:651.67K
  34. used_memory_lua:33792
  35. mem_fragmentation_ratio:4.18
  36. mem_allocator:jemalloc-3.6.0
  37.  
  38. # Persistence
  39. loading:0
  40. rdb_changes_since_last_save:3
  41. rdb_bgsave_in_progress:0
  42. rdb_last_save_time:1409158561
  43. rdb_last_bgsave_status:ok
  44. rdb_last_bgsave_time_sec:0
  45. rdb_current_bgsave_time_sec:-1
  46. aof_enabled:0
  47. aof_rewrite_in_progress:0
  48. aof_rewrite_scheduled:0
  49. aof_last_rewrite_time_sec:-1
  50. aof_current_rewrite_time_sec:-1
  51. aof_last_bgrewrite_status:ok
  52. aof_last_write_status:ok
  53.  
  54. # Stats
  55. total_connections_received:24
  56. total_commands_processed:294
  57. instantaneous_ops_per_sec:0
  58. rejected_connections:0
  59. sync_full:0
  60. sync_partial_ok:0
  61. sync_partial_err:0
  62. expired_keys:0
  63. evicted_keys:0
  64. keyspace_hits:41
  65. keyspace_misses:82
  66. pubsub_channels:0
  67. pubsub_patterns:0
  68. latest_fork_usec:264
  69.  
  70. # Replication
  71. role:master
  72. connected_slaves:0
  73. master_repl_offset:0
  74. repl_backlog_active:0
  75. repl_backlog_size:1048576
  76. repl_backlog_first_byte_offset:0
  77. repl_backlog_histlen:0
  78.  
  79. # CPU
  80. used_cpu_sys:10.49
  81. used_cpu_user:4.96
  82. used_cpu_sys_children:0.00
  83. used_cpu_user_children:0.01
  84.  
  85. # Keyspace
  86. db0:keys=94,expires=1,avg_ttl=41638810
  87. db1:keys=1,expires=0,avg_ttl=0
  88. db3:keys=1,expires=0,avg_ttl=0

 

 

 

 

 

 

 

 


爲人:謙遜、激情、博學、審問、慎思、明辨、 篤行
學問:紙上得來終覺淺,絕知此事要躬行
爲事:工欲善其事,必先利其器。
態度:道阻且長,行則將至;行而不輟,將來可期
轉載請標註出處!
 
 
 
 

一、要安裝Redis,首先要獲取安裝包。Windows的Redis安裝包須要到如下GitHub連接找到。連接:https://github.com/MSOpenTech/redis。打開網站後,找到Release,點擊前往下載頁面。

 

二、在下載網頁中,找到最後發行的版本(此處是3.2.100)。找到Redis-x64-3.2.100.msi和Redis-x64-3.2.100.zip,點擊下載。這裏說明一下,第一個是msi微軟格式的安裝包,第二個是壓縮包。

三、雙擊剛下載好的msi格式的安裝包(Redis-x64-3.2.100.msi)開始安裝。

四、選擇「贊成協議」,點擊下一步繼續。

五、選擇「添加Redis目錄到環境變量PATH中」,這樣方便系統自動識別Redis執行文件在哪裏。

六、端口號可保持默認的6379,並選擇防火牆例外,從而保證外部能夠正常訪問Redis服務。

七、設定最大值爲100M。做爲實驗和學習,100M足夠了。

八、點擊安裝後,正式的安裝過程開始。稍等一會便可完成。

九、安裝完畢後,須要先作一些設定工做,以便服務啓動後能正常運行。使用文本編輯器,這裏使用Notepad++,打開Redis服務配置文件。注意:不要找錯了,一般爲redis.windows-service.conf,而不是redis.windows.conf。後者是以非系統服務方式啓動程序使用的配置文件。

十、找到含有requirepass字樣的地方,追加一行,輸入requirepass 12345。這是訪問Redis時所需的密碼,通常測試狀況下能夠不用設定密碼。不過,即便是做爲本地訪問,也建議設定一個密碼。此處以簡單的12345來演示。

十一、點擊「開始」>右擊「計算機」>選擇「管理」。在左側欄中依次找到並點擊「計算機管理(本地)」>服務和應用程序>服務。再在右側找到Redis名稱的服務,查看啓動狀況。如未啓動,則手動啓動之。正常狀況下,服務應該正常啓動並運行了。

十二、最後來測試一下Redis是否正常提供服務。進入Redis的目錄,cd C:\Program Files\Redis。輸入redis-cli並回車。(redis-cli是客戶端程序)如圖正常提示進入,並顯示正確端口號,則表示服務已經啓動。

 
1三、使用服務前須要先經過密碼驗證。輸入「auth 12345」並回車(12345是以前設定的密碼)。返回提示OK表示驗證經過。
1四、實際測試一下讀寫。輸入set mykey1 "I love you all!」並回車,用來保存一個鍵值。再輸入get mykey1,獲取剛纔保存的鍵值。
1五、注意事項
  • 1.Windows使用的這個Redis是64位版本的,32位操做系統的同窗就不要折騰了。
  • 2.做爲服務運行的Redis配置文件,一般爲redis.windows-service.conf,而不是redis.windows.conf。當心不要選錯了。
相關文章
相關標籤/搜索