[筆記遷移][Redis][2]Redis資料型別
阿新 • • 發佈:2018-12-16
一、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常用資料型別操作命令
-
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的型別 -
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 -
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前/後插入新值 -
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} 獲取並集 -
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}所指鍵值對,若不包含,則新增 -
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}的值