天天看點

Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)

上一篇 :5. 基礎知識

下一篇 :7. 三種特殊資料類型

文章目錄

  • 1. 概述
  • 2. Redis-Key
  • 3. String(字元串)
  • 4. List (清單)
  • 5. Set (集合)
  • 6. Hash
  • 7. ZSet (有序集合)

1. 概述

Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  • 下面所說的指令都會很重要,以後在其他架構中使用,也同樣需要這些指令。

2. Redis-Key

  • 官網中的指令:http://www.redis.cn/commands.html
  • 下面指令中 【XX】表示需要自己輸入的
  • [XX] 表示選填
  1. 添加鍵值對
    set 【key】 【value】
    ![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20201020163803263.png#pic_center)
               
  2. 檢視鍵對應的值
    get【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 檢視目前庫的所有鍵
    keys *
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 判斷某個鍵是否存在
    EXISTS 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  5. 移除某個鍵值對
    move 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  6. 設定某鍵值對過期時間
    EXPIRE 【key】【seconds】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
    可以實作自定義的緩存
  7. 檢視設定定時過期的屬性的剩餘時間
    ttl 【name】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  8. 檢視某個鍵的值是什麼類型的
    type 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)

3. String(字元串)

  1. 向已有的鍵的值後面追加字元串
    APPEND 【key】【追加的值】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  • 如果追加的值不存在,就會建立一個
  1. 擷取字元串的長度
    STRLEN 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 實作 i++ 操作
    INCR 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 可以設定步長的自增
    INCRBY 【key】【步長】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 實作 i-- 的操作
    DECR 【key】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)

6. 設定步長的自減

> DECRBY 【key】【步長】
           
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 獲得字元串範圍
    GETRANGE 【key】【start】【end】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 替換字元串中的某一段
    SETRANGE 【key】【起始位置】【替換的值】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 建立一個值,并且直接設定過期時間
    SETEX【key】【second】【value】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 當某個值不存在則建立,存在則不建立
    SETNX 【key】【value】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  • 9、10 兩條在分布式鎖中會常常使用
  1. 同時設定多個值
    MSET 【key】【value】 [【key】【value】……]
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 同時查詢多個值
    MGET 【key】 [【key】……]
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 多個值同時插入,當所有值不存在則建立,某一個存在則不建立
    MSETNX 【key】【value】 [【key】【value】……]
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 存入一個 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 (有序集合)
  2. 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 開頭的
  1. 插入值
    LPUSH 【key】 【value】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 擷取清單的值
    LRANGE 【key】 【start】【end】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 從同尾部插入資料
    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 (有序集合)
  1. 移除一個元素

    從頭部(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 (有序集合)
  2. 擷取某個下标對應的值
    LINDEX 【key】【index】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 清單的長度
    LLEN 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 移除指定的值
    LREM 【key】【count】【元素】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 截斷 List ,保留一部分
    LTRIM 【key】【start】【end】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 移除清單的最後一個元素,并且添加到另一個清單
    RPOPLPUSH 【source】【distinction】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 判斷多個清單是否存在
    EXISTS 【key】[【key】……]
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 向清單的指定下标插入值

    這個指定的下标原先必須有值

    LSET 【key】【index】【value】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 在指定元素的前/後插入值
    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 開頭
  1. 插入一個值
    SADD 【key】【value】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 查詢集合中所有元素
    SMEMBERS 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 判斷集合中是否存在某值
    SISMEMBER 【key】【value】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 查詢集合元素個數
    SCARD 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 取出集合中元素
    SREM 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 随機選取一個元素
    SRANDMEMBER 【key】[【count】]
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 随機删除值
    SPOP 【key】[【count】]
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 把一個指定的值移動到另一個集合中
    SMOVE 【source】【destination】【元素】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 多個集合的差集、交集、并集

    兩個集合 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 開頭
  1. 插入值

    HSET 【key】 【字段名】【字段值】 [ 【字段名_N】【字段值_N】]

    HMSET 【key】 【字段名】【字段值】 [ 【字段名_N】【字段值_N】]

    這兩效果一樣

    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 取出值
    HGET 【key】【 field】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 同時擷取多個值
HMGET 【key】【field1】[ 【field2】【field_N]
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 擷取所有值
    HGETALL 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 删除指定的字段
    HDEL 【key】【field1】[【 field2】【field_N】]
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 檢視 Hash 的長度
    HLEN 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 判斷某個字段是否存在
HEXISTS 【key】【field】
Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 隻擷取字段名
    HKEYS 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 隻擷取所有的字段值
    HVALS 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 指定自增、自減
    HINCRBY 【key】【field】【步長】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 如果存在就不能建立,不存在才能建立
    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 開頭
  1. 添加資料
    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 (有序集合)
  2. 查詢集合元素
    ZRANGE 【key】 【start】【 stop】[withscores]
    可選參數說明:
    • withscores:顯示 score ,如果需要顯示直接在後面加上這個單詞即可
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 升序排序
    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 (有序集合)
  4. 降序排序
    ZREVRANGE 【key】 【start】【end】[withscores]
    可選參數說明:
    • withscores:顯示 score ,如果需要顯示直接在後面加上這個單詞即可
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  5. 移除指定元素
    ZREM 【key】【元素】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  6. 查詢 ZSet 集合中元素個數
    ZCARD 【key】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  7. 統計 score 在某區間内的元素個數
    ZCOUNT 【key】 【min】【 max】
    Redis-狂神(6. 五大基本資料類型)學習筆記1. 概述2. Redis-Key3. String(字元串)4. List (清單)5. Set (集合)6. Hash7. ZSet (有序集合)
  • 實際應用:set 能做的這個也可以 ;排序 ;帶權重
  • 比如:學生成績排序 ; 排行榜 ;普通的消息 score 設為 1 ,緊急的消息設為 2 。

繼續閱讀