redis五大數據類型 hdx 1. 基本命令 2. String類型 3. List 4. set

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。

可用用作隊列,棧

4. set

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章