Redis 客戶端命令總結

注意:括號裏是參數,具體使用的時候不須要括號和逗號,直接使用空格分隔命令以及各個參數便可。mysql

一、對Key操做的命令

exists(key):確認一個key是否存在。存在返回1,不存在返回0。redis

del(key):刪除一個 key。key 存在返回1,不存在返回0。算法

expire(key, seconds):爲給定 key 設置過時時間,以秒計。key 存在返回1,不存在返回0。sql

expireat(key, seconds-timestamp):爲給定 key 設置過時時間。以秒計,時間參數是 unix  時間戳。key 存在返回1,不存在返回0。(不清楚)mongodb

pexpire(key, milliseconds):爲給定 key 設置過時時間,以毫秒計。key 存在返回1,不存在返回0。數據庫

pexpireat(key, milliseconds-timestamp):爲給定 key 設置過時時間。以毫秒計,時間參數是 unix  時間戳。key 存在返回1,不存在返回0。(不清楚)數組

ttl(key):以秒爲單位返回 key 的剩餘生存時間。永久 key 的返回-1。緩存

pttl(key):以毫秒爲單位返回 key 的剩餘生存時間。永久 key 的返回-1。服務器

persist(key):移除 key 的過時時間,key 將持久保持。app

keys(pattern):返回全部符合給定模式( pattern)的 key 。

move(key, dbindex):將當前數據庫中的 key 轉移到 dbindex 數據庫,dbindex 爲0到15。

rename(oldname, newname):將 key 由 oldname 重命名爲 newname。若 newname 的 key 存在則刪除 newname 表示的 key,而後再將 key 由 oldname 重命名爲 newname。

rnamenx(oldname, newname):將 key 由 oldname 重命名爲 newname。若 newname 的 key 存在則不作操做。

type(key):返回 key 所儲存的值的類型。

dump(key):序列化給定 key ,並返回被序列化的值。(不清楚)

randomkey:從當前數據庫中隨機返回一個 key。

二、對String操做的命令

set(key, value):給名稱爲 key 的 string 賦予值 value。

get(key):返回名稱爲 key 的 string 的 value。

substr(key, start, end):返回名稱爲 key 的 string 的子字符串(start 到 end 之間,包括 start 和 end),start 和 end 爲字符索引,從0開始。

getrange(key, start, end):返回名稱爲 key 的 string 的子字符串(start 到 end 之間,包括 start 和 end),start 和 end 爲字符索引,從0開始。

getset(key, value):將給定 key 的值設爲 value ,並返回 key 的舊值(old value)。

mset(key1, value1, key2, value2, …, keyN, valueN):同時給多個 string 賦值,名稱爲 key i 的 string 賦值 value i。

mget(key1, key2,…, keyN):返回名稱爲 key1 到 keyN 的 string 的 value。

setex(key, seconds, value):給名稱爲 key 的 string 賦予值 value。同時設定過時時間 seconds,以秒計。

psetex(key, milliseconds, value):給名稱爲 key 的 string 賦予值 value。同時設定過時時間 milliseconds,以毫秒計。

setnx(key, value):若是不存在名稱爲 key 的 string,則向庫中添加 string,名稱爲 key,值爲 value。key 存在則不添加。

msetnx(key1, value1, key2, value2, …, keyN, valueN):同時設置一個或多個 key-value 對,當且僅當全部給定 key 都不存在。只要有一個 key 存在,全部的 key 都不會設置。

strlen(key):返回 key 所儲存的字符串值 value 的長度。

incr(key):名稱爲 key 的 value 增1操做。該 value 必須爲整數,不然報錯。

incrby(key, integer):名稱爲 key 的 value 增長 integer。該 value 必須爲整數,不然報錯。

incrbyfloat(key, float):名稱爲 key 的 value 增長 float。該 value 必須爲數字,不然報錯。這個主要是能添加浮點量。

decr(key):名稱爲 key 的 value 減1操做。該 value 必須爲整數,不然報錯。

decrby(key, integer):名稱爲 key 的 value 減小 integer。該 value 必須爲整數,不然報錯。

