redis-cli 常用命令及用法


連接Redis服務器

 

連接Redis方案一:在docker環境啟動redis-cli

docker exec -it myredis redis-cli
如果redis服務器有密碼,需要帶-a參數
docker exec -it myredis redis-cli -a "your password"
myredis表示redis容器名稱
-a 密碼

 

連接Redis方案二:使用windows版redis-cli.exe客戶端啟動redis-cli

redis-cli.exe -h 127.0.0.1 -p 6379
如果redis服務器有密碼,需要帶-a參數
redis-cli.exe -h 127.0.0.1 -p 6379 -a "123456"
-h 服務器地址
-p 端口
-a 密碼

 

redis-cli 常用命令及用法

 

String類型

 

set命令

設置string類型,設置成功返回 OK
格式:set key value [ex seconds | px millisedonds ] [nx | xx]
Redis里的key中可以使用冒號(:),這樣可以做出命名空間的效果。
set user:myname "black cat yee"
set user:myname "black cat yee" ex 120
ex參數設置過期時間120秒


get命令

讀取string類型,讀取成功返回值,讀取失敗返回(nil)
get user:myname

getset命令

一個key - value,然后把設置之前的值返回.
set user:myname "yee"
getset user:myname "cat yee"
返回yee,注意取回來的是本次設置之前的值,因為get在前,set在后。


incr命令

自增類型,自增1,返回自增后的值
incr age

decr命令

自減類型,自減1,返回自減后的值
decr age

incrby命令

按某個長度自增,返回自增后的值
incrby age 10

decrby命令

按某個長度自減,返回自減后的值
decrby age 10

mset 命令

同時設置多個字符串key
mset country 中國 provice 湖南 city 長沙

mget命令

同時獲取多個key的值
mget country provice city

exists命令

判斷key是否存在,存在返回1,不存在返回0
exists country

del命令

刪除key,刪除成功返回1,刪除失敗返回0
del city

同時刪除多個key,返回實際刪除成功的數值
del city zipcode email

expire命令

設置某個key的過期時間
格式:expire key 時間(秒)
expire myname 10
設置myname鍵的過期時間為10秒

ttl 命令
查看某個key的離過期時間還剩余多少秒
ttl myname
查看myname這個緩存key離過期時間還剩余多少秒,返回-1表示未設置過期時間,返回-2表示已經過期了,返回0或正數表示剩余的過期時間

 

List類型


lpush命令

向List的左側(頭部)添加一個新元素,可以一次性添加多個元素,返回List的總長度

格式: lpush key member [member 2] [member n]
lpush mylist "a"
lpush mylist "b" "c" "d"

rpush命令

向List的右側(尾部)添加一個新元素,可以一次性添加多個元素,返回List的總長度
格式: rpush key member [member 2] [member n]
rpush mylist "1"
rpush mylist "2" "3" "4"

LRange命令

可以按索引下標范圍取出一個List類型某段范圍的值
格式:LRange list-key 起始索引 結束索引
如果想獲取整個list,起始索引用0,結束索引用-1,-1表示最后一個元素
Range mylist 0 3
LRange mylist 0 -1
起始索引為List的起始索引位置,結束索引為List的結束索引位置,結束索引為-1的時候,取出從0索引到后面所有索引范圍的值


LPOP命令

從LIst左側取出並刪除一個元素,返回取出元素的值,如果list不存在,則返回null
LPOP mylist

RPOP命令

從List右側取出並刪除一個元素,返回取出元素的值,如果list不存在,則返回null
RPOP mylist
當LPOP或RPOP彈出最后一個元素時, 這個list鍵同時會被刪除

Ltrim 命令

可以從右邊開始對Listf元素進行裁剪,格式為 LTrim listKey start end,返回結果是OK
格式:Lrim list-key start end
Ltrim mylist 0 3
裁前掉右邊3個元素


BRPOP和BLPOP

這兩個命令與RPOP和LPOP類似,如果元素有值,則立即返回最左邊或最右邊的值,但是當List里沒有元素的時候,它可以等待一定的時間,如果這段時間有新元素添加到了List里,那么就會停止等待並返回該元素,否則就會一直等待直到設定的時間結束,然后返回null
BRPOP listKey 等待時間(秒)
BLPOP listKey 等待時間(秒)

BRPOP mylist 5
BLPOP mylist 5
例子里表示等待5秒。如果等待時間為0,則會永遠等待,要慎用。


llen命令

返回List的長度
格式:llen list-key
llen mylist

 

Set類型(無序集合類型)

sadd命令

添加新元素到set,可以同時添加多個元素,如果添加了重復元素,會刪除重復的元素,它的元素順序是無序的,不會按先來后到的順序顯示。

返回添加成功的元素個數
格式:sadd set-key member [member 2] [member n]
sadd myset 789
給myset添加789這個元素,返回1
sadd myset a b c d e e e
這個例子會給myset添加a b c d e 五個元素,多余的e元素自動刪除,返回5

