Redis系列文章

學習redis的生態系統時,發現看過的東西很快就忘了,於是該系列博客就誕生了,如有不足之處請留言指教,若覺得還行還可以關注下我呀~~~
Ps: 持續更新…

Redis基礎篇


基本數據類型

類型 含義
String 字符串
Hash 散列
List 列表
Set 集合
Stored Set(zset) 有序集合
  • String 字符串
    • string 是 redis 最基本的類型,你可以理解成與 Memcached 一模一樣的類型,一個 key 對應一個 value。
    • string 類型是二進制安全的。意思是 redis 的 string 可以包含任何數據。比如jpg圖片或者序列化的對象。
    • string 類型是 Redis 最基本的數據類型,string 類型的值最大能存儲 512MB。
    	> SET robinson "robinson"
    	OK
    	> GET robinson 
    	"robinson"
    
  • Hash 散列
    • Redis hash 是一個鍵值(key=>value)對集合。
    • Redis hash 是一個 string 類型的 field 和 value 的映射表,hash 特別適合用於存儲對象。
    	> HMSET user name "jack" age "22"
    	OK
    	> HGET user name
    	"jack"
    	> HGET user age
    	"22"
    
  • List 列表
    • Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
    > lpush cache redis
    (integer) 1
    > lpush cache mongodb
    (integer) 2
    > lpush cache rabitmq
    (integer) 3
    > lrange cache 0 10
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    >
    
  • Set 集合
    • Redis 的 Set 是 string 類型的無序集合,不可重複。
    • 集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是 O(1)。
    > sadd name zhangsan
    (integer) 1
    > sadd name lisi
    (integer) 1
    > sadd name wangwu
    (integer) 1
    > sadd name zhaoliu
    (integer) 1
    > smembers name 
    1) "redis"
    2) "rabitmq"
    3) "mongodb"
    
  • Stored Set 有序集合
    • Redis zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員。
    • 不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來爲集合中的成員進行從小到大的排序。
    • zset的成員是唯一的,但分數(score)卻可以重複。
    > zadd car 0.5 dazhong
    (integer) 1
    > zadd car 0.4 baoshijie 0.3 benchi //批量添加
    (integer) 2
    > ZRANGE car 0 10
    1) "benchi"
    2) "baoshijie"
    3) "dazhong"
    > ZRANGE car 0 10
    1) "benchi"
    2) "baoshijie"
    3) "dazhong"
    > ZRANGEBYSCORE car 0.3 0.4
    1) "benchi"
    2) "baoshijie"
    > 
    

其實有關基本數據類型的操作還有很多,這裏就不一一列出,推薦大家參考菜鳥教程(傳送門)

高級數據類型

  • HyperLogLog 有序集合
    • Redis 在 2.8.9 版本添加了 HyperLogLog 結構。

    • Redis HyperLogLog 是用來做基數統計的算法,HyperLogLog 的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定 的、並且是很小的。

    • 在 Redis 裏面,每個 HyperLogLog 鍵只需要花費 12 KB 內存,就可以計算接近 2^64 個不同元素的基 數。這和計算基數時,元素越多耗費內存就越多的集合形成鮮明對比。

    • 但是,因爲 HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以 HyperLogLog 不能像集合那樣,返回輸入的各個元素。

指令 含義
PFADD key element [element …] 添加指定元素到 HyperLogLog 中。
PFCOUNT key [key …] 返回給定 HyperLogLog 的基數估算值
PFMERGE destkey sourcekey [sourcekey …] 將多個 HyperLogLog 合併爲一個 HyperLogLog

有關key的命令

指令 含義
DEL key 該命令用於在 key 存在時刪除 key。
DUMP key 序列化給定 key ,並返回被序列化的值。
EXISTS key 檢查給定 key 是否存在。
EXPIRE key seconds 爲給定 key 設置過期時間,以秒計。
EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 類似,都用於爲 key 設置過期時間。 不同在於 EXPIREAT 命令接受的時間參數是 UNIX 時間戳(unix timestamp)。
PEXPIRE key milliseconds 設置 key 的過期時間以毫秒計。
PEXPIREAT key milliseconds-timestamp 設置 key 過期時間的時間戳(unix timestamp) 以毫秒計
KEYS pattern 查找所有符合給定模式( pattern)的 key 。
MOVE key db 將當前數據庫的 key 移動到給定的數據庫 db 當中。
PERSIST key 移除 key 的過期時間,key 將持久保持。
PTTL key 以毫秒爲單位返回 key 的剩餘的過期時間。
TTL key 以秒爲單位,返回給定 key 的剩餘生存時間(TTL, time to live)。
RANDOMKEY 從當前數據庫中隨機返回一個 key 。
RENAME key newkey 修改 key 的名稱
RENAMENX key newkey 僅當 newkey 不存在時,將 key 改名爲 newkey 。
TYPE key 返回 key 所儲存的值的類型。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章