1. 程式人生 > >[筆記遷移][Redis][2]Redis資料型別

[筆記遷移][Redis][2]Redis資料型別

一、Redis五大資料型別概述

資料型別 說明
String 最基本的型別。二進位制安全,即Redis的String可以包含任何資料,如圖片或序列化的物件。 Redis中一個String型value最多可以為512M。
Hash類似Java中Map 一個鍵值對集合。Redis中一個Hash是一個String型的field和value的對映表,特別適合用於儲存物件。
List 簡單的String列表,按照插入順序排序。底層實際是一個雙向迴圈連結串列,因此可以新增一個元素至列表的頭部或尾部。
Set String型的無序無重複元素集合。通過HashTable實現。
Zset (sorted set) String型的元素集合,且不允許包含重複的成員。與Set不同的是每個元素都會關聯一個Double型的分數。 Redis正是通過分數來為集合中的成員進行從小到大的排序。ZSet的成員是唯一的,但分數卻可以重複。

二、Redis常用資料型別操作命令

  1. Redis Key 操作

    命令 說明
    KEYS {pattern} keys * 檢視當前庫所有鍵
    EXISTS {key} 判斷某個key是否存在於當前庫存在則返回1,否則返回0
    MOVE {key} {dbid} 將當前庫中key對應鍵值對移動到指定庫
    EXPIRE {key} {secs} 給當前庫中key(對應的鍵值對)設定過期時間超時即從當前庫中移除
    TTL {key} time to leave的縮寫,檢視key(對應的鍵值對)還有多少秒過期,過期則移除-1表示永不過期,-2表示已過期
    TYPE {key} 檢視指定key的型別
  2. Redis String 操作

    命令 說明
    SET {key} {val}
    GET {key}
    APPEND {key} {newVal} 向key對應的String型val追加newVal
    STRLEN {key} 獲取key對應的String型val長度
    INCR/DECR {key} 使key對應的val加/減1,只有數字才能加減
    INCRBY/DECRBY {key} {num} 使key對應的val加/減num,只有數字才能加減
    GETRANGE {key} {start} {end} 獲取key對應的String型val的start~end範圍的值,與subString類似若start=0, end=-1則會返回整個val
    SETRANGE {key} {start} {content} 從key對應val的start處開始設定值
    SETEX {key} {secs} {val} set with expire的縮寫新增鍵值對的同時指定過期時間
    SETNX {key} {val} set if not exist的縮寫 新增鍵值對前進行檢查是否存在。若不存在,則新增
    MSET {key1} {val1} {key2} {val2} more set的縮寫新增/設定多個鍵值對
    MGET {key1} {key2} more get的縮寫獲取多個鍵值對
    MSETNX {key1} {val1} {key2} {val2} more set if not exist 注意,不能是混合鍵值對組合
    GETSET {key} {new_val} 返回key對應的String型val,並設定為new_val
  3. Redis-List 操作 集合,類鏈棧:L-左-頂;R-右-底 因此,頭尾操作效率極高,對中間進行操作效率慘淡

    命令 說明
    LPUSH/RPUSH {key} {vals} 向key指定的List中新增vals元素集LPUSH:從vals元素集左面開始“壓棧”,最後一個元素為“棧頂”RPUSH:從vals元素集右面開始“壓棧”,第一個元素為“棧頂”若key指定的List不存在,則會建立並填充
    LRANGE {keys} {start} {end} 獲取“棧頂”從start~end範圍內的元素
    LPOP/RPOP {key} LPOP:彈出“棧頂”元素並返回 RPOP:彈出“棧底”元素並返回當List中的值全被“彈出”移除,其對應的key也就消失
    LINDEX {key} {index} 返回key指定的List中索引為index的元素(棧頂為0)
    LLEN {key} 返回key指定的List的長度
    LREM {key} {num} {val} 從key指定的List中刪除num個val(自棧頂開始),返回實際刪除的數量當num=0時,表示刪除List中全部指定的val
    LTRIM {key} {start} {end} 擷取key指定的List中start~end範圍內的值為新List並重新賦給key
    RPOPLPUSH {src_key} {dest_key} 彈出{src_key}指定List的“棧底”元素並新增值{dest_list}的“棧頂”後返回
    LSET {key} {index} {val} 將key對應的List中index所指元素設定為val
    LINSERT {key} BEFORE/AFTER {target_val} {new_val} 在key指定的List中已存在的target_val前/後插入新值
  4. Redis-Set 集合,相同元素只會被維持一份

    命令 說明
    SADD {key} {vals} 向key指定的Set新增vals元素集若key指定的Set不存在,則會建立並填充
    SMEMBERS {key} 獲取key指定Set的所有元素
    SISMEMBER {key} {val} 判斷val是否是key指定Set中的元素
    SCARD {key} 獲取key指定Set的大小
    SREM {key} {val} 刪除key指定Set中的val
    SRANDMEMBER {key} {num} 返回key指定Set中的num個隨機元素
    SPOP {key} 隨機彈出一個元素並返回
    SMOVE {src_key} {dest_key} {val} 將src_key指定的Set中的val移到dest_key所制定的Set中
    SDIFF {target_key} {src_key} 以target_key所指Set為參照,獲取差集
    SINTER {key1} {key2} 獲取交集
    SUNION {key1} {key2} 獲取並集
  5. Redis-Hash操作 Hash類似於Map,一個Hash可以維持多個鍵值對

    命令 說明
    HSET {out_key} {inner_key} {val} 新增/設定 {out_key}所指Hash中{inner_key}的值為{val}
    HGET {out_key} {inner_key} 獲取{out_key}所指Hash中{inner_key}的值
    HMSET {out_key} {inner_key1} {val1} {inner_key2} {val2} 同時設定{out_key}所指Hash中的多個鍵值對
    HMGET {out_key} {inner_key1} {inner_key2} 同時獲取{out_key}所指Hash中的多個鍵值對的值
    HGETALL {out_key} 獲取{out_key}所指Hash中所有鍵值對
    HDEL {out_key} {inner_key} 刪除{out_key}所指Hash中{inner_key}的鍵值對
    HLEN {out_key} 獲取{out_key}所指Hash中的鍵值對個數
    HEXISTS {out_key} {inner_key} 檢查{out_key}所指Hash中{inner_key}所指鍵值對是否存在
    HKEYS {out_key} 獲取{out_key}所指Hash中的所有鍵值對的key
    HVALS {out_key} 獲取{out_key}所指Hash中的所有鍵值對的val
    HINCRBY/HINCRYBYFLOAT {out_key} {inner_key} 使{out_key}所指Hash中{inner_key}對應的數值“加”
    HSETNX {out_key} {inner_key} {val} 檢查{out_key}所指Hash中是否包含{inner_key}所指鍵值對,若不包含,則新增
  6. Redis-Zset(sorted set) 在Set的基礎上,增加一個Score的位置( 成為一對 )。Set的結構:Key v1 v2 v3; Zset結構:Key score1 v1 score2 c2

    命令 說明
    ZADD {key} {score1} {val1} {score2} {val2} 向{key}所指的Zset中新增“score,val”的鍵值對
    ZRANGE {key} {start} {end} 獲取{key}所指Zset{start}到{end}範圍內的值預設情況下只返回值,沒有分數,可以在後面加添WITHSCORES以返回"score,val"鍵值對
    ZRANGEBYSCORES {key} {low_score} {high_score} 獲取{key}所指Zset中分數介於{low_score}與{high_score}的值預設包含上下界,可以使用({low_score} ({high_score} 代替以不包含上下界可以使用LIMIT {start_index} {steps} 對返回的結果的個數再一次限制
    ZREM {key} {val_under_score} 刪除{key}所指Zset中{val_under_score}這個值,即刪除元素
    ZCARD {key} 獲取{key}所指的Zset中的"score,val"鍵值對的個數
    ZCOUNT {key} {low_score} {high_score} 獲取{key}所指Zset中分數介於{low_score}和{high_score} 之間的個數
    ZRANK {key} {val} 獲取{key}所指的Zset中的{val}的下標
    ZSCORE {key} {val} 獲取{key}所指Zset中的{val}分數
    ZREVRANK {key} {val} 逆序獲取{key}所指Zset中{val}的下標
    ZREVRANGE {key} {start} {end} 逆序獲取{key}所指Zset{start}到{end}範圍內的值
    ZREVRANGEBYSCORES {key} {high_score} {low_score} 逆序獲取{key}所指Zset中分數介於{low_score}與{high_score}的值