redis支援5種資料類型,分別是String,List,Hash,Set,Zset和Hash。
redis是一個高效能的key-value資料庫,在介紹它的5種資料類型之前,先介紹key的相關命令。
key—鍵
通常用如下的鍵命令來管理redis的鍵:
1 DEL key
該命令用於在key存在時刪除key。
2 DUMP key
序列化給定key,並返回被序列化的值。
3 EXISTS key
檢查給定key是否存在。
4 EXPIRE key seconds
為給定key設定到期時間。
5 EXPIREAT key timestamp
EXPIREAT的作用和EXPIRE類似,都用於為key設定到期時間。不同在於EXPIREAT命令接受的時間參數是 UNIX 時間戳記(unix timestamp)。
6 PEXPIRE key milliseconds
設定key的到期時間以毫秒計。
7 PEXPIREAT key milliseconds-timestamp
設定key到期時間的時間戳記(unix timestamp) 以毫秒計
8 KEYS pattern
尋找所有符合給定模式(pattern)的key 。
9 MOVE key db
將當前資料庫的key移動到給定的資料庫db當中。
10 PERSIST key
移除key的到期時間,key將持久保持。
11 PTTL key
以毫秒為單位返回key的剩餘的到期時間。
12 TTL key
以秒為單位,返回給定key的剩餘存留時間(TTL,time to live)。返回-1表示永不到期,返回-2表示已到期。
13 RANDOMKEY
從當前資料庫中隨機返回一個key 。
14 RENAME key newkey
修改key的名稱
15 RENAMENX key newkey
僅當newkey不存在時,將key改名為newkey 。
16 TYPE key
返回key所儲存的值的類型。 String-字串
String類型是redis最基本的資料類型,它是二進位安全的,即redis的String類型可以存放任何資料,比如圖片或者序列化的對象。
下面是用於管理String類型資料的相關命令:
1 SET key value
設定指定 key 的值
2 GET key
擷取指定 key 的值。
3 GETRANGE key start end
返回 key 中字串值的子字元。(下標從0開始,GETRANGE key 0 -1表示返回整個字串)
4 GETSET key value
將給定 key 的值設為 value ,並返回 key 的舊值(old value)。
5 GETBIT key offset
對 key 所儲存的字串值,擷取指定位移量上的位(bit)。
6 MGET key1 [key2..]
擷取所有(一個或多個)給定 key 的值。
7 SETBIT key offset value
對 key 所儲存的字串值,設定或清除指定位移量上的位(bit)。
8 SETEX key seconds value
將值 value 關聯到 key ,並將 key 的到期時間設為 seconds (以秒為單位)。
9 SETNX key value
只有在 key 不存在時設定 key 的值。
10 SETRANGE key offset value
用 value 參數覆寫給定 key 所儲存的字串值,從位移量 offset 開始。
11 STRLEN key
返回 key 所儲存的字串值的長度。
12 MSET key value [key value …]
同時設定一個或多個 key-value 對。
13 MSETNX key value [key value …]
同時設定一個或多個 key-value 對,若且唯若所有給定 key 都不存在,才能設定成功。
14 PSETEX key milliseconds value
這個命令和 SETEX 命令相似,但它以毫秒為單位設定 key 的存留時間,而不是像 SETEX 命令那樣,以秒為單位。
15 INCR key
將 key 中儲存的數字值增一。
16 INCRBY key increment
將 key 所儲存的值加上給定的增量值(increment) 。
17 INCRBYFLOAT key increment
將 key 所儲存的值加上給定的浮點增量值(increment) 。
18 DECR key
將 key 中儲存的數字值減一。
19 DECRBY key decrement
key 所儲存的值減去給定的減量值(decrement) 。
20 APPEND key value
如果 key 已經存在並且是一個字串, APPEND 命令將 value 追加到 key 原來的值的末尾。
List-列表
清單類型List是簡單地字串列表,它按照插入順序進行排序,可以添加一個元素到列表的頭部(左邊)或者尾部(右邊),其底層實際上是一個鏈表。
List資料類型的相關命令如下:
1 BLPOP key1 [key2 ] timeout
移出並擷取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待逾時或發現可彈出元素為止。
2 BRPOP key1 [key2 ] timeout
移出並擷取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待逾時或發現可彈出元素為止。
3 BRPOPLPUSH source destination timeout
從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它;如果列表沒有元素會阻塞列表直到等待逾時或發現可彈出元素為止。
4 LINDEX key index
通過索引擷取列表中的元素
5 LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者後插入元素
6 LLEN key
擷取列表長度
7 LPOP key
從列表頭部移出並擷取第一個元素
8 LPUSH key value1 [value2]
將一個或多個值插入到列表頭部
9 LPUSHX key value
將一個或多個值插入到已存在的列表頭部
10 LRANGE key start stop
擷取列表指定範圍內的元素,LRANGE key 0 -1表示全部元素
11 LREM key count value
從列表頭部開始移除指定個數和值的列表元素
12 LSET key index value
通過索引設定列表元素的值
13 LTRIM key start stop
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。
14 RPOP key
從列表尾部移出並擷取第一個元素
15 RPOPLPUSH source destination
從列表尾部移除一個元素,放入到另一個列表的頭部並返回。
16 RPUSH key value1 [value2]
將一個或多個值插入到列表尾部
17 RPUSHX key value
將一個或多個值插入到已存在的列表尾部
操作樣本:
Hash-雜湊
Redis的雜湊類型是字串欄位和字串值之間的映射,所以非常適合用於儲存物件。
Hash類型的相關命令如下:
1 HDEL key field2 [field2]
刪除一個或多個雜湊欄位
2 HEXISTS key field
判斷一個雜湊欄位存在與否
3 HGET key field
擷取儲存在指定的鍵散欄欄位的值
4 HGETALL key
讓所有的欄位和值在指定的鍵儲存在一個雜湊
5 HINCRBY key field increment
由給定數量增加的雜湊欄位的整數值
6 HINCRBYFLOAT key field increment
由給定的遞增量雜湊欄位的浮點值
7 HKEYS key
擷取所有在雜湊欄位
8 HLEN key
擷取雜湊欄位數
9 HMGET key field1 [field2]
獲得所有給定的雜湊欄位的值
10 HMSET key field1 value1 [field2 value2 ]
設定多個雜湊欄位的多個值
11 HSET key field value
設定雜湊欄位的字串值
12 HSETNX key field value
設定雜湊欄位的值,僅當該欄位不存在
13 HVALS key
擷取在雜湊中的所有值
14 HSCAN key cursor [MATCH pattern] [COUNT count]
增量迭代雜湊欄位及相關值
操作樣本:
Set-集合
Redis的Set是string類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重複的資料。
Redis 中 集合是通過雜湊表實現的,所以添加,刪除,尋找的複雜度都是O(1)。
Set類型的相關命令如下:
1 SADD key member1 [member2]
向集合添加一個或多個成員
2 SCARD key
擷取集合的成員數
3 SDIFF key1 [key2]
返回給定所有集合的差集
4 SDIFFSTORE destination key1 [key2]
返回給定所有集合的差集並儲存在 destination 中
5 SINTER key1 [key2]
返回給定所有集合的交集
6 SINTERSTORE destination key1 [key2]
返回給定所有集合的交集並儲存在 destination 中
7 SISMEMBER key member
判斷 member 元素是否是集合 key 的成員
8 SMEMBERS key
返回集合中的所有成員
9 SMOVE source destination member
將 member 元素從 source 集合移動到 destination 集合
10 SPOP key
移除並返回集合中的一個隨機元素
11 SRANDMEMBER key [count]
返回集合中一個或多個隨機數
12 SREM key member1 [member2]
移除集合中一個或多個成員
13 SUNION key1 [key2]
返回所有給定集合的並集
14 SUNIONSTORE destination key1 [key2]
所有給定集合的並集儲存在 destination 集合中
15 SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素
操作樣本:
Zset-有序集合
redis有序集合Zset類似於Set,不同之處在於每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(score)卻可以重複。
Zset類型的相關操作命令如下:
1 ZADD key score1 member1 [score2 member2]
向有序集合添加一個或多個成員,或者更新已存在成員的分數
2 ZCARD key
擷取有序集合的成員數
3 ZCOUNT key min max
計算在有序集合中指定區間分數的成員數
4 ZINCRBY key increment member
有序集合中對指定成員的分數加上增量 increment
5 ZINTERSTORE destination numkeys key [key …]
計算給定的一個或多個有序集的交集並將結果集儲存在新的有序集合 key 中
6 ZLEXCOUNT key min max
在有序集合中計算指定字典區間內成員數量
7 ZRANGE key start stop [WITHSCORES]
通過索引區間返回有序集合成指定區間內的成員
8 ZRANGEBYLEX key min max [LIMIT offset count]
通過字典區間返回有序集合的成員,有序集合中的分數必須相同,而且min和max前分別要加[]或者(),表示包含或者不包含,也可以用-和+表示得分最小值和最大值。其中LIMIT限制從指定區間的offset索引開始向後輸出count個元素
9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通過分數返回有序集合指定區間內的成員
10 ZRANK key member
返回有序集合中指定成員的索引
11 ZREM key member [member …]
移除有序集合中的一個或多個成員
12 ZREMRANGEBYLEX key min max
移除有序集合中給定的字典區間的所有成員
13 ZREMRANGEBYRANK key start stop
移除有序集合中給定的排名區間的所有成員
14 ZREMRANGEBYSCORE key min max
移除有序集合中給定的分數區間的所有成員
15 ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定區間內的成員,通過索引,分數從高到底
16 ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集中指定分數區間內的成員,分數從高到低排序
17 ZREVRANK key member
返回有序集合中指定成員的排名,有序整合員按分數值遞減(從大到小)排序
18 ZSCORE key member
返回有序集中,成員的分數值
19 ZUNIONSTORE destination numkeys key [key …]
計算給定的一個或多個有序集的並集,並儲存在新的 key 中
20 ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成員和元素分值)
用法樣本: