Redis資料型別的常見操作
Redis資料型別
①String(字串)②Hash(雜湊,類似java裡的map)
是一個String型別的field和value的對映表
③List(列表)
Redis內實際是一個linkedlist 前後可以插入
④Set(集合)
String型別的無序集合,它是通過hashtable實現的
⑤Zset(sorted set:有序集合)
是String型別的元素集合,每個元素關聯一個double型別的分數,Zset成員是唯一的,但是分數可以重複
(1) Redis鍵(key)
keys *
exists key 判斷某個key是否存在
move key db 移動當前庫到其他db , move key3 2
expire key 秒鐘 為key設定過期時間 expire k2 10
ttl key 檢視key還有多久過期 -1永不過期 -2表示已過期
type key 檢視你的key是什麼型別
(2)Redis 字串(String)單值單value
set/get/del/append/strlen append追加 strlen長度
incr/decr/incrby/decrby 一定要是數字才能進行加減 (incr/decr 增減1)(incrby/decrby 增減多個 incrby k2 2)
getrange/setrange
getrange 獲取指定區間範圍內的值,類似between and (從 0 到 -1 表示全部 ) set key5 abcde getrange key5 0 2 ——》abc
setrange 設定指定區間範圍內的值 格式是 setrange key5 4
setex(set with expire) setex k4 10 v4 設定key4的值是v4 過期時間10秒
setnx(set if not exist) setnx k1 v11 如果key1不存在 設值
mset/mget/msetnx(設定多個值)
mset k1 v1 k2 v2 k3 v3
mget k1 k2 k3
msetnx 多個如果不存在 msetnx k3 v3 k4 v4 都不成功
(3)Redis列表(List)單值多value (rpush順序正常)
lpush/rpush/lrange
lpush list1 1 2 3 4 5 從左插入 lrange 0 -1 得到 5 4 3 2 1
rpush list2 1 2 3 4 5 從右插入 得到 1 2 3 4 5
lpop/rpop
lpop list1 得到 5 rpop list1 得到1 lrange list1 0 -1 得到 4 3 2
lindex 按照索引下標獲得元素 從上到下 lindex list 3 0
llen長度 llen list1 得到3
lrem key 刪N個value
ltrim key 開始index 結束index 擷取得到的值後在賦值給當前key
rpoplpush list1 list2 右側出棧 左側進棧
lset key index value 對下標的值的內容進行賦值
linsert key before/after 值1 值2
總結
字串連結串列,左右都可以插入
如果鍵不存在 建立新的連結串列
如果已存在 新增內容
如果值全移除 鍵消失
連結串列頭尾操作效率極高,中間操作效率低
(4)Redis集合 set 單值多value
①sadd(向集合中新增元素,重複不計入) / smembers(列出集合中的所有元素)/ SISMEMBER key member(判斷 member 元素是否集合 key 的成員)
②scard 獲取集合裡面元素的個數
③srem key value 刪除集合中的元素
④srandmember key N (隨機出N個數)
⑤spop key [count] 隨機移除集合中的元素
⑥smove key1 key2 在key1裡某個值 作用是將key1裡的某個值賦值給key2
⑦數學集合類
sdiff 差集 sdiff set01 set02
sinter 交集
sunion 並集
(5)Redis雜湊(hash)KV 模式模式不變 但V是一個鍵值對(pojo型別 )
*hset/hget/hmset(many)/hmget/hgetall/hdel
hset user name z3 ---->hget user name (z3)
hlen
hexists key 在key裡面的某個值得key
*hkeys/hvals hkeys user (得到所有的key)
hincrby/hincrbyfloat
hsetnx(不存在 set)
(6)Redis集合Zset(sorted set)
在set基礎上,加一個score值,之前set是key1 v1 v2 v3 現在 zset是key1 score1 v1 score2 v2 (key是一個 value2個是一個整體即 score value)
①zadd/zrange (zadd zset1 10 v1 20 v2)
ZRANGE salary 0 -1 WITHSCORES # 顯示整個有序整合員
ZRANGE salary 1 2 WITHSCORES # 顯示有序集下標區間 1 至 2 的成員
②zrangebyscore key 開始score 結束score ( 不包含
③zrem key NScore 刪除元素
④zcard/zcount key score 區間
⑤zrank key values值 作用是取得下標值
⑥zscore key value 獲得score
⑦zrevrank key values值 ,逆序獲得下標值
⑧zrevrange 開始分數到結束分數
⑨zrevrangebyscore by score