上一篇 :5. 基礎知識
下一篇 :7. 三種特殊資料類型
文章目錄
- 1. 概述
- 2. Redis-Key
- 3. String(字元串)
- 4. List (清單)
- 5. Set (集合)
- 6. Hash
- 7. ZSet (有序集合)
1. 概述

- 下面所說的指令都會很重要,以後在其他架構中使用,也同樣需要這些指令。
2. Redis-Key
- 官網中的指令:http://www.redis.cn/commands.html
- 下面指令中 【XX】表示需要自己輸入的
- [XX] 表示選填
- 添加鍵值對
set 【key】 【value】

- 檢視鍵對應的值
get【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 檢視目前庫的所有鍵
keys *
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 判斷某個鍵是否存在
EXISTS 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 移除某個鍵值對
move 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 設定某鍵值對過期時間
EXPIRE 【key】【seconds】
可以實作自定義的緩存Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 檢視設定定時過期的屬性的剩餘時間
ttl 【name】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 檢視某個鍵的值是什麼類型的
type 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
3. String(字元串)
- 向已有的鍵的值後面追加字元串
APPEND 【key】【追加的值】
- 如果追加的值不存在,就會建立一個
- 擷取字元串的長度
STRLEN 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 實作 i++ 操作
INCR 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 可以設定步長的自增
INCRBY 【key】【步長】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 實作 i-- 的操作
DECR 【key】
6. 設定步長的自減
> DECRBY 【key】【步長】
- 獲得字元串範圍
GETRANGE 【key】【start】【end】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 替換字元串中的某一段
SETRANGE 【key】【起始位置】【替換的值】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 建立一個值,并且直接設定過期時間
SETEX【key】【second】【value】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 當某個值不存在則建立,存在則不建立
SETNX 【key】【value】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 9、10 兩條在分布式鎖中會常常使用
- 同時設定多個值
MSET 【key】【value】 [【key】【value】……]
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 同時查詢多個值
MGET 【key】 [【key】……]
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 多個值同時插入,當所有值不存在則建立,某一個存在則不建立
MSETNX 【key】【value】 [【key】【value】……]
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
-
存入一個 user 對象
方式一:
使用 JSON 字元串作為值存入
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) 方式二:
把對象的名字和屬性名結合,整體作為鍵; 屬性的值作為鍵的值。
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - getset 組合指令
GETSET 【key】【value】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- String 類型的應用場景:
- 數字 :計數器
- 對象緩存存儲
- ……
4. List (清單)
- 在 Redis 中可以利用 List 實作 棧、隊列、阻塞隊列。
- 所有的 List 指令都是 L / R 開頭的
- 插入值
LPUSH 【key】 【value】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 擷取清單的值
LRANGE 【key】 【start】【end】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 從同尾部插入資料
RPUSH 【key】 【value】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 移除一個元素
從頭部(L)移除
LPOP 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) 從尾部(R)移除
RPOP 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 擷取某個下标對應的值
LINDEX 【key】【index】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 清單的長度
LLEN 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 移除指定的值
LREM 【key】【count】【元素】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 截斷 List ,保留一部分
LTRIM 【key】【start】【end】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 移除清單的最後一個元素,并且添加到另一個清單
RPOPLPUSH 【source】【distinction】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 判斷多個清單是否存在
EXISTS 【key】[【key】……]
-
向清單的指定下标插入值
這個指定的下标原先必須有值
LSET 【key】【index】【value】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 在指定元素的前/後插入值
LINSERT 【key】【before | after】【指定元素】【插入的值】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 小結
- List 實際上是一個雙連結清單,是以可以在 left、right、指定 Node 前後插入值
- 如果 key 不存在,建立新的連結清單
- 如果 key 存在,新增内容
- 如果移除了所有值,空連結清單,也就沒有用了,就移除了
- 從兩邊(left、right)插入或修改效率較高,從中間插入或修改效率較低
- 如果 從左邊插入(LPUSH)、從右邊讀取(RPOP)那就是一個棧
- 如果 從左邊插入(LPUSH)、從左邊讀取(LPOP)那就是一個隊列
5. Set (集合)
- Set 中的值是不能重複的
- Set 相關的操作都是 S 開頭
- 插入一個值
SADD 【key】【value】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 查詢集合中所有元素
SMEMBERS 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 判斷集合中是否存在某值
SISMEMBER 【key】【value】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 查詢集合元素個數
SCARD 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 取出集合中元素
SREM 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 随機選取一個元素
SRANDMEMBER 【key】[【count】]
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 随機删除值
SPOP 【key】[【count】]
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 把一個指定的值移動到另一個集合中
SMOVE 【source】【destination】【元素】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) -
多個集合的差集、交集、并集
兩個集合 set1 、set2
差集Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) SDIFF 【key1】【key2】 [【key_N】]
交集Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) SINTER 【key1】【key2】 [【key_N】]
并集Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) SUNION 【key1】【key2】 [【key_N】]
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 舉例 :微網誌等網站的關注使用者 ;或者 QQ、微信的好友 都可以放在一個集合中。交集就可以得出共同關系或者共同好友 ; 差集/并集就可以做出推薦好友等功能。
6. Hash
- 類似 Map 集合 —— key= {key= value}
- Hash 的相關操作都以 H 開頭
- 插入值
HSET 【key】 【字段名】【字段值】 [ 【字段名_N】【字段值_N】]
或
HMSET 【key】 【字段名】【字段值】 [ 【字段名_N】【字段值_N】]
這兩效果一樣
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 取出值
HGET 【key】【 field】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 同時擷取多個值
HMGET 【key】【field1】[ 【field2】【field_N]
- 擷取所有值
HGETALL 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 删除指定的字段
HDEL 【key】【field1】[【 field2】【field_N】]
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 檢視 Hash 的長度
HLEN 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 判斷某個字段是否存在
HEXISTS 【key】【field】
- 隻擷取字段名
HKEYS 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 隻擷取所有的字段值
HVALS 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 指定自增、自減
HINCRBY 【key】【field】【步長】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 如果存在就不能建立,不存在才能建立
HSETNX 【key】【field】【value】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 應用:Hash 用來存放經常變更資料、對象資訊
- 比如可以存放一個對象 : user = {name ,age}
7. ZSet (有序集合)
- 在插入的時候可以增加一個 score 來進行分組排序
- ZSet 的相關操作都是 Z 開頭
- 添加資料
ZADD 【key】 [ NX|XX ] [ CH ] [ INCR ] score member [score member …]
可選參數解釋
- XX: 僅僅更新存在的成員,不添加新成員。
- NX: 不更新存在的成員。隻添加新成員。
- CH: 修改傳回值為發生變化的成員總數,原始是傳回新添加成員的總數 (CH 是 changed 的意思)。更改的元素是新添加的成員,已經存在的成員更新分數。 是以在指令中指定的成員有相同的分數将不被計算在内。注:在通常情況下,ZADD傳回值隻計算新添加成員的數量。
- INCR: 當ZADD指定這個選項時,成員的操作就等同ZINCRBY指令,對成員的分數進行遞增操作。
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 查詢集合元素
ZRANGE 【key】 【start】【 stop】[withscores]
可選參數說明:
- withscores:顯示 score ,如果需要顯示直接在後面加上這個單詞即可
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 升序排序
ZRANGEBYSCORE 【key】【min】【max】[withscores]
可選參數說明:
- withscores:顯示 score ,如果需要顯示直接在後面加上這個單詞即可
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 降序排序
ZREVRANGE 【key】 【start】【end】[withscores]
可選參數說明:
- withscores:顯示 score ,如果需要顯示直接在後面加上這個單詞即可
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 移除指定元素
ZREM 【key】【元素】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 查詢 ZSet 集合中元素個數
ZCARD 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合) - 統計 score 在某區間内的元素個數
ZCOUNT 【key】 【min】【 max】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
- 實際應用:set 能做的這個也可以 ;排序 ;帶權重
- 比如:學生成績排序 ; 排行榜 ;普通的消息 score 設為 1 ,緊急的消息設為 2 。