Redis 數據類型結構redis
1. 字符串String
經常使用操做命令以下:
set key value 存入單個字符串鍵值對
get key 獲取單個字符串值
mset key value [key value ...] 批量存入多個字符串鍵值對
mget key [key ...] 獲取多個字符串值
del key [key ...] 刪除鍵值對
expire key second 設置一個鍵的過時時間(秒)
setnx key value 若是 key 不存在,至關於set命令, 若是 key 不存在,什麼也不作,setnx 其實是 「set if not exists」 的簡寫json
原子加減:
incr key 將key中儲存的數字值加1,返回加1後的結果; 若是值不是數字,返回錯誤;key 不存在時,會建立一個key並返回1
decr key 將key中存儲的數字值減1,返回減1後的結果;key不存在時,會建立一個key,並返回-1
incrby key increment 將key中存儲的值加上increment,返回相加後的結果
decrby key decrement 將key中存儲的值減去decrement,返回相減後的結果數組
2. 數組List
常見操做命令:緩存
lpush key value 從左側向key對應的列表中加入一個或多個值
rpush key value 從右側向key對應的列表中加入一個或多個值
lpop key 返回並刪除key對應列表的頭數據
rpop key 返回並刪除key對應列表的尾數據
lrange key start end 根據起止座標獲取 key 對應的 list 值
llen key 獲取 key 對應的 list 的長度 分佈式
3. 哈希表 Hash
經常使用操做命令:
hset key field value 存儲一個哈希表 key 的鍵值
hget key field 獲取哈希表 key field 對應的鍵值
hmset key field value [field value ...] 批量存儲哈希表鍵值
hmget key field [field ...] 批量獲取哈希表中 field 對應的鍵值
hdel key field [field ...] 刪除哈希表中 field 對應的鍵值
hlen key 獲取哈希表 key 中 field 的個數
hgetall key 獲取哈希表 key 中的全部鍵值
hincrby key field incrememt 增長哈希表 key 中 field 字段的 數值性能
4 集合Set
經常使用操做命令:
sadd key member [member ...] 往集合key中存入元素,元素存在則忽略
smembers key 獲取集合 key 中全部元素
scard key 獲取集合 key 中的元素個數
srem key member [member ...] 從集合key中刪除元素
sismember key member 判斷 member 元素是否存在於集合 key 中
srandmember key [count] 從集合 key 中隨機選出 count 個元素
spop key [count] 從集合 key 中隨機取出 count 個元素,並刪除spa
運算:
sinter key [key ...] 取交集
sunion key [key ...] 取並集
sdiff key [key ...] 取差集
sinterstore destination key [key ...] 取交集,並將結果存入新集合 destination 中
sunionstore destination key [key ...] 取並集,並將結果存入新集合 destination 中
sdiffstore destination key [key ...] 取差集,並將結果存入新集合 destination 中對象
5. 有序集合 Zset
經常使用命令:
zadd key score member [score member ...] 往有序集合 key 中添加帶分值元素
zrange key start end 返回有序集合 key 中指定範圍的元素,按 score 正序排列
zrevrange key start stop 返回有序集合 key 中指定範圍的元素,按 score 倒序排列
zrem key member [member ...] 從有序集合 key 中刪除元素
zscore key member 返回有序集合 key 中元素 member 的分值
zincrby key increment member 爲有序集合 key 中元素 member 的分值加上 increment
zcard key 返回有序集合 key 中的元素的個數blog
6. 應用場景
-
對象緩存
1)set user:1 value( json 格式數據 )
2)mset user:1:name zhangsan user:1:age 23
3)hmset user 1:name zhangsan 1:age 23 -
分佈式鎖
setnx key true 開始執行業務前,返回1 表示獲取鎖成功,不然失敗,
setnx key true ex 10 nx ( 10 s 後過時)
del key 業務執行完後,釋放鎖 -
計數器
文章閱讀數統計:
新增閱讀 incr article:readcount:{文章id}
獲取數量 get article:readcount:{文章id} -
分佈式系統全局序列號
incrby orderId 3000,redis批量生產序列號提高性能 -
抽獎
使用 set 集合 srandmember、spop -
微博共同關注人
使用 set 集合 運算 -
電商購物車
key:用戶id(111),field:商品id(61234),value:商品數量 添加商品: hset shopCart:111 61234 1 添加商品數量:hincrby shopCart:111 61234 減小商品數量:hincrby shopCart:111 61234 -1 商品總數:hlen shopCart:111 刪除商品:hdel shopCart:111 61234 獲取購物車全部商品:hgetall shopCart:111