1. 程式人生 > 實用技巧 >Redis的資料型別及使用場景

Redis的資料型別及使用場景

1.redis 的資料型別

  • String 字串
  • Hash 雜湊
  • List 列表
  • Set 集合
  • ZSet(Sorted Set) 有序集合

2.使用場景

2.1 String

  • 使用者token

    可以用redis來記錄使用者token並設定過期時間

    小龍測試:0>set 1001 tokenslkdjflksdjflkdsj ex 600
    "OK"
    小龍測試:0>get 1001
    "tokenslkdjflksdjflkdsj"
    小龍測試:0>TTL 1001
    "592"
    
  • 主鍵記錄

    分散式的服務可以通過redis來記錄主鍵的最大值

    小龍測試:0>set t_user 1
    "OK"
    
    小龍測試:0>incrby t_user 1
    "2"
    
    小龍測試:0>incrby t_user 1
    "3"
    
    小龍測試:0>get t_user
    "3"
    
  • ip訪問

    可以通過redis記錄ip訪問次數進行黑名單的限制

    
    小龍測試:0>set 127.0.0.1 1 ex 600
    "OK"
    
    小龍測試:0>incrby 127.0.0.1 1
    "2"
    
    小龍測試:0>ttl 127.0.0.1
    "556"
    
    小龍測試:0>get 127.0.0.1
    "2"
    

2.2 Hash

  • 使用者資訊等物件的儲存

    小龍測試:0>HSET zhucw name "zhuchunwang"
    "1"
    
    小龍測試:0>HSET zhucw age "30"
    "0"
    
    小龍測試:0>HSET zhucw id "100"
    "1"
    
    小龍測試:0>HGET zhucw
    "ERR wrong number of arguments for 'hget' command"
    
    小龍測試:0>HGET zhucw id
    "100"
    
    小龍測試:0>HGETALL zhucw
     1)  "age"
     2)  "30"
     3)  "name"
     4)  "zhuchunwang"
     5)  "id"
     6)  "100"
    

2.3 List

  • 訊息佇列 & 電商秒殺

    # 從左側往mq中放入元素
    小龍測試:0>lpush mq message1
    "1"
    小龍測試:0>lpush mq message2
    "2"
    # 從右側往mq中放入訊息
    小龍測試:0>rpush mq 小龍測試:0>message3
    "3"
    # 檢視mq長度
    小龍測試:0>llen mq
    "3"
    # 檢視mq從第一個到最後一個(所有元素)
    小龍測試:0>lrange mq 0 -1
     1)  "message2"
     2)  "message1"
     3)  "message3"
     # 檢視mq從第一個到第二個
    小龍測試:0>lrange mq 0 1
     1)  "message2"
     2)  "message1"
    小龍測試:0>lrange mq 1 2
     1)  "message1"
     2)  "message3"
    # 從左邊擷取一個
    小龍測試:0>ltrim mq 0 1
    "OK"
    小龍測試:0>lrange mq 0 -1
     1)  "message2"
     2)  "message1"
    小龍測試:0>lpush mq message4
    "3"
    小龍測試:0>lrange mq 0 -1
     1)  "message4"
     2)  "message2"
     3)  "message1"
    # 從左邊取出一個
    小龍測試:0>lpop mq
    "message4"
    小龍測試:0>lrange mq 0 -1
     1)  "message2"
     2)  "message1"
    # 從左邊新增兩個 message 和 5
    小龍測試:0>lpush mq message 5
    "4"
    # 從右邊取走一個
    小龍測試:0>rpop message
    null
    小龍測試:0>rpop mq
    "message1"
    小龍測試:0>lrange mq 0 -1
     1)  "5"
     2)  "message"
     3)  "message2"
    

2.4 SET

  • 好友集合

    # 新增元素
    小龍測試:0>SADD zcw aaa
    "1"
    小龍測試:0>SADD zcw bbb
    "1"
    小龍測試:0>SADD zcw ccc
    "1"
    小龍測試:0>SADD zcw ccc
    "0"
    # 檢視元素
    小龍測試:0>smembers zcw
     1)  "aaa"
     2)  "ccc"
     3)  "bbb"
    小龍測試:0>SADD xm aaa
    "1"
    小龍測試:0>SADD xm ddd
    "1"
    小龍測試:0>SADD xm ddd
    "0"
    小龍測試:0>smembers xm
     1)  "ddd"
     2)  "aaa"
    # 以zcw為基準,xm中沒有的
    小龍測試:0>sdiff zcw xm
     1)  "ccc"
     2)  "bbb"
    # zcw 和 xm的交際
    小龍測試:0>sinter zcw xm
     1)  "aaa"
    

2.5 ZSET

  • 電商排序、熱搜等

    # 新增元素
    小龍測試:0>ZADD phone 100 huawei
    "1"
    
    小龍測試:0>ZADD phone 90 xiaomi
    "1"
    
    小龍測試:0>ZADD phone 110 apple
    "1"
    
    小龍測試:0>ZADD phone 80 vivo
    "1"
    
    # 檢視元素  從小到大
    小龍測試:0>ZRANGE phone 0 10 WITHSCORES
     1)  "vivo"
     2)  "80"
     3)  "xiaomi"
     4)  "90"
     5)  "huawei"
     6)  "100"
     7)  "apple"
     8)  "110"小龍測試:0>
    # 檢視元素 分值從大到小
    小龍測試:0>Zrevrange phone 0 10 withscores
     1)  "apple"
     2)  "110"
     3)  "huawei"
     4)  "100"
     5)  "xiaomi"
     6)  "90"
     7)  "vivo"
     8)  "80"