概述
redis是基於key-value 我們所說的數據類型實際是 key-value 中的 value 。文章主要介紹的是redis 幾個重要的數據類型的使用。
簡單使用
//keys pattern 獲取某種匹配的key
例如 : keys *
set foo 1
//獲取某個key 對應的 value 是什麼類型的
例如 : type foo
//某個key-value 是否存在
例如 : EXISTS foo
//刪除鍵
例如 :DEL foo
數據類型使用
我們前面說的 redis 的儲存數據結構的格式爲 :key-value 的格式,其中 key 爲 String , 而 value 取下面幾種數據類型:
string
Redis 中的數據相當於
HashMap<String,String> map = new HashMap<String,String>();
示例 :
> set hello world
OK
> get hello
world
散列類型
類似於:
HashMap<String,HashMap<String,String>> map = new HashMap<String,HashMap<String,String>>();
示例 :
> 127.0.0.1@6379 connected!
## 設置一個 哈希值
> hset car price 500
1
## 設置第二個哈希值
> hset car name BMW
1
## 單獨拿出第一個哈希值
> hget car price
500
## 一起拿出來
> HMGET car price name
500
BMW
列表類型
類似於:
HashMap<String,Node<String> hashmap = new HashMap<String,Node<String>();
其中 value 是個雙向鏈表 ,獲取靠近兩端的數據速度極快, 而當元素增多後 ,訪問中間數據的數據會較慢,所以它更加適合實現如 “新鮮事” 或 “日誌” 這種很少訪問中間元素的應用
集合類型
類似於:
HashMap<String,List<String>>
示例 :
> sadd list 1 2 3 4 48 5 54 32
8
> SMEMBERS list
1
2
3
4
5
32
48
54
有序集合類型
類似於:
HashMap<String,Set<String>>
有序集合類型是使用散列表 和 跳躍表實現的,所以即使讀取位於中間部分的數據速度也很快 (時間複雜度是 O(Log(N))), 但是有序隊列要比列表類型更耗費內存
示例:
> zadd settest 70 jim 60 amy 90 mike
3
> ZSCORE settest jim
70
小結
今天小結一下一些 redis 常用的命令,介紹了幾個redis重要的數據結構。
參考資料
-《redis設計及實現》
- http://doc.redisfans.com (推薦一看)
- https://redis.io/topics/distlock (redis 分佈式鎖參考)