連線redis
redis-cli -h 192.168.2.215 -p 6379
檢視鍵
keys *
存取變數
set num 1
get num
字串操作
set str "hello"
append str "world"
strlen str
檢視型別
type num
type amap
type alist
檢視是否存在key
exists num
exists alist
hexists mmap email
切換資料庫(預設0資料庫
)
select 1
獲取多個key
mget num str
mset num 3 str "world"
bit操作
set fg "bar"
getbit fg 0
getbit fg 6
setbit fg 0 1
bitcount fg
原子操作
incr num
incrby num 3
decr num
decrby num 2
incrbyfloat num 2.1
#沒有decrbyfloat
incrbyfloat num -0.1
list操作
lpush alist a
lpush alist b
lpush alist c
rpush alist d
lpop alist
rpop alist
llen alist
-
獲取片段,包含最右邊的元素,支援負數索引
lrange alist 0 4
-
獲取所有元素
lrange alist 0 -1
-
從左邊開始刪除第一個值為p的元素
lrem alist 1 p
-
刪除所有值為p的元素
lrem alist 0 p
-
從右邊開始刪除第一個值為p的元素
lrem alist -1 p
-
查詢索引為0的元素
lindex alist 0
-
查詢右邊第一個元素
lindex alist -1
-
通過索引賦值
lset alist 2 y
-
刪除指定索引外的元素
ltrim alist 0 3
-
在指定值w後插入
linsert alist after w k
-
在指定值w之前插入
linsert alist before w x
-
從右邊pop一個元素到目標列表
rpoplpush alist blist
按其他鍵排序
lpush slist 2 1 3
set itemscore:1 50
set itemscore:2 100
set itemscore:3 -10
sort slist by itemscore:* desc
集合操作
sadd myset a
sadd myset b c
-
檢視所有
smembers myset
-
檢視集合元素個數
scard myset
-
刪除元素
srem myset c
-
判斷元素是否在集合中
sismember myset c
-
集合運算
sadd seta 1 2 3
sadd setb 2 3 4
-
計算差集
sdiff seta setb
-
計算差集並儲存到setj
sdiffstore setj seta setb
sadd setc 2 3
sdiff seta setb setc
-
計算交集
sinter seta setb
-
計算交集並儲存到setx
sinterstore setx seta setb
-
計算並集
sunion seta setb
-
計算並集並儲存到setu
sunionstore setu seta setb
-
隨機獲取元素
srandmember seta 2
-
從集合隨機彈出一個元素
spop seta
-
集合排序,預設將元素轉為雙精度浮點,從小到大排序
sort seta
-
按照字典順序
sort setn alpha
有序集合
-
列表是雙向連結串列實現的,獲取靠近兩端的元素速度快,當元素增多時訪問中間元素變慢
-
比較適合新鮮事、日誌這種很少查詢中間元素的應用
-
有序集合是使用雜湊表/跳躍表實現的,讀取中間元素也很快
-
列表不能簡單調整某個元素的位置,有序集合可以
-
有序集合會給每個元素計算分數,更耗記憶體,是所有集合中最高階的
zadd sortset 89 tom 90 jim 100 david
-
更新jim分數
zadd sortset 78 jim
-
按照得分從小到大檢視元素
zrange sortset 0 -1
-
按照得分從大到小檢視元素
zrevrange sortset 0 -1
-
檢視元素和得分
zrange sortset 0 -1 withscores
-
檢視得分
zscore sortset david
-
按照得分範圍檢視,包含90
zrangebyscore sortset 90 100
-
不包含90
zrangebyscore sortset (90 100
-
無窮,從第二個人開始取3個人
zrangebyscore sortset (80 +inf limit 1 3
-
增加某個元素分數
zincrby sortset -3 tom
-
獲取元素個數
zcard sortset
-
獲取指定範圍內元素個數
zcount sortset 90 100
zcount sortset (89 +inf
-
刪除一個或多個元素
zrem sortset jim
-
按照排名刪除
zremrangebyrank sortset 0 2
-
按照分數範圍刪除分數
zremrangebyscore sortset (60 80
-
獲取排名,從小到大
zrank sortset jim
-
獲取排名,從大到小
zrevrank sortset jim
-
計算有序集合交集
zadd t1 1 a 2 b
zadd t2 10 a 20 b
-
2為元素個數
zinterstore rs 2 t1 t2
-
aggregate為新集合元素分數的計算方式
zinterstore rs1 2 t1 t2 aggregate min
zinterstore rs2 2 t1 t2 aggregate max
zinterstore rs3 2 t1 t2 aggregate sum
-
增加權重
zinterstore rs4 2 t1 t2 weights 1 0.1
zrange rs2 0 -1 withscores
map操作
hset amap name "psersia"
//update or insert a key
hset amap email "a@g.com"
hget amap name
hgetall amap
hmset mmap username persia password pw age 3
hmget mmap username age
hgetall mmap
//當欄位不存在時賦值,atomic
hsetnx mmap email p@gmail.com
hincrby mmap age 2
//如果不存在,則建立一個key
hincrby mmap score 60
hdel mmap score
hkeys mmap
hvals mmap
hlen mmap
事務
multi
sadd "user:1:following" 2
sadd "user:2:followers" 1
exec
-
watch的變數在watch之後被修改
#於是事務不執行,count值為2
set count 1
watch count
set count 2
multi
set count 3
exec
get count
設定快取時間
set mycache 100
-
15分鐘後失效,-1為永久存活
expire mycache 900
-
重新設定生存時間
expire mycache 90
#以毫秒為單位
pexpire mycache 1000
檢視剩餘的存活時間
ttl mycache
-
取消快取,改為永久存活
persist mycache
-
set也可以清除生存時間
set mycache hello
ttl mycache
lpush,rpop實現訊息佇列
lpush q hello world
lpush q test msg
lrange q 0 -1
rpop q
//帶10秒的超時時間
brpop q 10
//超時時間設為0,當沒有元素時一直阻塞
brpop q 0
釋出訂閱模式
publish mychannel hi
subscribe mychannel
//匹配mychannel.1,mychannel.10
psubscribe mychannel.?*
unsbuscribe mychannel