append(key, value):名稱爲 key 的 string 的值末尾附加 value。返回新 value 字符串的長度。

三、對List操做的命令

有序可重複

rpush(key, value1, ..., valueN):在名稱爲 key 的 list 尾添加值爲 value1 到 valueN 的元素。

lpush(key, value1, ..., valueN):在名稱爲 key 的 list 頭添加值爲 value1 到 valueN 的元素。

rpushx(key, value):爲已存在的列表 key 尾部添加 value,返回添加後列表的長度。不存在則不添加,返回0。

lpushx(key, value):爲已存在的列表 key 頭部添加 value,返回添加後列表的長度。不存在則不添加,返回0。

linsert(key, before|after, pivot, value):在名稱爲 key 的 list 指定元素 pivot 的前面或者後面插入元素 value。若是指定元素 pivot 不存在,則返回-1,存在則返回插入元素後列表的總元素個數。

llen(key):返回名稱爲 key 的 list 的長度。

lrange(key, start, end):返回名稱爲 key 的 list 中 start 至 end 之間的元素(包括 start 和 end,下標從0開始。下同)。

ltrim(key, start, end):截取名稱爲 key 的 list,保留 start 至 end 之間的元素,對原列表進行了修改。

lindex(key, index):返回名稱爲 key 的 list 中 index 位置的元素。

lset(key, index, value):給名稱爲 key 的 list 中 index 位置的元素賦值爲 value,index 必須爲列表中已有的下標。

lrem(key, count, value):在名稱爲 key 的 list 中 刪除 count 個值爲 value 的元素。count 爲 0,刪除全部值爲value的元素,count > 0 從頭到尾刪除 count 個值爲 value 的元素,count < 0 從尾到頭刪除 |count| 個值爲 value 的元素。

lpop(key):返回並刪除名稱爲 key 的 list 中的首元素。也就是將該列表中第一個元素返回,而且在列表中刪除該元素。

rpop(key):返回並刪除名稱爲 key 的 list 中的尾元素。也就是將該列表中最後一個元素返回,而且在列表中刪除該元素。

blpop(key1, key2, …, keyN, timeout):lpop 命令的 block 版本。即當 timeout 爲 0 時,若遇到名稱爲 key i 的 list 不存在或該 list 爲空,則命令結束。若是 timeout > 0,則遇到上述狀況時,等待 timeout 秒,若是問題沒有解決,則對 key i+1 開始的 list 執行 lpop 操做。

brpop(key1, key2,… keyN, timeout):rpop 命令的 block 版本。參考上一命令。

rpoplpush(srckey, dstkey):返回並刪除名稱爲 srckey 的 list 的尾元素,並將該元素添加到名稱爲 dstkey 的 list 的頭部。

brpoplpush(srckey, dstkey, timeout):返回並刪除名稱爲 srckey 的 list 的尾元素,並將該元素添加到名稱爲 dstkey 的 list 的頭部。 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。

四、對Set操做的命令

無序不可重複

sadd(key, member1, ..., memberN):向名稱爲 key 的 set 中添加元素 member1 到 memberN。

srem(key, member1, ..., memberN):刪除名稱爲 key 的 set 中的元素 member1 到 memberN。

srandmember(key, count):隨機返回名稱爲 key 的 set 的一個或多個(count)元素。不寫 count 時默認爲1。

spop(key):隨機返回並刪除名稱爲 key 的 set 中一個元素。

scard(key):返回名稱爲 key 的 set 的元素個數。

smembers(key):返回名稱爲 key 的 set 的全部元素。

smove(srckey, dstkey, member):將 member 元素從名稱爲 srckey 的 set 集合移到名稱爲 dstkey 的 set 集合。

sismember(key, member):測試 member 是不是名稱爲 key 的 set 的元素,是的話返回1,不是的話返回0。

sinter(key1, key2, …, keyN):返回名稱爲key1 到 keyN 的 set 集合的交集。

sinterstore(dstkey, key1, key2, …, keyN):求名稱爲key1 到 keyN 的 set 集合的交集並將交集保存到名稱爲 dstkey 的 set 集合。返回交集元素的個數。