smembers 命令

獲取set所有元素,返回的元素列表是無序的。
smembers myset

sismember 命令

判斷某個元素是否在set里,存在則返回1,不存在則返回0.
sismember myset c

sinter 命令

返回交集,可以返回兩個或兩個以上set的交集,返回每個set集合共同存在的元素。
格式:sinter key1 [key2] [key3]
例:
del myset1 myset2 myset3
sadd myset1 1 2 3 4 5
sadd myset2 3 4 5 6 7
sadd myset3 5 6 7 8 9

sinter myset1 myset2
返回: 3 4 5

sinter myset1 myset2 myset3
返回: 5


sinterstore 命令

返回交集,可以返回兩個或兩個以上set的交集,返回每個set集合共同存在的元素。
然后將交集結果保存到目標set。如果只有一個set需要合並的話,那么就相當於是復制。
格式:sinterstore 目標set-key key1 [key2] [key3]
例:
del myset1 myset2 myset3
sadd myset1 1 2 3 4 5
sadd myset2 3 4 5 6 7
sadd myset3 5 6 7 8 9
sinter myset myset1 myset2 myset3
這個例子,myset的元素為: 5

sunion命令

返回並集,返回多個set之間的並集,並去掉重復的元素
格式:sunion key1 [key2] [key3]
例:
del myset1 myset2 myset3
sadd myset1 1 2 3 4 5
sadd myset2 3 4 5 6 7
sadd myset3 5 6 7 8 9

sunion myset1 myset2
返回 1 2 3 4 5 6 7

sunion myset1 myset2 myset3
返回 1 2 3 4 5 6 7 8 9


sunionstore命令

對多個set集合的元素進行合並,並去掉重復的元素,然后保存到目標set中
格式:sunionstore 目標set-key key1 [key2] [key3]
del myset1 myset2 myset3
sadd myset1 1 2 3 4 5
sadd myset2 3 4 5 6 7
sadd myset3 5 6 7 8 9
sunionstore myset myset1 myset2 myset3
這個例子,myset的元素為 1 2 3 4 5 6 7 8 9,myset以前的值被覆蓋

 

sdiff命令

返回差集,返回第一個集合里面有,而第二個,並且第三個,並且第n個集合里面沒有的元素,只要后面任意一個集合有第一個集合的元素,都不返回。
格式:sdiff key1 [key2] [key3]
del myset1 myset2 myset3
sadd myset1 1 2 3 4 5
sadd myset2 4 5 6 7 8
sadd myset3 1 7 8 9 10

sdiff myset1 myset2
返回 1 2 3

sdiff myset1 myset3
返回 2 3 4 5

sdiff myset1 myset2 myset3
返回 2 3


sdiffstore命令

返回差集,返回第一個集合里面有,而第二個,並且第三個,並且第n個集合里面沒有的元素,只要后面任意一個集合有第一個集合的元素。
然后將結果保存到目標set集合
格式:sdiffstore 目標set-key key1 [key2] [key3]
del myset1 myset2 myset3
sadd myset1 1 2 3 4 5
sadd myset2 4 5 6 7 8
sadd myset3 1 7 8 9 10
sdiffstore myset myset1 myset2 myset3
這個例子,myset的元素為 2 3


spop命令

隨機從set中移除一個或多個元素並返回,格式:spop setKey [返回元數個數],
返回元素個數可寫可不寫,不寫則隨機返回1個元素,否則隨機返回指定個元素
如果[返回元素個數]超過set元素的總個數,則返回全部元素
spop myset
spop myset 3
spop myset表示隨機返回一個
spop myset 3 表示顧及機返回三個


scard 命令

返回set元素的總個數,如果set不存在,返回0
scard myset
如果myset不存在則返回0,存在則返回set元素總個數

srandmember命令,可以隨機獲取set里面的一個或多個元素,但不會移除他們。當獲取的set元素的key不存在時,返回null。當指定的元數個數大於set里元素的總個數時,返回所有。
格式:srandmember setKey [number]
例:srandmember myset
srandmember myset 3

 

Sorted SET 有序集合類型

Sorted Set有點像Set和Hash的結合體,和Set一樣,它里面的元素是唯一的,類型是String,所以它可以理解為就是一個Set。

但是Set里面的元素是無序的,而Sorted Set里面的元素都帶有一個浮點值,叫做分數(score),所以這一點和Hash有點像,因為每個元素都映射到了一個值。
Sorted Set是有序的,規則如下:
如果A.score > B.score,那么A > B
如果A.score == B.score,那么A和B的大小就通過比較字符串來決定,而A和B的字符串是不會相等的,因為Sorted Set里面的值都是唯一的。

zadd命令

