Redis基本指令介紹

在公司專案上通常會用Redis做快取

這邊要就來介紹會用到的指令操作

如果作業系統是Linux可以直接到官網下載安裝
Windows可以在https://github.com/MicrosoftArchive/redis 下載

第一步要先啟動redis server
先cd 到redis資料夾

redis-server.exe redis.windows.conf

 

然後再開一個command輸入以下指令開啟redis client

redis-cli

如果成功的話會出現127.0.0.1:6379>

打開redis server後可以測試client端連線是否正常

redis-cli ping

成功連接會回傳Pong


命令回傳值的類型
status reply
error reply
integer reply (1或0)
bulk reply(字串)
multi-buld reply (多重字串)


修改配置

-p -h可以設定端口跟port
其他可以透過.conf檔設定
例如>redis-server ,cong檔路徑+檔名

CONFIG SET可以動態修改設定
但不是每個都可以設定


簡單指令
keys [pattern] 找符合正規表達的key

exists [key] 判斷key是否存在
有回傳0 沒有回傳1

del [key]刪除鍵
EX:redis-cli del 'redis-cli keys "user:*"'
可以一次刪除符合的

獲得key的型別
type [key]
可能得到string,hash,list,set,zset

字串類型
給值set key value
取值get key
遞增數字incr key  (value要是int)
增加指定數字incr key [數字]
遞減數字decr key
減少指定數字decrby key [數字]
增加指定浮點數incrbyfloat key [數字]
尾端附上值append key value
取得字串長度strlen key

同時設定/取得多個key-value
mget key [value…]
mset key value [key value]


Key的命名原則
對象類型:對象ID:對象屬性
如:post:article id:page.view


位元組操作
Getbit key offset
Setbit key offset value
Bitcount key [start] [end]
Bittop operation destkey key [key…]


散列類型Hash
結構:key>字段>字段值

可以儲存物件的屬性-值

給值hset key field value 
取值hget key field
設定好幾個field Hmset key field value [field value]
一次取得好幾個key  Hmget key field [field…]
Hgetall key

Hset不區分插入(insert)和更新(update),如果插入前field不存在會返回1,如果是更新操作會返回0

判斷field是否存在
Hexists key field
當field不存在時給值
Hsetnx key field value

增加數字
Hincr key field increment
刪除field
Hdel key field [field…]

只需要取得field或field value
Hkeys key
Hvals key

取得field數量
Hlen key

列表類型List
是一種double linked list

列表兩端增加元素
Lpush key value [value…]
Rpush key value [value…]
回傳值表示增加元素後的長度

列表兩端移除元素
Lpop key
Rpop key

取得元素個數
Llen key
(會直接讀取現成的值,而不會尋訪所有元素統計)

取得list範圍內元素
Lrange key start stop
(支援負index EX:-1是最右邊第一個元素)
Lrange key 0 -1 可以取得所有元素
(如果start<stop會回傳空列表
如果stop大於實際的索引範圍,會回傳最右邊元素)

刪除列表中前count個值是value的元素
Lrem key count value

count>0 從左邊開始刪除
count<0從右邊開始刪除
count=0 刪除所有值為value的元素

取得指定index的元素
Lindex key index    
針對index給值
Lset key index value

只保留指定範圍元素
Ltrim key start end
(指定索引之外的元素會刪除)

插入元素在特定值前或後
Linsert key before|after pivot value
從左到右找到值為pivot的元素,把value插進去

把元素從一個list轉到另一個list
rpoplpush source destination
從source右邊取出元素放到destination左邊

集合類型Set
元素是沒有順序且唯一

增加/刪除元素
Sadd key member [member…]
Srem key member [member…]

取得所有元素
Smembers key

判斷元素是否存在
Sismember key member
時間複雜度O(1)

集合運算
1.差集sdiff key [key…]

{1,2,3}-{2,3,4} ={1}
{2,3,4}-{1,2,3}={4}

2.交集
Sinter key [key…]
{1,2,3}&{2,3,4}={2,3}

3.聯集
Sunion key [key…]

獲得集合元素個數
Scard key

進行集合運算並儲存結果
Sdiffstore destination key [key…]
Sinterstore destination key [key…]
Sunionstore destination key [key…]
隨機取得集合中元素
Srandmember key [count]

Count >0 隨機取不重複元素
Count >元素個數 回傳全部元素
Count <0 隨機取|count|元素 但有可能會一樣

隨機取出一個元素
Spop key

有序集合類型Sorted List

增加元素
Zadd key score member [score member…]
如果member已存在,會用score替換原有分數
Score也可以用double

取得元素分數
Zscore key member

取得某個範圍內的元素列表
Zrange key start stop [withscores]
Zrevrange key start stop [withscores]
跟lrange類似 要同時取得分數可以加上withscores

取得指定分數範圍的元素
Zrangebyscore key min max [withscores] [limit offset count]
分數前加上”(“ 表示不包含 EX:80 (100   score>=80 score<100
正無窮大+inf
負無窮大-inf

limit offset count
在取得的元素列表向後偏移count個元素

Zrevrangebyscore key min max [withscores] [limit offset count]
分數從大到小排列 min跟max也跟上面是相反的

增加某個元素分數
Zincryby key increment member


取得元素數量
Zcard key

取得指定分數範圍的元素個數
Zcount key min max

刪除一個或多個元素
Zrem key member [member…]

按排名範圍刪除元素
Zremrangebyrank key start stop
按分數範圍刪除元素
Zremrangebyscore key start stop
取得元素排名
Zrank key member
Zrevrank key member

計算交集
Zinterstore destination numkeys key [key…] [weights weight [weight…]] [aggregate sum|min|max]