sunion(key1, key2, …, keyN):返回名稱爲key1 到 keyN 的 set 集合的並集。

sunionstore(dstkey, key1, key2, …, keyN):求名稱爲key1 到 keyN 的 set 集合的並集並將並集保存到名稱爲 dstkey 的 set 集合。返回並集元素的個數。

sdiff(key1, key2, …, keyN):返回名稱爲key1 到 keyN 的 set 集合的差集。

sdiffstore(dstkey, key1, key2, …, keyN) :求名稱爲key1 到 keyN 的 set 集合的差集並將差集保存到名稱爲 dstkey 的 set 集合。返回差集元素的個數。

五、對Zset操做的命令

有序不可重複(sorted set)

zadd(key, score1, member1, ..., scoreN, memberN):向名稱爲 key 的 zset 中添加元素 member1 到 memberN。若是該元素已經存在,則該元素的 score 更新爲新的score。(score用於排序,爲數字),返回新加元素的個數。

zincrby(key, increment, member):向名稱爲 key 的 zset 中添加元素 member,其 score 值爲 increment,返回 score。若是該元素已經存在,則該元素的 score 增長 increment,返回更新後的 score。

zrem(key, member1, ... memberN):刪除名稱爲 key 的 zset 中的元素 member1 到 memberN。

zcard(key):返回名稱爲 key 的 zset 元素的個數。

zscore(key, element):返回名稱爲 key 的 zset 中元素 element 的 score。元素不存在返回 null。

zcount(key, min, max):計算名稱爲 key 的 zset 中 score >= min 且 score <= max 的全部元素的總數。

zrank(key, member):返回名稱爲 key 的 zset(元素已按 score 從小到大排序)中 member 元素的 rank(即 index,從0開始),若沒有 member 元素,返回 null。

zrevrank(key, member):返回名稱爲 key 的 zset(元素已按 score 從大到小排序)中 member 元素的 rank(即 index,從0開始),若沒有 member 元素,返回 null。

zrange(key, start, end):返回名稱爲 key 的 zset(元素已按 score 從小到大排序)中的 index 從 start 到 end 的全部元素。

zrevrange(key, start, end):返回名稱爲 key 的 zset(元素已按 score 從大到小排序)中的 index 從 start 到 end 的全部元素。

zrangebyscore(key, min, max):返回名稱爲 key 的 zset 中 score >= min 且 score <= max 的全部元素。

zremrangebyrank(key, min, max):刪除名稱爲 key 的 zset(元素已按 score 從小到大排序) 中 rank >= min 且 rank <= max 的全部元素。

zremrangebyscore(key, min, max):刪除名稱爲 key 的 zset 中 score >= min 且 score <= max 的全部元素。

zunionstore / zinterstore(dstkeyN, key1, …, keyN, WEIGHTS w1, …, wN, AGGREGATE SUM|MIN|MAX):對 N 個 zset 求並集/交集,並將最後的集合保存在 dstkeyN 中。對於集合中每個元素的 score,在進行 AGGREGATE 運算前,都要乘以對應的 WEIGHTS 參數。若是沒有提供WEIGHTS,默認爲1。默認的 AGGREGATE 是 SUM,即結果集合中元素的 score 是全部集合對應元素進行 SUM 運算的值,而 MIN 和 MAX 是指結果集合中元素的 score 是全部集合對應元素中最小值和最大值。

六、對Hash操做的命令

hset(key, field, value):向名稱爲 key 的 hash 中添加元素 field<—>value。

hget(key, field):返回名稱爲 key 的 hash 中 field 對應的 value。

hsetnx(key, field, value):在名稱爲 key 的 hash 中若是不存指定的 field,則添加元素 field<—>value。反之不添加。

hmset(key, field1, value1, …, fieldN, valueN):向名稱爲 key 的 hash 中添加元素 field1<—>value1 到 fieldN<—>valueN。

hmget(key, field1, …, fieldN):返回名稱爲 key 的 hash 中 field1 到 findN 對應的value。

