學習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 所儲存的值的類型。 |