Redis支持五種數據類型
- String(字符串
- Hash(哈希)
- List(列表)
- Set(集合)
- zset(sorted set:有序集合)
類型 | 簡介 | 特性 | 場景 |
---|---|---|---|
String(字符串) | 二進制安全 | 可以包含任何數據,比如jpg圖片或者序列化的對象,一個鍵最大能存儲512M | — |
Hash(字典) | 鍵值對集合,即編程語言中的Map類型 | 適合存儲對象,並且可以像數據庫中update一個屬性一樣只修改某一項屬性值(Memcached中需要取出整個字符串反序列化成對象修改完再序列化存回去) | 存儲、讀取、修改用戶屬性 |
List(列表) | 鏈表(雙向鏈表) | 增刪快,提供了操作某一段元素的API | 1,最新消息排行等功能(比如朋友圈的時間線) 2,消息隊列 |
Set(集合) | 哈希表實現,元素不重複 | 1、添加、刪除,查找的複雜度都是O(1) 2、爲集合提供了求交集、並集、差集等操作 | 1、共同好友 2、利用唯一性,統計訪問網站的所有獨立ip 3、好友推薦時,根據tag求交集,大於某個閾值就可以推薦 |
Sorted Set(有序集合) | 將Set中的元素增加一個權重參數score,元素按score有序排列 | 數據插入集合時,已經進行天然排序 | 1、排行榜 2、帶權重的消息隊列 |
String(字符串)
string類型是二進制安全的,redis的string可以包含任何數據,如圖像、序列化對象。一個鍵最多能存儲512MB。二進制安全是指,在傳輸數據的時候,能保證二進制數據的信息安全,也就是不會被篡改、破譯;如果被攻擊,能夠及時檢測出來 。
-
設置鍵值 :
set key value
-
獲取鍵值 ,如果不存在此鍵則返回nil :
get key
-
設置多個鍵值:
mset key1 value1 key2 value2
-
獲取多個鍵值:
mget key1 key2
-
設置鍵值及過期時間,以秒爲單位 :
setex key seconds value
-
只有在 key 不存在時設置 key 的值。
setnx key value
-
同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。
MSETNX key value [key value ...]
-
返回 key 中字符串值的子字符
GETRANGE key start end
-
將給定 key 的值設爲 value ,並返回 key 的舊值(old value)。
GETSET key value
-
將key對應的value加1 。
INCR key
-
將key對應的value加整數 。
INCRBY key increment
-
將key對應的value減1 。
DECR key
-
將key對應的value減整數。
DECRBY key decrement
-
追加值
APPEND key value
-
獲取值長度
STRLEN key
hash
Redis hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。 Redis 中每個 hash 可以存儲 2的32次方 - 1 鍵值對(40多億)。
- 設置單個屬性 :
hset key field value
- 設置多個屬性 :
hmset key field1 value1 field2 value2 ...
- 只有在字段 field 不存在時,設置哈希表字段的值。
HSETNX key field value
- 獲取⼀個屬性的值 :
hget key field
- 獲取多個屬性的值 :
hmget key field1 field2 ...
- 獲取指定鍵所有的屬性 :
hkeys key
- 獲取指定鍵所有屬性的值:
hvals key
- 刪除屬性及值 :
hdel key field1 field2 ..
. - 刪除整個hash鍵及值 :
del key
- 判斷屬性是否存在 :
hexists key field
list
列表是簡單的string列表,按照插入順序排序,可以在列表的頭部或者尾部添加元素。
- 在左側插⼊數據 :
lpush key value1 value2 ...
- 在右側插⼊數據 :
rpush key value1 value2 ...
- 在指定元素的前或後插⼊新元素 :
linsert key before或after 現有元素 新元素
- 返回列表⾥指定範圍內的元素 :
lrange key start stop
- start、stop爲元素的下標索引
- 索引從左側開始,第⼀個元素爲0
- 索引可以是負數,表示從尾部開始計數,如-1表示最後⼀個元素
- 設置指定索引位置的元素值 :
lset key index value
- 索引從左側開始,第⼀個元素爲0
- 索引可以是負數,表示尾部開始計數,如-1表示最後⼀個元素
- 移出並獲取列表的第一個元素 :
lpop key
- 移出並返回列表最後一個元素 :
rpop key
- 刪除指定元素:
lrem key count value
- 將列表中前count次出現的值爲value的元素移除
- count > 0: 從頭往尾移除
- count < 0: 從尾往頭移除
- count = 0: 移除所有
- 獲取列表長度:
llen key
- 通過索引獲取列表中的元素:
lindex key index
set
⽆序集合,元素爲string類型,元素具有唯⼀性,不重複。說明:對於集合沒有修改操作。
- 添加元素 :
sadd key member1 member2 ...
- 返回集合元素個數:
scard key
- 返回key集合所有的元素 :
smembers key
zset
sorted set,有序集合,元素爲string類型,元素具有唯⼀性,不重複。每個元素都會關聯⼀個double類型的score,表示權重,通過權重將元素從⼩到⼤排序。說明:沒有修改操作。
- 添加元素:
zadd key score1 member1 score2 member2 ..
向鍵’a4’的集合中添加元素’lisi’、‘wangwu’、‘zhaoliu’、‘zhangsan’,權重分別爲4、5、6、3
-
返回指定範圍內的元素 :
zrange key start stop
-
返回元素個數:
zcard key
-
返回score值在min和max之間的成員 :
zrangebyscore key min max
-
返回成員member的score值 :
zscore key member
-
刪除指定元素 :
zrem key member1 member2 ..
-
刪除權重在指定範圍的元素:
zremrangebyscore key min max