在公司專案上通常會用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]