hincrby(key, field, integer):將名稱爲 key 的 hash 中 field 的 value 增長 integer,注意 value 類型必須爲 integer。

hincrbyfloat(key, field, float):將名稱爲 key 的 hash 中 field 的 value 增長 float,注意 value 類型必須爲數字。和上面的區別是能增長浮點量。

hexists(key, field):判斷名稱爲 key 的 hash 中是否存在鍵爲 field 的域,返回 0 或者 1。

hdel(key, field):刪除名稱爲 key 的 hash 中鍵爲 field 的域,返回刪除的數量。

hlen(key):返回名稱爲 key 的 hash 中元素個數。

hkeys(key):返回名稱爲 key 的 hash 中全部鍵 field。

hvals(key):返回名稱爲 key 的 hash 中全部值 value。

hgetall(key):返回名稱爲 key 的 hash 中全部的鍵 field 及其對應的值 value。

七、對HyperLogLog操做的命令

描述

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

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

在 Redis 裏面,每一個 HyperLogLog 鍵只須要花費 12 KB 內存,就能夠計算接近 2^64 個不一樣元素的基 數。這和計算基數時,元素越多耗費內存就越多的集合造成鮮明對比。可是,由於 HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素自己,因此 HyperLogLog 不能像集合那樣,返回輸入的各個元素。

命令

pfadd(key, element1, ..., elementN):添加指定元素到 HyperLogLog 中。

l-zcgredis5:1>pfadd runoobkey "redis" "mongodb" "mysql"
"1"
l-zcgredis5:1>pfadd runoobkey1 "redis" "mongodb" "mysql" "mysql"
"1"

pfcount(key1, ..., keyN):返回給定的 HyperLogLog 的基數估算值。

l-zcgredis5:1>pfcount runoobkey1 runoobkey
"3"

pfmerge(destkey, sourcekey1, ..., sourcekeyN):將多個 HyperLogLog 合併爲一個 HyperLogLog。

l-zcgredis5:1>pfmerge myhll runoobkey runoobkey1
"OK"

八、發佈訂閱命令

psubscribe(pattern1, ..., patternN):訂閱一個或者多個給定模式的頻道。

punsubscribe(pattern1, ..., patternN):退訂全部給定模式的頻道。

subscribe(channel1, ..., channelN):訂閱給定的一個或多個頻道。

unsubscribe(channel1, ..., channelN):退訂給定的一個或多個頻道。

pubsub(subcommand, argument):查看訂閱與發佈系統狀態。

publish(channel, message):將信息發送到指定的頻道。

九、事務命令

描述

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

  • 批量操做在發送 EXEC 命令前被放入隊列緩存。
  • 收到 EXEC 命令後進入事務執行,事務中任意命令執行失敗,其他的命令依然被執行。
  • 在事務執行過程,其餘客戶端提交的命令請求不會插入到事務執行命令序列中。

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

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

單個 Redis 命令的執行是原子性的,但 Redis 沒有在事務上增長任何維持原子性的機制,因此 Redis 事務的執行並非原子性的。

事務能夠理解爲一個打包的批量執行腳本,但批量指令並不是原子化的操做,中間某條指令的失敗不會致使前面已作指令的回滾,也不會形成後續的指令不作。

命令

discard:取消事務,放棄執行事務塊內的全部命令。

exec:執行全部事務塊內的命令。

multi:標記一個事務塊的開始。

unwatch:取消 WATCH 命令對全部 key 的監視。

watch(key1, ..., keyN):監視一個(或多個) key ,若是在事務執行以前這個(或這些) key 被其餘命令所改動,那麼事務將被打斷。

示例

若是在 set b 處失敗,set a 已成功不會回滾,set c 還會繼續執行。

l-zcgredis5:1>multi
"OK"

l-zcgredis5:1>set a aaa
"QUEUED"

l-zcgredis5:1>set b bbb
"QUEUED"

l-zcgredis5:1>set c ccc
"QUEUED"

l-zcgredis5:1>exec
 1)  "OK"
 2)  "OK"
 3)  "OK"