可以添加元素到Sorted Set,可以同時添加多個元素,分數(score)可以重復,但值不能重復,重復的值不會被添加進去,返回本次成功添加元素的個數。
格式:zadd sortedSetKey score value [score value] [score value]
zadd myzset 10 "Li 1"
zadd myzset 20 "Li 2"
可以同是用zadd添加多個元素
zadd myzset 30 "Li 3" 40 "Li 4" 40 "Li 5"

zrange 命令

按分數由低到高把Sorted Set的所有元素顯示出來
格式:zrange key startScore endScore [withscores]
zrange myzset 0 -1
zrange myzset 0 -1 withscores
withscores參數把對應的分數顯示出來

zrevrange 命令

按分數由高到低把Sorted Set的所有元素顯示出來,與zrange反序顯示
格式:zrevrange key startScore endScore [withscores]
zrange myzset 0 -1
zrange myzset 0 -1 withscores
withscores參數把對應的分數顯示出來

zrangeByScore 命令

可以按分數范圍顯示sorted set的部分元素,只顯示在范圍內的元素
格式:zrangebyscore key 分數下限 分數上限
zrangebyscore myzset 0 59

zremrangebyscore 命令

按分數范圍刪除元素,返回刪除元素的個數
格式:zremrangebyscore key startScore endScore
zremrangebyscore myzset 30 40

zrank 命令

按分數從低到高獲得sorted set里面某個元素值的排名,如果該元素不存在,返回空。排名從0開始,0表示排第一,1表示排第二,2表示排第三。
格式:zrank key member
zrank myzset "yee 2"
返回排名

zrevrank 命令

按分數從高到低獲得sorted set里面某個元素值的排名,如果該元素不存在,返回空。排名從0開始,0表示排第一,1表示排第二,2表示排第三。
格式:zrevrank key member
zrevrank myzset "yee 2"
返回排名

 

Hash類型

hash有點像javascript里面的object對象,一個hash里面可以存儲多個field-value,每個field相當於一個二級key。

hash里面的值作為string類型存儲,但是如果filed里面的值可以解釋為數字,也可以對其進行自增或自減操作。

 

hset命令

設置hash里面的值,返回設置field的個數,但是當某個field已經存在時,這個field的值不會覆蓋,會hset失敗。
格式:hset hash-key field1 value1 [field2 value2 ...]
hash中的key也可以使用冒號(:),這樣可以做出命名空間的效果。
hset user:yee name "black cat"
可以同時設置多個field及值,返回filed的個數。
hset user:yee name "black cat"
hset user:yee age 20 born "2000-6-9" addr "shang hai"

hmset 命令

設置hash里多個field,如果被設置的field已經存在,就更新field的值,不存在則添加一個新的 field。
格式 hmset hash-key field1 value1 [field2 value2 ...]
hmset user:yee name "black cat" age 18

hsetnx 命令

如果hash里存在某個field,則不會添加field並返回0,如果不存在field,則添加新的field並返回1。
格式:hsetnx hash-key field value
hsetnx user:yee tel 15099996666

hget命令

獲取hash key里單個field的值,如果key或filed不存在,則返回null
格式 :hget hash-key field
hget user:yee name


hmget 命令

獲取hash key里多個field的值。如果field不存在則返回null。
格式:hmget hash-key field1 [field2 ...]
hmget user:yee name age addr


hgetall 命令

獲取某個hash-key中的所有field名稱及值,field與value都返回
格式:hgetall hash-key
hgetall user:yee

hincrby 命令

如果hash里某個field值的類型可以轉換成數值,可以用來做自增或自減操作,返回自增或自減后的值。
格式 hincrby hash-key field incrment
incrment為正數表示自增,為負數表示自減,如果field不存在,新增一個field。
hincrby user:yee count 1
hincrby user:yee count -1

hincrbyfloat 命令

如果hash里某個field值的類型可以轉換成數值,可以用來自增或自減少數,返回自增或自減后的值。如果 field不存在,則新增field。
格式: hincrbyfloat hash-key field increment
hincrby user:yee count 3.2
hincrby user:yee count -2.1

hdel 命令

刪除某個hash里的字段,可以同時刪除多個field,返回刪除field的個數,如果field不存在,就忽略刪除,並且不計入刪除個數。
格式: hdel hash-key field [field ...]
hdel user:yee addr count

hexists 命令

判斷hash某個field是否存在,存在返回1,不存在返回0。
格式:hexists hash-key field
hexists user:yee name

hkeys 命令

返回某個hash里的所有field的名稱數組。
格式:hkeys hash-key
hkeys user:yee

hvals 命令

返回某個hash里所有field的值數值
格式:hvals hash-key
hvals user:yee

hlen 命令

返回某個hash里所有field的總個數。
格式:hlen hash-key
hlen user:yee

 

其它


flushall命令

清理所有key,全部刪除

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM