REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。 Redis是一個開源的使用ANSI C語言編寫、遵照BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。 它一般被稱爲數據結構服務器,由於值(value)能夠是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。html
下載地址:https://github.com/dmajkic/redis/downloads。node
下載到的Redis支持32bit和64bit。根據本身實際狀況選擇,將64bit的內容cp到自定義盤符安裝目錄取名redis。 如 C:\reidspython
打開一個cmd窗口 使用cd命令切換目錄到 C:\redis 運行 redis-server.exe redis.conf 。mysql
若是想方便的話,能夠把redis的路徑加到系統的環境變量裏,這樣就免得再輸路徑了,後面的那個redis.conf能夠省略,若是省略,會啓用默認的。輸入以後,會顯示以下界面:git
這時候另啓一個cmd窗口,原來的不要關閉,否則就沒法訪問服務端了。程序員
切換到redis目錄下運行 redis-cli.exe -h 127.0.0.1 -p 6379 。github
設置鍵值對 set myKey abcweb
取出鍵值對 get myKeyredis
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。當心不要選錯了。
下載地址:http://redis.io/download,下載最新文檔版本。
本教程使用的最新文檔版本爲 2.8.17,下載並安裝:
make完後 redis-2.8.17目錄下會出現編譯後的redis服務程序redis-server,還有用於測試的客戶端程序redis-cli,兩個程序位於安裝目錄 src 目錄下:
下面啓動redis服務.
注意這種方式啓動redis 使用的是默認配置。也能夠經過啓動參數告訴redis使用指定配置文件使用下面命令啓動。
redis.conf是一個默認的配置文件。咱們能夠根據須要使用本身的配置文件。
啓動redis服務進程後,就可使用測試客戶端程序redis-cli和redis服務交互了。 好比:
在 Ubuntu 系統安裝 Redi 可使用如下命令:
以上命令將打開如下終端:
127.0.0.1 是本機 IP ,6379 是 redis 服務端口。如今咱們輸入 PING 命令。
以上說明咱們已經成功安裝了redis。
Redis 的配置文件位於 Redis 安裝目錄下,文件名爲 redis.conf。
你能夠經過 CONFIG 命令查看或設置配置項。
Redis CONFIG 命令格式以下:
- 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>
使用 * 號獲取全部配置項:
實例
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>
你能夠經過修改 redis.conf 文件或使用 CONFIG set 命令來修改配置。
語法 CONFIG SET 命令基本語法:
- redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
實例
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
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"
Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
string是redis最基本的類型,你能夠理解成與Memcached如出一轍的類型,一個key對應一個value。string類型是二進制安全的。意思是redis的string能夠包含任何數據。好比jpg圖片或者序列化的對象 。string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。
實例
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。
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>
以上實例中 hash 數據類型存儲了包含用戶腳本信息的用戶對象。 實例中咱們使用了 Redis HMSET, HEGTALL 命令,user:1 爲鍵值。每一個 hash 能夠存儲 232 - 1 鍵值對(40多億)。
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>
列表最多可存儲 232 - 1 元素 (4294967295, 每一個列表可存儲40多億)。
Redis的Set是string類型的無序集合。集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。
sadd 命令
添加一個string元素到,key對應的set集合中,成功返回1,若是元素以及在集合中返回0,key對應的set不存在返回錯誤。
- 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>
注意:以上實例中 rabitmq 添加了兩次,但根據集合內元素的惟一性,第二次插入的元素將被忽略。集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。
Redis zset 和 set 同樣也是string類型元素的集合,且不容許重複的成員。
不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。
zset的成員是惟一的,但分數(score)卻能夠重複。
zadd 命令
添加元素到集合,元素在集合中存在則更新對應score
- zadd key score member
實例
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-cli
實例
如下實例講解了如何啓動 redis 客戶端:
啓動 redis 客戶端,打開終端並輸入命令 redis-cli。該命令會鏈接本地的 redis 服務。
- $redis-cli
- redis 127.0.0.1:6379>
- redis 127.0.0.1:6379> PING
- PONG
在以上實例中咱們鏈接到本地的 redis 服務並執行 PING 命令,該命令用於檢測 redis 服務是否啓動。
在遠程服務上執行命令
若是須要在遠程 redis 服務上執行命令,一樣咱們使用的也是 redis-cli 命令。
語法
- $ 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>
Redis 鍵命令用於管理 redis 的鍵。
語法
Redis 鍵命令的基本語法以下:
- 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>
在以上實例中 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 命令用於刪除已存在的鍵。不存在的 key 會被忽略。
語法
redis DEL 命令基本語法以下:
- 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 命令用於序列化給定 key ,並返回被序列化的值。
redis DUMP 命令基本語法以下:
>= 2.6.0
若是 key 不存在,那麼返回 nil 。 不然,返回序列化以後的值。
首先,咱們在 redis 中建立一個 key 並設置值。
如今使用 DUMP 序列化鍵值。
Redis EXISTS 命令用於檢查給定 key 是否存在。
redis EXISTS 命令基本語法以下:
>= 1.0.0
若 key 存在返回 1 ,不然返回 0 。
如今咱們建立一個名爲 apiref.comcc-new-key 的鍵並賦值,再使用 EXISTS 命令。
Redis Expire 命令用於設置 key 的過時時間。key 過時後將再也不可用。
redis Expire 命令基本語法以下:
>= 1.0.0
設置成功返回 1 。 當 key 不存在或者不能爲 key 設置過時時間時(好比在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過時時間)返回 0 。
首先建立一個 key 並賦值:
爲 key 設置過時時間:
以上實例中咱們爲鍵 w3ckey 設置了過時時間爲 1 分鐘,1分鐘後該鍵會自動刪除。
Redis Expireat 命令用於以 UNIX 時間戳(unix timestamp)格式設置 key 的過時時間。key 過時後將再也不可用。
redis Expireat 命令基本語法以下:
>= 1.0.0
設置成功返回 1 。 當 key 不存在或者不能爲 key 設置過時時間時(好比在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過時時間)返回 0 。
首先建立一個 key 並賦值:
爲 key 設置過時時間:
Redis PEXPIREAT 命令用於設置 key 的過時時間,已毫秒技。key 過時後將再也不可用。
redis PEXPIREAT 命令基本語法以下:
>= 1.0.0
設置成功返回 1 。 當 key 不存在或者不能爲 key 設置過時時間時(好比在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過時時間)返回 0 。
首先建立一個 key 並賦值:
爲 key 設置過時時間:
Redis Keys 命令用於查找全部符合給定模式 pattern 的 key 。。
redis KEYS 命令基本語法以下:
>= 1.0.0
符合給定模式的 key 列表 (Array)。
首先建立一些 key,並賦上對應值:
查找以 w3c 爲開頭的 key:
獲取 redis 中全部的 key 可用使用 *。
Redis MOVE 命令用於將當前數據庫的 key 移動到給定的數據庫 db 當中。
redis Move 命令基本語法以下:
>= 1.0.0
移動成功返回 1 ,失敗則返回 0 。
Redis PERSIST 命令用於移除給定 key 的過時時間,使得 key 永不過時。
redis PERSIST 命令基本語法以下:
>= 2.2.0
當過時時間移除成功時,返回 1 。 若是 key 不存在或 key 沒有設置過時時間,返回 0 。
Redis Pttl 命令以毫秒爲單位返回 key 的剩餘過時時間。
redis Pttl 命令基本語法以下:
>= 2.6.0
當 key 不存在時,返回 -2 。 當 key 存在但沒有設置剩餘生存時間時,返回 -1 。 不然,以毫秒爲單位,返回 key 的剩餘生存時間。
注意:在 Redis 2.8 之前,當 key 不存在,或者 key 沒有設置剩餘生存時間時,命令都返回 -1 。
Redis TTL 命令以秒爲單位返回 key 的剩餘過時時間。
redis TTL 命令基本語法以下:
>= 1.0.0
當 key 不存在時,返回 -2 。 當 key 存在但沒有設置剩餘生存時間時,返回 -1 。 不然,以毫秒爲單位,返回 key 的剩餘生存時間。
注意:在 Redis 2.8 之前,當 key 不存在,或者 key 沒有設置剩餘生存時間時,命令都返回 -1 。
Redis RANDOMKEY 命令從當前數據庫中隨機返回一個 key 。
redis RANDOMKEY 命令基本語法以下:
>= 1.0.0
當數據庫不爲空時,返回一個 key 。 當數據庫爲空時,返回 nil 。
Redis Rename 命令用於修改 key 的名稱 。
redis Rename 命令基本語法以下:
>= 1.0.0
更名成功時提示 OK ,失敗時候返回一個錯誤。
當 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在時,返回一個錯誤。 當 NEW_KEY_NAME 已經存在時, RENAME 命令將覆蓋舊值。
Redis Renamenx 命令用於在新的 key 不存在時修改 key 的名稱 。
redis Renamenx 命令基本語法以下:
>= 1.0.0
修改爲功時,返回 1 。 若是 NEW_KEY_NAME 已經存在,返回 0 。
Redis Type 命令用於返回 key 所儲存的值的類型。
語法
redis Renamenx 命令基本語法以下:
可用版本
>= 1.0.0
返回值
返回 key 的數據類型,數據類型有:
實例
Redis 字符串數據類型的相關命令用於管理 redis 字符串值,基本語法以下:
語法
實例
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 命令用於設置給定 key 的值。若是 key 已經存儲其餘值, SET 就覆寫舊值,且無視類型。
語法
redis SET 命令基本語法以下:
可用版本
>= 1.0.0
返回值
在 Redis 2.6.12 之前版本, SET 命令老是返回 OK 。
從 Redis 2.6.12 版本開始, SET 在設置操做成功完成時,才返回 OK 。
實例
首先,咱們在 redis 中建立一個 key 並設置值。
Redis Get 命令用於獲取指定 key 的值。若是 key 不存在,返回 nil 。若是key 儲存的值不是字符串類型,返回一個錯誤。
語法
redis Get 命令基本語法以下:
可用版本
>= 1.0.0
返回值
返回 key 的值,若是 key 不存在時,返回 nil。 若是 key 不是字符串類型,那麼返回一個錯誤。
實例
Redis Getrange 命令用於獲取存儲在指定 key 中字符串的子字符串。字符串的截取範圍由 start 和 end 兩個偏移量決定(包括 start 和 end 在內)。
語法
redis Getrange 命令基本語法以下:
可用版本
>= 2.4.0
返回值
截取獲得的子字符串。
實例
首先,設置 mykey 的值並截取字符串。
Redis Getset 命令用於設置指定 key 的值,並返回 key 舊的值。
語法
redis Getset 命令基本語法以下:
可用版本
>= 1.0.0
返回值
返回給定 key 的舊值。 當 key 沒有舊值時,即 key 不存在時,返回 nil 。
當 key 存在但不是字符串類型時,返回一個錯誤。
實例
首先,設置 mykey 的值並截取字符串。
Redis Getbit 命令用於對 key 所儲存的字符串值,獲取指定偏移量上的位(bit)。
語法
redis Getbit 命令基本語法以下:
可用版本
>= 2.2.0
返回值
字符串值指定偏移量上的位(bit)。
當偏移量 OFFSET 比字符串值的長度大,或者 key 不存在時,返回 0 。
實例
Redis Mget 命令返回全部(一個或多個)給定 key 的值。 若是給定的 key 裏面,有某個 key 不存在,那麼這個 key 返回特殊值 nil 。
語法
redis Mget 命令基本語法以下:
可用版本
>= 1.0.0
返回值
一個包含全部給定 key 的值的列表。
實例
Redis Setbit 命令用於對 key 所儲存的字符串值,設置或清除指定偏移量上的位(bit)。
語法
redis Setbit 命令基本語法以下:
可用版本
>= 2.2.0
返回值
指定偏移量原來儲存的位。
實例
Redis Setex 命令爲指定的 key 設置值及其過時時間。若是 key 已經存在, SETEX 命令將會替換舊的值。
語法
redis Setex 命令基本語法以下:
可用版本
>= 2.0.0
返回值
設置成功時返回 OK 。
實例
Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在時,爲 key 設置指定的值。
語法
redis Setnx 命令基本語法以下:
可用版本
>= 1.0.0
返回值
設置成功,返回 1 。 設置失敗,返回 0 。
實例
Redis Setrange 命令用指定的字符串覆蓋給定 key 所儲存的字符串值,覆蓋的位置從偏移量 offset 開始。
語法
redis Setrange 命令基本語法以下:
可用版本
>= 2.2.0
返回值
被修改後的字符串長度。
實例
Redis Strlen 命令用於獲取指定 key 所儲存的字符串值的長度。當 key 儲存的不是字符串值時,返回一個錯誤。
語法
redis Strlen 命令基本語法以下:
可用版本
>= 2.2.0
返回值
字符串值的長度。 當 key 不存在時,返回 0。
實例
Redis Mset 命令用於同時設置一個或多個 key-value 對。
語法
redis Mset 命令基本語法以下:
可用版本
>= 1.0.1
返回值
老是返回 OK 。
實例
Redis Msetnx 命令用於全部給定 key 都不存在時,同時設置一個或多個 key-value 對。
語法
redis Msetnx 命令基本語法以下:
可用版本
>= 1.0.1
返回值
當全部 key 都成功設置,返回 1 。 若是全部給定 key 都設置失敗(至少有一個 key 已經存在),那麼返回 0 。
實例
Redis Psetex 命令以毫秒爲單位設置 key 的生存時間。
語法redis Psetex 命令基本語法以下:
可用版本
>= 2.6.0
返回值
設置成功時返回 OK 。
實例
Redis Incr 命令將 key 中儲存的數字值增一。
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 INCR 操做。
若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。
本操做的值限制在 64 位(bit)有符號數字表示以內。
語法
redis Incr 命令基本語法以下:
可用版本
>= 1.0.0
返回值
執行 INCR 命令以後 key 的值。
實例
Redis Incrby 命令將 key 中儲存的數字加上指定的增量值。
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 INCRBY 命令。
若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。
本操做的值限制在 64 位(bit)有符號數字表示以內。
語法
redis Incrby 命令基本語法以下:
可用版本
>= 1.0.0
返回值
加上指定的增量值以後, key 的值。
實例
Redis Incrbyfloat 命令爲 key 中所儲存的值加上指定的浮點數增量值。
若是 key 不存在,那麼 INCRBYFLOAT 會先將 key 的值設爲 0 ,再執行加法操做。
語法
redis Incrbyfloat 命令基本語法以下:
可用版本
>= 2.6.0
返回值
執行命令以後 key 的值。
實例
Redis Decr 命令將 key 中儲存的數字值減一。
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 DECR 操做。
若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。
本操做的值限制在 64 位(bit)有符號數字表示以內。
語法
redis Decr 命令基本語法以下:
可用版本
>= 1.0.0
返回值
執行命令以後 key 的值。
實例
Redis Decrby 命令將 key 所儲存的值減去指定的減量值。
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 DECRBY 操做。
若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。
本操做的值限制在 64 位(bit)有符號數字表示以內。
語法
redis Decrby 命令基本語法以下:
可用版本
>= 1.0.0
返回值
減去指定減量值以後, key 的值。
實例
Redis Append 命令用於爲指定的 key 追加值。
若是 key 已經存在而且是一個字符串, APPEND 命令將 value 追加到 key 原來的值的末尾。
若是 key 不存在, APPEND 就簡單地將給定 key 設爲 value ,就像執行 SET key value 同樣。
語法
redis Append 命令基本語法以下:
可用版本
>= 2.0.0
返回值
追加指定值以後, key 中字符串的長度。
實例
下表列出了 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 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
Redis 中每一個 hash 能夠存儲 232 - 1 鍵值對(40多億)。
實例
在以上實例中,咱們設置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 w3ckey 中。
Redis Hdel 命令用於刪除哈希表 key 中的一個或多個指定字段,不存在的字段將被忽略。
語法
redis Hdel 命令基本語法以下:
可用版本
>= 2.0.0
返回值
被成功刪除字段的數量,不包括被忽略的字段。
實例
Redis Hexists 命令用於查看哈希表的指定字段是否存在。
語法
redis Hexists 命令基本語法以下:
可用版本
>= 2.0.0
返回值
若是哈希表含有給定字段,返回 1 。 若是哈希表不含有給定字段,或 key 不存在,返回 0 。
實例
Redis Hgetall 命令用於返回哈希表中,全部的字段和值。
在返回值裏,緊跟每一個字段名(field name)以後是字段的值(value),因此返回值的長度是哈希表大小的兩倍。
語法
redis Hgetall 命令基本語法以下:
可用版本
>= 2.0.0
返回值
以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。
實例
Redis Hincrby 命令用於爲哈希表中的字段值加上指定增量值。
增量也能夠爲負數,至關於對指定字段進行減法操做。
若是哈希表的 key 不存在,一個新的哈希表被建立並執行 HINCRBY 命令。
若是指定的字段不存在,那麼在執行命令前,字段的值被初始化爲 0 。
對一個儲存字符串值的字段執行 HINCRBY 命令將形成一個錯誤。
本操做的值被限制在 64 位(bit)有符號數字表示以內。
語法
redis Hincrby 命令基本語法以下:
可用版本
>= 2.0.0
返回值
執行 HINCRBY 命令以後,哈希表中字段的值。
實例
Redis Hincrbyfloat 命令用於爲哈希表中的字段值加上指定浮點數增量值。
若是指定的字段不存在,那麼在執行命令前,字段的值被初始化爲 0 。
語法
redis Hincrbyfloat 命令基本語法以下:
可用版本
>= 2.6.0
返回值
執行 Hincrbyfloat 命令以後,哈希表中字段的值。
實例
Redis Hkeys 命令用於獲取哈希表中的全部字段名。
語法
redis Hkeys 命令基本語法以下:
可用版本
>= 2.0.0
返回值
包含哈希表中全部字段的列表。 當 key 不存在時,返回一個空列表。
實例
Redis Hlen 命令用於獲取哈希表中字段的數量。
語法
redis Hlen 命令基本語法以下:
可用版本
>= 2.0.0
返回值
哈希表中字段的數量。 當 key 不存在時,返回 0 。
實例
Redis Hmget 命令用於返回哈希表中,一個或多個給定字段的值。
若是指定的字段不存在於哈希表,那麼返回一個 nil 值。
語法
redis Hmget 命令基本語法以下:
可用版本
>= 2.0.0
返回值
一個包含多個給定字段關聯值的表,表值的排列順序和指定字段的請求順序同樣。
實例
Redis Hset 命令用於爲哈希表中的字段賦值 。
若是哈希表不存在,一個新的哈希表被建立並進行 HSET 操做。
若是字段已經存在於哈希表中,舊值將被覆蓋。
語法
redis Hset 命令基本語法以下:
可用版本
>= 2.0.0
返回值
若是字段是哈希表中的一個新建字段,而且值設置成功,返回 1 。 若是哈希表中域字段已經存在且舊值已被新值覆蓋,返回 0 。
實例
Redis Hsetnx 命令用於爲哈希表中不存在的的字段賦值 。
若是哈希表不存在,一個新的哈希表被建立並進行 HSET 操做。
若是字段已經存在於哈希表中,操做無效。
若是 key 不存在,一個新哈希表被建立並執行 HSETNX 命令。
語法
redis Hsetnx 命令基本語法以下:
可用版本
>= 2.0.0
返回值
設置成功,返回 1 。 若是給定字段已經存在且沒有操做被執行,返回 0 。
實例
Redis Hvals 命令返回哈希表全部字段的值。
語法
redis Hvals 命令基本語法以下:
可用版本
>= 2.0.0
返回值
一個包含哈希表中全部值的表。 當 key 不存在時,返回一個空表。
實例
下表列出了列表相關的基本命令:
序號 | 命令及描述 |
---|---|
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列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素導列表的頭部(左邊)或者尾部(右邊)
一個列表最多能夠包含 232 - 1 個元素 (4294967295, 每一個列表超過40億個元素)。
實例
在以上實例中咱們使用了 LPUSH 將三個值插入了名爲 w3ckey 的列表當中。
Redis Blpop 命令移出並獲取列表的第一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
語法
redis Blpop 命令基本語法以下:
可用版本
>= 2.0.0
返回值
若是列表爲空,返回一個 nil 。 不然,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。
實例
在以上實例中,操做會被阻塞,若是指定的列表 key list1 存在數據則會返回第一個元素,不然在等待100秒後會返回 nil 。
Redis Brpop 命令移出並獲取列表的最後一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
語法
redis Blpop 命令基本語法以下:
可用版本
>= 2.0.0
返回值
假如在指定時間內沒有任何元素被彈出,則返回一個 nil 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。
實例
在以上實例中,操做會被阻塞,若是指定的列表 key list1 存在數據則會返回第一個元素,不然在等待100秒後會返回 nil 。
Redis Brpoplpush 命令從列表中彈出一個值,將彈出的元素插入到另一個列表中並返回它; 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
語法
redis Brpoplpush 命令基本語法以下:
可用版本
>= 2.0.0
返回值
假如在指定時間內沒有任何元素被彈出,則返回一個 nil 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素的值,第二個元素是等待時長。
實例
Redis Lindex 命令用於經過索引獲取列表中的元素。你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。
語法
redis Lindex 命令基本語法以下:
可用版本
>= 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 命令用於返回列表的長度。 若是列表 key 不存在,則 key 被解釋爲一個空列表,返回 0 。 若是 key 不是列表類型,返回一個錯誤。
語法
redis Llen 命令基本語法以下:
可用版本
>= 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 命令基本語法以下:
可用版本
>= 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 命令將一個或多個值插入到列表頭部。 若是 key 不存在,一個空列表會被建立並執行 LPUSH 操做。 當 key 存在但不是列表類型時,返回一個錯誤。
注意:在Redis 2.4版本之前的 LPUSH 命令,都只接受單個 value 值。
語法
redis Lpush 命令基本語法以下:
可用版本
>= 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 命令基本語法以下:
可用版本
>= 2.2.0
返回值
LPUSHX 命令執行以後,列表的長度。
實例
Redis Lrange 返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。 你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。
語法
redis Lrange 命令基本語法以下:
可用版本
>= 1.0.0
返回值
一個列表,包含指定區間內的元素。
實例
Redis Lrem 根據參數 COUNT 的值,移除列表中與參數 VALUE 相等的元素。
COUNT 的值能夠是如下幾種:
語法
redis Lrem 命令基本語法以下:
可用版本
>= 1.0.0
返回值
被移除元素的數量。 列表不存在時返回 0 。
實例
Redis Lset 經過索引來設置元素的值。
當索引參數超出範圍,或對一個空列表進行 LSET 時,返回一個錯誤。
關於列表下標的更多信息,請參考 LINDEX 命令。
語法
redis Lset 命令基本語法以下:
可用版本
>= 1.0.0
返回值
操做成功返回 ok ,不然返回錯誤信息。
實例
Redis Ltrim 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間以內的元素都將被刪除。
下標 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。 你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。
語法
redis Ltrim 命令基本語法以下:
可用版本
>= 1.0.0
返回值
命令執行成功時,返回 ok 。
實例
Redis Rpop 命令用於移除並返回列表的最後一個元素。
語法
redis Rpop 命令基本語法以下:
可用版本
>= 1.0.0
返回值
列表的最後一個元素。 當列表不存在時,返回 nil 。
實例
Redis Lpush 命令將一個或多個值插入到列表頭部。 若是 key 不存在,一個空列表會被建立並執行 LPUSH 操做。 當 key 存在但不是列表類型時,返回一個錯誤。
注意:在Redis 2.4版本之前的 LPUSH 命令,都只接受單個 value 值。
語法
redis Lpush 命令基本語法以下:
可用版本
>= 1.0.0
返回值
執行 LPUSH 命令後,列表的長度。
實例
Redis Lpushx 將一個或多個值插入到已存在的列表頭部,列表不存在時操做無效。
語法
redis Lpushx 命令基本語法以下:
可用版本
>= 2.2.0
返回值
LPUSHX 命令執行以後,列表的長度。
實例
Redis Lrange 返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。 你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。
語法
redis Lrange 命令基本語法以下:
可用版本
>= 1.0.0
返回值
一個列表,包含指定區間內的元素。
實例
下表列出了 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是string類型的無序集合。集合成員是惟一的,這就意味着集合中不能出現重複的數據。
Redis 中 集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。
集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。
實例
在以上實例中咱們經過 SADD 命令向名爲 w3ckey 的集合插入的三個元素。
Redis Sadd 命令將一個或多個成員元素加入到集合中,已經存在於集合的成員元素將被忽略。
假如集合 key 不存在,則建立一個只包含添加的元素做成員的集合。
當集合 key 不是集合類型時,返回一個錯誤。
注意:在Redis2.4版本之前, SADD 只接受單個成員值。
語法
redis Sadd 命令基本語法以下:
可用版本
>= 1.0.0
返回值
被添加到集合中的新元素的數量,不包括被忽略的元素。
實例
Redis Scard 命令返回集合中元素的數量。
語法
redis Scard 命令基本語法以下:
可用版本
>= 1.0.0
返回值
集合的數量。 當集合 key 不存在時,返回 0 。
實例
Redis Sdiff 命令返回給定集合之間的差集。不存在的集合 key 將視爲空集。
語法
redis Sdiff 命令基本語法以下:
可用版本
>= 1.0.0
返回值
包含差集成員的列表。
實例
Redis Sdiffstore 命令將給定集合之間的差集存儲在指定的集合中。若是指定的集合 key 已存在,則會被覆蓋。
語法
redis Sdiffstore 命令基本語法以下:
可用版本
>= 1.0.0
返回值
結果集中的元素數量。
實例
Redis Sinter 命令返回給定全部給定集合的交集。 不存在的集合 key 被視爲空集。 當給定集合當中有一個空集時,結果也爲空集(根據集合運算定律)。
語法
redis Sinter 命令基本語法以下:
可用版本
>= 1.0.0
返回值
交集成員的列表。
實例
Redis Sinterstore 命令將給定集合之間的交集存儲在指定的集合中。若是指定的集合已經存在,則將其覆蓋。
語法
redis Sinterstore 命令基本語法以下:
可用版本
>= 1.0.0
返回值
交集成員的列表。
實例
Redis Sismember 命令判斷成員元素是不是集合的成員。
語法
redis Sismember 命令基本語法以下:
可用版本
>= 1.0.0
返回值
若是成員元素是集合的成員,返回 1 。 若是成員元素不是集合的成員,或 key 不存在,返回 0 。
實例
Redis Smembers 命令返回集合中的全部的成員。 不存在的集合 key 被視爲空集合。
語法
redis Smembers 命令基本語法以下:
可用版本
>= 1.0.0
返回值
集合中的全部成員。
實例
Redis Smove 命令將指定成員 member 元素從 source 集合移動到 destination 集合。
SMOVE 是原子性操做。
若是 source 集合不存在或不包含指定的 member 元素,則 SMOVE 命令不執行任何操做,僅返回 0 。不然, member 元素從 source 集合中被移除,並添加到 destination 集合中去。
當 destination 集合已經包含 member 元素時, SMOVE 命令只是簡單地將 source 集合中的 member 元素刪除。
當 source 或 destination 不是集合類型時,返回一個錯誤。
語法
redis Smove 命令基本語法以下:
可用版本
>= 1.0.0
返回值
若是成員元素被成功移除,返回 1 。 若是成員元素不是 source 集合的成員,而且沒有任何操做對 destination 集合執行,那麼返回 0 。
實例
Redis Spop 命令用於移除並返回集合中的一個隨機元素。
語法
redis Spop 命令基本語法以下:
可用版本
>= 1.0.0
返回值
被移除的隨機元素。 當集合不存在或是空集時,返回 nil 。
實例
Redis Srandmember 命令用於返回集合中的一個隨機元素。
從 Redis 2.6 版本開始, Srandmember 命令接受可選的 count 參數:
該操做和 SPOP 類似,但 SPOP 將隨機元素從集合中移除並返回,而 Srandmember 則僅僅返回隨機元素,而不對集合進行任何改動。
語法
redis Srandmember 命令基本語法以下:
可用版本
>= 1.0.0
返回值
只提供集合 key 參數時,返回一個元素;若是集合爲空,返回 nil 。 若是提供了 count 參數,那麼返回一個數組;若是集合爲空,返回空數組。
實例
Redis Srem 命令用於移除集合中的一個或多個成員元素,不存在的成員元素會被忽略。
當 key 不是集合類型,返回一個錯誤。
在 Redis 2.4 版本之前, SREM 只接受單個成員值。
語法
redis Srem 命令基本語法以下:
可用版本
>= 1.0.0
返回值
被成功移除的元素的數量,不包括被忽略的元素。
實例
Redis Sunion 命令返回給定集合的並集。不存在的集合 key 被視爲空集。
語法
redis Sunion 命令基本語法以下:
可用版本
>= 1.0.0
返回值
並集成員的列表。
實例
Redis Sunionstore 命令將給定集合的並集存儲在指定的集合 destination 中。若是 destination 已經存在,則將其覆蓋。
語法
redis Sunionstore 命令基本語法以下:
可用版本
>= 1.0.0
返回值
結果集中的元素數量。
實例
Redis Sscan 命令用於迭代集合鍵中的元素。
語法
redis Sscan 命令基本語法以下:
可用版本
>= 1.0.0
返回值
數組列表。
實例
下表列出了 redis 有序集合的基本命令:
Redis 有序集合和集合同樣也是string類型元素的集合,且不容許重複的成員。
不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。
有序集合的成員是惟一的,但分數(score)卻能夠重複。
集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。 集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。
實例
在以上實例中咱們經過命令 ZADD 向 redis 的有序集合中添加了三個值並關聯上分數。
Redis Zadd 命令用於將一個或多個成員元素及其分數值加入到有序集當中。
若是某個成員已是有序集的成員,那麼更新這個成員的分數值,並經過從新插入這個成員元素,來保證該成員在正確的位置上。
分數值能夠是整數值或雙精度浮點數。
若是有序集合 key 不存在,則建立一個空的有序集並執行 ZADD 操做。
當 key 存在但不是有序集類型時,返回一個錯誤。
注意: 在 Redis 2.4 版本之前, ZADD 每次只能添加一個元素。
語法
redis Zadd 命令基本語法以下:
可用版本
>= 1.2.0
返回值
被成功添加的新成員的數量,不包括那些被更新的、已經存在的成員。
實例
Redis Zcard 命令用於計算集合中元素的數量。
語法
redis Zcard 命令基本語法以下:
可用版本
>= 1.2.0
返回值
當 key 存在且是有序集類型時,返回有序集的基數。 當 key 不存在時,返回 0 。
實例
Redis Zcount 命令用於計算有序集合中指定分數區間的成員數量。
語法
redis Zcount 命令基本語法以下:
可用版本
>= 2.0.0
返回值
分數值在 min 和 max 之間的成員的數量。
實例
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.2.0
返回值
member 成員的新分數值,以字符串形式表示。
實例
Redis Zinterstore 命令計算給定的一個或多個有序集的交集,其中給定 key 的數量必須以 numkeys 參數指定,並將該交集(結果集)儲存到 destination 。
默認狀況下,結果集中某個成員的分數值是全部給定集下該成員分數值之和。
語法
redis Zinterstore 命令基本語法以下:
可用版本
>= 2.0.0
返回值
保存到目標結果集的的成員數量。
實例
Redis Zlexcount 命令在計算有序集合中指定字典區間內成員數量。
語法
redis Zlexcount 命令基本語法以下:
可用版本
>= 2.8.9
返回值
指定區間內的成員數量。
實例
Redis Zrange 返回有序集中,指定區間內的成員。
其中成員的位置按分數值遞增(從小到大)來排序。
具備相同分數值的成員按字典序(lexicographical order )來排列。
若是你須要成員按
值遞減(從大到小)來排列,請使用 ZREVRANGE 命令。
下標參數 start 和 stop 都以 0 爲底,也就是說,以 0 表示有序集第一個成員,以 1 表示有序集第二個成員,以此類推。
你也可使用負數下標,以 -1 表示最後一個成員, -2 表示倒數第二個成員,以此類推。
語法
redis Zrange 命令基本語法以下:
可用版本
>= 1.2.0
返回值
指定區間內,帶有分數值(可選)的有序集成員的列表。
實例
Redis Zrangebylex 經過字典區間返回有序集合的成員。
語法
redis Zrange 命令基本語法以下:
可用版本
>= 2.8.9
返回值
指定區間內的元素列表。
實例
Redis Zremrangebyrank 命令用於移除有序集中,指定排名(rank)區間內的全部成員。
語法
redis Zremrangebyrank 命令基本語法以下:
可用版本
>= 2.0.0
返回值
被移除成員的數量。
實例
Redis Zrank 返回有序集中指定成員的排名。其中有序集成員按分數值遞增(從小到大)順序排列。
redis Zrank 命令基本語法以下:
>= 2.0.0
若是成員是有序集 key 的成員,返回 member 的排名。 若是成員不是有序集 key 的成員,返回 nil 。
Redis Zrem 命令用於移除有序集中的一個或多個成員,不存在的成員將被忽略。
當 key 存在但不是有序集類型時,返回一個錯誤。
注意: 在 Redis 2.4 版本之前, ZREM 每次只能刪除一個元素。
語法
redis Zrem 命令基本語法以下:
可用版本
>= 1.2.0
返回值
被成功移除的成員的數量,不包括被忽略的成員。
實例
Redis Zrangebyscore 返回有序集合中指定分數區間的成員列表。有序集成員按分數值遞增(從小到大)次序排列。
具備相同分數值的成員按字典序來排列(該屬性是有序集提供的,不須要額外的計算)。
默認狀況下,區間的取值使用閉區間 (小於等於或大於等於),你也能夠經過給參數前增長 ( 符號來使用可選的開區間 (小於或大於)。
舉個例子:
返回全部符合條件 1
則返回全部符合條件 5
語法
redis Zrangebyscore 命令基本語法以下:
可用版本
>= 1.0.5
返回值
指定區間內,帶有分數值(可選)的有序集成員的列表。
實例
Redis Zremrangebylex 命令用於移除有序集合中給定的字典區間的全部成員。
語法
redis Zremrangebylex命令基本語法以下:
可用版本
>= 2.8.9
返回值
被成功移除的成員的數量,不包括被忽略的成員。
實例
Redis Zremrangebyscore 命令用於移除有序集中,指定分數(score)區間內的全部成員。
語法
redis Zremrangebyscore 命令基本語法以下:
>= 1.2.0
返回值
被移除成員的數量。
實例
Redis Zrevrange 命令返回有序集中,指定區間內的成員。
其中成員的位置按分數值遞減(從大到小)來排列。
具備相同分數值的成員按字典序的逆序(reverse lexicographical order)排列。
除了成員按分數值遞減的次序排列這一點外, ZREVRANGE 命令的其餘方面和 ZRANGE 命令同樣。
語法
redis Zrevrange 命令基本語法以下:
可用版本
>= 1.2.0
返回值
指定區間內,帶有分數值(可選)的有序集成員的列表。
實例
Redis Zrevrangebyscore 返回有序集中指定分數區間內的全部的成員。有序集成員按分數值遞減(從大到小)的次序排列。
具備相同分數值的成員按字典序的逆序(reverse lexicographical order )排列。
除了成員按分數值遞減的次序排列這一點外, ZREVRANGEBYSCORE 命令的其餘方面和 ZRANGEBYSCORE 命令同樣。
語法
redis Zrevrangebyscore 命令基本語法以下:
可用版本
>= 2.2.0
返回值
指定區間內,帶有分數值(可選)的有序集成員的列表。
實例
Redis Zrevrank 命令返回有序集中成員的排名。其中有序集成員按分數值遞減(從大到小)排序。
排名以 0 爲底,也就是說, 分數值最大的成員排名爲 0 。
使用 ZRANK 命令能夠得到成員按分數值遞增(從小到大)排列的排名。
語法
redis Zrevrank 命令基本語法以下:
可用版本
>= 2.2.0
返回值
若是成員是有序集 key 的成員,返回成員的排名。 若是成員不是有序集 key 的成員,返回 nil 。
實例
Redis Zscore 命令返回有序集中,成員的分數值。 若是成員元素不是有序集 key 的成員,或 key 不存在,返回 nil 。
語法
redis Zscore 命令基本語法以下:
可用版本
>= 1.2.0
返回值
成員的分數值,以字符串形式表示。
實例
Redis Zunionstore 命令計算給定的一個或多個有序集的並集,其中給定 key 的數量必須以 numkeys 參數指定,並將該並集(結果集)儲存到 destination 。
默認狀況下,結果集中某個成員的分數值是全部給定集下該成員分數值之和 。
語法
redis Zunionstore 命令基本語法以下:
可用版本
>= 2.0.0
返回值
保存到 destination 的結果集的成員數量。
實例
Redis Zscan 命令用於迭代有序集合中的元素(包括元素成員和元素分值)
語法
redis Zscan 命令基本語法以下:
可用版本
>= 2.8.0
返回值
返回的每一個元素都是一個有序集合元素,一個有序集合元素由一個成員(member)和一個分值(score)組成。
下表列出了 redis HyperLogLog 的基本命令:
序號 | 命令及描述 |
---|---|
1 | PFADD key element [element ...] 添加指定元素到 HyperLogLog 中。 |
2 | PFCOUNT key [key ...] 返回給定 HyperLogLog 的基數估算值。 |
3 | PFMERGE destkey sourcekey [sourcekey ...] 將多個 HyperLogLog 合併爲一個 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 的工做過程:
Redis Debug Segfault 命令執行一個非法的內存訪問從而讓 Redis 崩潰,僅在開發時用於 BUG 調試。
語法
redis Debug Segfault 命令基本語法以下:
可用版本
>= 1.0.0
返回值
無
實例
Redis Pfcount 命令返回給定 HyperLogLog 的基數估算值。
語法
redis Pfcount 命令基本語法以下:
可用版本
>= 2.8.9
返回值整數,返回給定 HyperLogLog 的基數值,若是多個 HyperLogLog 則返回基數估值之和。
實例
Redis Pgmerge 命令將多個 HyperLogLog 合併爲一個 HyperLogLog ,合併後的 HyperLogLog 的基數估算值是經過對全部 給定 HyperLogLog 進行並集計算得出的。
語法
redis Pgmerge 命令基本語法以下:
可用版本
>= 2.8.9
返回值
返回 OK。
實例
下表列出了 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 發佈訂閱(pub/sub)是一種消息通訊模式:發送者(pub)發送消息,訂閱者(sub)接收消息。
Redis 客戶端能夠訂閱任意數量的頻道。
下圖展現了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的關係:
當有新消息經過 PUBLISH 命令發送給頻道 channel1 時, 這個消息就會被髮送給訂閱它的三個客戶端:
實例
如下實例演示了發佈訂閱是如何工做的。在咱們實例中咱們建立了訂閱頻道名爲 redisChat:
如今,咱們先從新開啓個 redis 客戶端,而後在同一個頻道 redisChat 發佈兩次消息,訂閱者就能接收到消息。
Redis Psubscribe 命令訂閱一個或多個符合給定模式的頻道。
每一個模式以 * 做爲匹配符,好比 it* 匹配全部以 it 開頭的頻道( it.news 、 it.blog 、 it.tweets 等等)。 news.* 匹配全部以 news. 開頭的頻道( news.it 、 news.global.today 等等),諸如此類。
語法
redis Psubscribe 命令基本語法以下:
可用版本
>= 2.0.0
返回值
接收到的信息。
實例
Redis Pubsub 命令用於查看訂閱與發佈系統狀態,它由數個不一樣格式的子命令組成。
語法
redis Pubsub 命令基本語法以下:
可用版本
>= 2.8.0
返回值
由活躍頻道組成的列表。
實例
Redis Publish 命令用於將信息發送到指定的頻道。
語法
redis Publish 命令基本語法以下:
可用版本
>= 2.0.0
返回值
接收到信息的訂閱者數量。
實例
Redis Punsubscribe 命令用於退訂全部給定模式的頻道。
語法
redis Punsubscribe 命令基本語法以下:
可用版本
>= 2.0.0
返回值
這個命令在不一樣的客戶端中有不一樣的表現。
實例
Redis Subscribe 命令用於訂閱給定的一個或多個頻道的信息。。
語法
redis Subscribe 命令基本語法以下:
可用版本
>= 2.0.0
返回值
接收到的信息
實例
Redis Unsubscribe 命令用於退訂給定的一個或多個頻道的信息。
語法
redis Unsubscribe 命令基本語法以下:
可用版本
>= 2.0.0
返回值
這個命令在不一樣的客戶端中有不一樣的表現。
實例
下表列出了 redis 事務的相關命令:
序號 | 命令及描述 |
---|---|
1 | DISCARD 取消事務,放棄執行事務塊內的全部命令。 |
2 | EXEC 執行全部事務塊內的命令。 |
3 | MULTI 標記一個事務塊的開始。 |
4 | UNWATCH 取消 WATCH 命令對全部 key 的監視。 |
5 | WATCH key [key ...] 監視一個(或多個) key ,若是在事務執行以前這個(或這些) key 被其餘命令所改動,那麼事務將被打斷。 |
Redis 事務能夠一次執行多個命令, 而且帶有如下兩個重要的保證:
一個事務從開始到執行會經歷如下三個階段:
實例
如下是一個事務的例子, 它先以 MULTI 開始一個事務, 而後將多個命令入隊到事務中, 最後由 EXEC 命令觸發事務, 一併執行事務中的全部命令:
Redis Discard 命令用於取消事務,放棄執行事務塊內的全部命令。
語法
redis Discard 命令基本語法以下:
可用版本
>= 2.0.0
返回值
老是返回 OK 。
實例
Redis Exec 命令用於執行全部事務塊內的命令。
語法
redis Exec 命令基本語法以下:
可用版本
>= 1.2.0
返回值
事務塊內全部命令的返回值,按命令執行的前後順序排列。 當操做被打斷時,返回空值 nil 。
實例
Redis Multi 命令用於標記一個事務塊的開始。
事務塊內的多條命令會按照前後順序被放進一個隊列當中,最後由 EXEC 命令原子性(atomic)地執行。
語法
redis Multi 命令基本語法以下:
可用版本
>= 1.2.0
返回值
老是返回 OK 。
實例
Redis Unwatch 命令用於取消 WATCH 命令對全部 key 的監視。
語法
redis Unwatch 命令基本語法以下:
可用版本
>= 2.2.0
返回值
老是返回 OK 。
實例
Redis Watch 命令用於監視一個(或多個) key ,若是在事務執行以前這個(或這些) key 被其餘命令所改動,那麼事務將被打斷
語法
redis Watch 命令基本語法以下:
可用版本
>= 2.2.0
返回值
老是返回 OK 。
實例
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 腳本使用 Lua 解釋器來執行腳本。 Reids 2.6 版本經過內嵌支持 Lua 環境。執行腳本的經常使用命令爲 EVAL。
語法
Eval 命令的基本語法以下:
實例
如下實例演示了 redis 腳本工做過程:
Redis Eval 命令使用 Lua 解釋器執行腳本。
語法
redis Eval 命令基本語法以下:
參數說明:
可用版本
>= 2.6.0
實例
Redis Evalsha 命令根據給定的 sha1 校驗碼,執行緩存在服務器中的腳本。
語法
redis Evalsha 命令基本語法以下:
參數說明:
可用版本
>= 2.6.0
實例
Redis Script Exists 命令用於校驗指定的腳本是否已經被保存在緩存當中。
語法
redis Script Exists 命令基本語法以下:
可用版本
>= 2.6.0
返回值
一個列表,包含 0 和 1 ,前者表示腳本不存在於緩存,後者表示腳本已經在緩存裏面了。
列表中的元素和給定的 SHA1 校驗和保持對應關係,好比列表的第三個元素的值就表示第三個 SHA1 校驗和所指定的腳本在緩存中的狀態。
實例
Redis Script Flush 命令用於清除全部 Lua 腳本緩存。
語法
redis Script Flush 命令基本語法以下:
可用版本
>= 2.6.0
返回值
老是返回 OK
實例
Redis Script kill 命令用於殺死當前正在運行的 Lua 腳本,當且僅當這個腳本沒有執行過任何寫操做時,這個命令才生效。
這個命令主要用於終止運行時間過長的腳本,好比一個由於 BUG 而發生無限循環的腳本。
SCRIPT KILL 執行以後,當前正在運行的腳本會被殺死,執行這個腳本的客戶端會從 EVAL 命令的阻塞當中退出,並收到一個錯誤做爲返回值。
語法
redis Script kill 命令基本語法以下:
可用版本
>= 2.6.0
返回值
老是返回 OK
實例
Redis Script Load 命令用於將腳本 script 添加到腳本緩存中,但並不當即執行這個腳本。
EVAL 命令也會將腳本添加到腳本緩存中,可是它會當即對輸入的腳本進行求值。
若是給定的腳本已經在緩存裏面了,那麼不執行任何操做。
在腳本被加入到緩存以後,經過 EVALSHA 命令,可使用腳本的 SHA1 校驗和來調用這個腳本。
腳本能夠在緩存中保留無限長的時間,直到執行 SCRIPT FLUSH 爲止。
關於使用 Redis 對 Lua 腳本進行求值的更多信息,請參見 EVAL 命令。
語法
redis Script Load 命令基本語法以下:
可用版本
>= 2.6.0
返回值
給定腳本的 SHA1 校驗和
實例
下表列出了 redis 鏈接的基本命令:
序號 | 命令及描述 |
---|---|
1 | AUTH password 驗證密碼是否正確 |
2 | ECHO message 打印字符串 |
3 | PING 查看服務是否運行 |
4 | QUIT 關閉當前鏈接 |
5 | SELECT index 切換到指定的數據庫 |
Redis 鏈接命令主要是用於鏈接 redis 服務。
實例
如下實例演示了客戶端如何經過密碼驗證鏈接到 redis 服務,並檢測服務是否在運行:
Redis Auth 命令用於檢測給定的密碼和配置文件中的密碼是否相符。
語法
redis Auth 命令基本語法以下:
可用版本
>= 1.0.0
返回值
密碼匹配時返回 OK ,不然返回一個錯誤。
實例
Redis Echo 命令用於打印給定的字符串。
redis Echo 命令基本語法以下:
可用版本
>= 1.0.0
返回值
返回字符串自己。
實例
Redis Ping 命令使用客戶端向 Redis 服務器發送一個 PING ,若是服務器運做正常的話,會返回一個 PONG 。
一般用於測試與服務器的鏈接是否仍然生效,或者用於測量延遲值。
語法
redis Ping 命令基本語法以下:
可用版本
>= 1.0.0
返回值
若是鏈接正常就返回一個 PONG ,不然返回一個鏈接錯誤。
實例
Redis Quit 命令用於關閉與當前客戶端與redis服務的鏈接。
一旦全部等待中的回覆(若是有的話)順利寫入到客戶端,鏈接就會被關閉。
語法
redis Quit 命令基本語法以下:
可用版本
>= 1.0.0
返回值
老是返回 OK 。
實例
Redis Select 命令用於切換到指定的數據庫,數據庫索引號 index 用數字值指定,以 0 做爲起始索引值。
語法
redis Select 命令基本語法以下:
可用版本
>= 1.0.0
返回值
老是返回 OK 。
實例
下表列出了 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,首先要獲取安裝包。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是客戶端程序)如圖正常提示進入,並顯示正確端口號,則表示服務已經啓動。