1. 基本命令
keys * #查看當前庫所有k
set k v #設置k, v
get k #獲取k
expire k 10 #設置key過期時間 單位秒
ttl k #查看k的剩餘時間
select 0 #切換數據庫 0/16 默認16個庫 配置文件中配置
flushdb #清空當前庫k
flushall #清空所有庫k
move k #移除k
exists k,k1 #查詢k是否存在
type k #查詢k對應的v存儲類型
2. String類型
append k v #追加字符串,如果k不存在就相當添加
strlen k #獲取字符串長度
-----------------------------
incr k #原子加1
decr k #原子減1
incrby k 10 #原子加10 10是步長 可用在瀏覽量
decrby k 10 #原子減10 10是步長
-----------------------------
getrange k 0 3 #截取字符串 從0位置-3位置 4個字符串
getrange k 0 -1 #去字符串所有內容
-----------------------------
setrange k 1 xxx #從下標位1開始替換後面的內容
-----------------------------
setex k v 60 #設置k,v,過期時間
-----------------------------
setnx k v #k不存在再設置值(常在分佈式鎖中使用)
-----------------------------
mset k1 v1 k2 v2 k3 v3 #批量設置k,v
msetnx k1 v1 k4 v4 #存在的key,值就不設置了
mget k1 k2 k3 #獲取多個key值
-----------------------------
getset k v #先獲取在設置, CAS 原子操作
e.g
114.116.230.154:6397> getset db redis
(nil)
114.116.230.154:6397> get db
"redis"
114.116.230.154:6397> getset db mongodb
"redis"
114.116.230.154:6397> get db
"mongodb"
3. List
list 可以用來實現隊列、棧,所有的命令都是以L開頭。
#從左向右添加數據,如果集合不存在創建集合
114.116.230.154:6397> lpush list one #lpush:從左向右添加,後添加的總是在頭部0的位置(棧)
(integer) 1
114.116.230.154:6397> lpush list two
(integer) 2
114.116.230.154:6397> lpush list three
(integer) 3
114.116.230.154:6397> lrange list 0 -1 #獲取list中的所有值
1) "three"
2) "two"
3) "one"
114.116.230.154:6397> lrange list 0 1 #獲取list中的區間值,如果獲取第一個值 lrange list 0 0
1) "three"
2) "two"
------------------------------------------
#從右向左添加數據,如集合不存在添加集合
114.116.230.154:6397> rpush list right #rpush:從右向左添加
(integer) 4
114.116.230.154:6397> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"
------------------------------------------
#從左邊或者右邊彈出元素
114.116.230.154:6397> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"
114.116.230.154:6397> lpop list #彈出左邊第一個元素,並移除
"three"
114.116.230.154:6397> lrange list 0 -1
1) "two"
2) "one"
3) "right"
114.116.230.154:6397> rpop list #彈出右邊第一個元素,並移除
"right"
114.116.230.154:6397> lrange list 0 -1
1) "two"
2) "one"
# lpush + lpop(棧),lpush + rpop(隊列)
-----------------------------------------
#獲取集合中指定下標元素
114.116.230.154:6397> lrange list 0 -1 #展示list集合中所有元素
1) "two"
2) "one"
114.116.230.154:6397> lindex list 0 #根據list集合下標獲取集合元素
"two"
114.116.230.154:6397> lindex list 1
"one"
-----------------------------------------
#獲取集合長度
114.116.230.154:6397> lrange list 0 -1
1) "two"
2) "one"
114.116.230.154:6397> llen list #獲取list集合長度
(integer) 2
-----------------------------------------
#移除集合中的指定元素值,並指定移除幾個
114.116.230.154:6397> lpush list one two three three #從左向右添加值
(integer) 4
114.116.230.154:6397> lrange list 0 -1
1) "three"
2) "three"
3) "two"
4) "one"
114.116.230.154:6397> lrem list 1 one #移除指定值one,並移除1個
(integer) 1
114.116.230.154:6397> lrange list 0 -1
1) "three"
2) "three"
3) "two"
(0.53s)
114.116.230.154:6397> lrem list 3 three #移除指定值three,並移除3個,但實際就2個所以都移除了。
(integer) 2
114.116.230.154:6397> lrange list 0 -1
1) "two"
---------------------------------------
#結合修剪,截取指定下標 n~m 的元素包含n,m的內容
114.116.230.154:6397> lrange mylist 0 -1
1) "h5"
2) "h4"
3) "h3"
4) "h2"
5) "h1"
114.116.230.154:6397> ltrim mylist 1 3 #ltrim:集合修剪操作,只保留下標1~3的元素
OK
114.116.230.154:6397> lrange mylist 0 -1
1) "h4"
2) "h3"
3) "h2"
---------------------------------------
#將一個集合的最後一個元素pop,push到另一個集合中
114.116.230.154:6397> lrange mylist 0 -1
1) "h6"
2) "h5"
3) "h4"
4) "h3"
5) "h2"
114.116.230.154:6397> rpoplpush mylist newlist #從mylist最後一個元素移除,到新列表newlist
"h2"
114.116.230.154:6397> lrange newlist 0 -1
1) "h2"
114.116.230.154:6397> lrange mylist 0 -1
1) "h6"
2) "h5"
3) "h4"
4) "h3"
---------------------------------------
#指定下標賦值
114.116.230.154:6397> lrange mylist 0 -1
1) "h6"
2) "h5"
3) "h4"
4) "h3"
114.116.230.154:6397> lset list 0 hdx #指定下標賦值list不存在報錯,所以先lpush或rpush
(error) ERR no such key
114.116.230.154:6397> lset mylist 1 h7 #向mylist集合的下標 1 處賦值 h7, 如下標不存在也會報錯
OK
114.116.230.154:6397> lrange mylist 0 -1 #結果原下標 1 處的 h5 被覆蓋
1) "h6"
2) "h7"
3) "h4"
4) "h3"
---------------------------------------
#指定內容元素前or後插入新元素
114.116.230.154:6397> lrange mylist 0 -1
1) "h6"
2) "h7"
3) "h4"
4) "h3"
114.116.230.154:6397> linsert mylist before h7 hdx #向mylist集合中h7元素前面插入hdx元素
(integer) 5
114.116.230.154:6397> lrange mylist 0 -1
1) "h6"
2) "hdx"
3) "h7"
4) "h4"
5) "h3"
# 操作類似一個連表 [before] Node [after]
小結
底層實現相當一個連表,比如lpush是向頭節點插入數據,rpush是向尾節點插入數據。可以向某個具體節點插入數據 比如 linsert。
可用用作隊列,棧