l-zcgredis5:1>

十、腳本命令

描述

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

命令

eval(script, numkeys, key1, ..., keyN, arg1, ..., argN):執行Lua腳本。

evalsha(sha1, numkeys, key1, ..., keyN, arg1, ..., argN):執行 Lua 腳本。

script exists(script1, ..., scriptN):查看指定的腳本是否已經被保存在緩存當中。

script flush:從腳本緩存中移除全部腳本。

script kill:殺死當前正在運行的 Lua 腳本。

script load(script):將腳本 script 添加到腳本緩存中,但並不當即執行這個腳本。

示例

l-zcgredis5:1>EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
 1)  "key1"
 2)  "key2"
 3)  "first"
 4)  "second"
l-zcgredis5:1>

十一、鏈接命令

quit:關閉當前鏈接

auth(password):驗證密碼是否正確。

echo(message):打印 message 字符串。

select(index):切換到指定的數據庫。

ping:查看服務是否運行。

l-zcgredis5:1>ping
"PONG"

十二、服務器命令

client kill(ip:port):關閉客戶端鏈接。

client list:獲取鏈接到服務器的客戶端鏈接列表。

client setname(connection-name):設置當前鏈接的名稱。

client getname:獲取鏈接的名稱。

client pause(timeout):在指定時間內終止運行來自客戶端的命令。

cluster slots:獲取集羣節點的映射數組。

command:獲取 Redis 命令詳情數組。

command count:獲取 Redis 命令總數。

command getkeys:獲取給定命令的全部鍵。(不清楚)

command info(command-name1, ..., command-nameN):獲取指定Redis命令描述的數組。

time:返回當前服務器時間。一個包含兩個字符串的列表: 第一個字符串是當前時間(以 UNIX 時間戳格式表示),而第二個字符串是當前這一秒鐘已經逝去的微秒數。

config get(parameter):獲取指定配置參數的值,parameyer 爲 * 的時候,獲取全部配置信息。

config rewrite:對啓動 Redis 服務器時所指定的 redis.conf 配置文件進行改寫。

config set(parameter, value):修改 redis 配置參數,無需重啓。

config resetstat:重置 INFO 命令中的某些統計數據。

dbsize:返回當前數據庫中 key 的數量。

debug object(key):獲取 key 的調試信息。

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

flushdb:刪除當前數據庫中的全部 key。

flushall:刪除全部數據庫中的全部key。

info(section):獲取Redis服務器的各類信息和統計數值。section 爲空的話會顯示全部信息,section 值爲 Server、Clients、Memory、Persistence、Stats、Replication、CPU、Keyspace。

save:將數據同步保存到磁盤。

lastsave:返回最近一次 Redis 成功將數據保存到磁盤上的時間,以 UNIX 時間戳格式表示。

bgsave:將數據異步保存到磁盤。

bgrewriteaof:異步執行一個 AOF(AppendOnly File) 文件重寫操做。

monitor:實時打印出 Redis 服務器接收到的命令,調試用。實時轉儲收到的請求。

role:返回主從實例所屬的角色。

shutdown:將數據同步保存到磁盤,而後關閉服務。

slaveof(ip:port):改變複製策略設置。將當前服務器轉變爲指定服務器的從屬服務器(slave server)。若是當前服務器已是某個主服務器(master server)的從屬服務器,那麼執行 SLAVEOF host port 將使當前服務器中止對舊主服務器的同步,丟棄舊數據集,轉而開始對新主服務器進行同步。

slave no one:對一個從屬服務器執行命令 SLAVEOF NO ONE 將使得這個從屬服務器關閉複製功能,並從從屬服務器轉變回主服務器,原來同步所得的數據集不會被丟棄。利用『 SLAVEOF NO ONE 不會丟棄同步所得數據集』這個特性,能夠在主服務器失敗的時候,將從屬服務器用做新的主服務器,從而實現無間斷運行。

slowlog :管理 redis 的慢日誌。

sync:用於複製功能(replication)的內部命令。用於同步主從服務器。

相關文章
相關標籤/搜索