Redis可以存儲鍵與5種不同資料結構類型之間的映射,這5種資料結構類型分别為string(字元串),list(清單),set(集合),hash(散列),zset(有序集合),下面将分别對這5種資料類型的控制指令進行總結,熟話說好記性不如爛筆頭,友善以後檢視。
1. 字元串指令
Redis種的字元串有三種類型的值:位元組,整數和浮點數
(1)指令清單
SET:SET key value ------設定存儲在給定鍵種的值
GET:GET key value ------擷取存儲在給定鍵種的值
DEL:DEL key ------删除存儲在給定鍵種的值(這個指令可以用于所有類型)
INCR:INCR key ------将鍵對應的值加1
DECR:DECR key ------将鍵對應的值減1
INCRBY:incrby key number ------将鍵對應的值加number
DECRBY:decrby key number ------将鍵對應的值減number
APPEND:append key value ------将值value追加到給定鍵key目前村粗的值的末尾
GETRANGE:getrange key start end ------擷取從start到end範圍内的字串
SETRANGE:setrange key offset val ------将從offset偏移量開始的字串設定指定值val
GETBIT:getbit key offset ------傳回位串中偏移量為offset的二進制位值
SETBIT:setbit key offset val ------位串中偏移量為offset的二進制位值設定為val
BITCOUNT:biitcount key [start end] ------統計二進制位串裡面值位1的二進制位數量
BITOP:bitop operation dest-key key1 [key2...] ------對一個或多個二進制位串執行包括并、或、異或、非在内的任意一種位運算操作
(2)示例
(3)注意事項
a. 如果對一個不存在的鍵或者一個儲存了空串的鍵執行自增或自減操作,那麼Redis在執行操作時會将這個鍵的值當作0來處理
b. 即使在設定鍵時輸入的值位字元串,但隻要這個值可以可以被了解為整數,就可以當作整數來處理
c. GETRANGE指令由以前的SUBSET指令改名而來的,如果是2.6或以上redis版本,使用getrange()方法來擷取字串
2. 清單指令
(1)一些常用的清單指令
RPUSH:rpush key value [value1...] ------将一個或多個值添加到清單的右端
LPUSH:lpush key value [value1...] ------将一個或多個值添加到清單的左端
RPOP:rpop key ------移除并傳回清單最右端的元素
LPOP:lpop key ------移除并傳回清單最左端的元素
LINDEX:lindex key offset --------傳回清單中偏移量為offset的元素
LRANGE:lrange key start end ------傳回清單中偏移量在[satrt,end]範圍内的元素,包括satrt和end
LTRIM:ltrim key start end ------對清單進行修剪,隻保留從start到end範圍内的元素,包括start和end
(2)阻塞式的清單彈出指令以及在清單之間元素的移動
BLPOP blpop key1 [key2...] timeout ------從一個非空清單中彈出位于最左端的元素,或者在timeout秒之内阻塞并等待可彈出的元素
BRPOP
BPOPLPUSH bpoplpush source-key dest-key ------從原始清單彈出最右端的元素并壓入目标清單左端,并傳回這個元素
BRPOPLPUSH BRPOPLPUSH source-key dest-key timeout ------從原始清單彈出最右端的元素并壓入目标清單左端,并傳回這個元素,如果source-key為空阻塞等待
3. 集合指令
Redis的集合以無序的方式來存儲多個各不相同的元素,可以快速的對集合進行添加,删除、元素檢查、組合和關聯等操作
(1)常用集合指令
SADD:sadd key item [item...] ------将一個或多個元素添加到集合中
SREM:srem key item [item...] ------從集合中移除一個或多個元素
SISMEMBER:sismember key item ------檢查item是否存在于集合key裡面
SCARD:scard key ------傳回集合包含的元素的數量
SMEMBERS:smembers key ------傳回集合包含的所有元素
SRANDMEMBER:srandmember key [count] ------從集合裡随機的傳回一個或多個元素
SPOP:spop key ------随機地移除幾個中的一個元素,并傳回被移除的元素
SMOVE:smove source-key dest-key item ------如果原集合包含item,從原集合移除item并将item添加到集合目标集合,成功傳回1,否則傳回0
(2)組合和關聯指令
SDIFF:sdiff key1 [key2...] ------傳回那些存在于第一集合key1,但不存在于其他集合中的元素
SDIFFSTORE:sdiffstore dest-key key1 [key2...] -------将SDIFF的結果存到目标集合中
SINTER:sinter key1 [key2...] ------傳回那些同時存在于所有集合中的元素
SINTERSTORE:sinterstore dest-key key1 [key2] ------将SINTER的結果放到目标集合中
SUNION:sunion key1 [key2...] ------傳回那些至少存在于一個集合中的元素
SUNIONSTORE:sunionstore dest-key key1 [key2...] ------将SUNION的結果放到表集合中
(3)示例
4. 散列指令
Redis的散列将多個鍵值對存儲在Redis的鍵裡面
(1)散列常用指令
HSET:hset key-name key value ------為散列添加鍵值對
HGET:hget key-name key ------得到散列的鍵值對
HMSET:hmset key-name key value [key name...] -------為散列設定一個或多個鍵值對
HMGET:hmget key-name key [key...] ------得到散列的一個或多個鍵值對
HDEL:hdel key-name key [key...] ------删除散列裡面的一個或多個鍵值對
HLEN:hlen key-name ------傳回散列包含的鍵值對數量
HEXISTS:hexists key-name key ------檢查鍵值是否在散列中
HKEYS:hkeys key-name ------得到散列的所有鍵值
HVALS:hvals key-name ------得到散列的所有鍵對應的值
HGETALL:hgetall key-name ------得到散列的說有鍵值對
HINCRBY:hincrby key-name key number ------将鍵key的值加上整數number
HINCRBYFLOAT:hincrbyfloat key-name key number ------将鍵key的值加上浮點數number
5. 有序集合指令
和散列存儲着鍵與值之間的映射類似,有序集合也存儲着成員與分值之間的映射,并且提供了分值處理指令,以及和根據分值大小有序地擷取或掃描成員和分值的指令
(1)常有有序集合指令
ZADD:zadd key-name score number [score number...] ------将帶有分值的成員添加到有序集合
ZREM:arem key-name number [number...] ------從有序集合裡面移除指定的成員,并傳回被移除成員的數量
ZCARD:zcard key-name ------傳回有序集合包含的成員數量
ZINCRBY:zincrby key-name increment number ------将number成員的分值加上increment
ZCOUNT:zcount key-name min max ------傳回分值介于min和max之間的成員數量
ZRANK:zrank key-name merber ------傳回成員member在有序集合中的排名
ZRANGE:zrange key-name start stop [withscores] ------傳回排名介于start和stop之間的成員,如果給定了withscores則分值一起傳回
ZSCORE:zscore key-name number ------傳回成員number的分值
(3)有序集合更進階指令
ZREVRANK:zrevrank key-name number ------傳回有序集合裡成員number的排名,按照分值從大到小的排列
ZREVRANGE:zrevrange key-name start stop [withscores] ---- 傳回zrange的反序内容
ZREVRANGEBYSCORE:zrevrangebyscore key-name min max [withscores] [limit offset count] ------傳回有序集合中,分值介于min和max之間的所有成員,并按照分值大小的順序傳回
ZREMRANGEBYRANK:zremrangebyrank key-name satrt stop ------移除有序集合中排名介于satrt和stop之間的所有成員
ZREMRANGEBYSCORE:zremrangebyscore key-name min max ------移除有序集合中分值介于satrt和stop之間的所有成員
ZINTERSTORE:zinterstore dest-key key-count key1 [key2...] [WEIGHTS weight [weight...]] [AGGREGATE SUM|MIN|MAX] ------對給定的有序集合執行類似集合的交集運算
ZUNIONSTORE:zunionstore dest-key key-count key1 [key2...] [WEIGHTS weight [weight...]] [AGGREGATE SUM|MIN|MAX] ------對給定的有序集合執行類似集合的并集運算
(4)示例
6. 釋出與訂閱指令
釋出(publish)與訂閱(subscribe)的特點是訂閱者負責訂閱頻道(channel),發送者負責向頻道發送二進制字元串消息,每當由消息被發送到給定頻道時,頻道的所有訂閱者都會收到消息。
SUBSCRIBE:subscribe channel [channel] ------訂閱給定的一個或多個頻道
UNSUBSCRIBE:unsubcribe channel [channel] ------退訂給定的一個或多個頻道
PUBLISH:publish channel [channel...] ------向給定頻道發送消息
PSUBSCRIBE:psubscribe pattern [pattern] ------訂閱與給定模式相比對的所有頻道
PUNSUBSCRIBE:punsubscribe pattern [pattern] ------退訂給定的模式,如果執行時沒有給定任何模式,那退訂所有模式
7. 小試牛刀
簡單示例:實作文章釋出,擷取和投票
(1)文章釋出
(2)文章擷取
(3)投票
(4)對文章擷取進行測試
輸出:
文章同步釋出: https://www.geek-share.com/detail/2755069520.html
參考文章:
Redis從基礎指令到實戰之散列類型(Hash)