Redis數據結構

參考自 Redis in acion 中文版redis

字符串

Redis的字符串就是一個由字節組成的序列。code

在Redis裏面,字符串能夠存儲如下3種類型的值。ci

  • 字節串(byte string)。
  • 整數。
  • 浮點數

用戶能夠經過給定一個任意的數值,對存儲着整數或者浮點數的字符串執行自增(increment)或者自減(decrement)操做rem

在有須要的時候,Redis還會將整數轉換成浮點數字符串

命令 用例和描述
INCR INCR key-name—將鍵存儲的值加上1
DECR DECR key-name—將鍵存儲的值減去1
INCRBY INCRBY key-name amount—將鍵存儲的值加上整數amount
DECRBY DECRBY key-name amount—將鍵存儲的值減去整數amount
INCRBYFLOAT INCRBYFLOAT key-name amount—將鍵存儲的值加上浮點數amount,這個命令在Redis 2.6或以上的版本可用
命令 用例和描述
APPEND APPEND key-name value—將值value追加到給定鍵key-name當前存儲的值的末尾
GETRAN GEGETRANGE key-name start end—獲取一個由偏移量start至偏移量end範圍內全部字符組成的子串,包括start和end在內
SETRANG ESETRANGE key-name offset value—將從start偏移量開始的子串設置爲給定值
... ...

列表

一個列表結構能夠有序地存儲多個字符串。get

命令 用例和描述
RPUSH RPUSH key-name value [value ...]—將一個或多個值推入列表的右端
LPUSH LPUSH key-name value [value ...]—將一個或多個值推入列表的左端
RPOP RPOP key-name—移除並返回列表最右端的元素
LPOP LPOP key-name—移除並返回列表最左端的元素
LINDEX LINDEX key-name offset—返回列表中偏移量爲offset的元素
LRANGE LRANGE key-name start end—返回列表從start偏移量到end偏移量範圍內的全部元素,其中偏移量爲start和偏移量爲end的元素也會包含在被返回的元素以內
LTRIM LTRIM key-name start end—對列表進行修剪,只保留從start偏移量到end偏移量範圍內的元素,其中偏移量爲start和偏移量爲end的元素也會被保留
127.0.0.1:6379> rpush list-key tiem
(integer) 1
127.0.0.1:6379> rpush list-key item2
(integer) 2
127.0.0.1:6379> rpush list-key tiem
(integer) 3
127.0.0.1:6379> lrange list-key 0 -1
1) "tiem"
2) "item2"
3) "tiem"
127.0.0.1:6379> lindex list-key 1
"item2"
127.0.0.1:6379> lpop list-key
"tiem"
127.0.0.1:6379> lrange list-key 0 -1
1) "item2"
2) "tiem"

Redis的集合

集合則經過使用散列表來保證本身存儲的每一個字符串都是各不相同的。string

Redis的集合使用無序(unordered)方式存儲元素,因此用戶不能像使用列表那樣,將元素推入集合的某一端,或者從集合的某一端彈出元素。hash

命令 用例和描述
SADD 將給定元素添加到集合
SMEMBERS 返回集合包含的全部元素
SISMEMBER 檢查給定元素是否存在於集合中
SREM 若是給定的元素存在於集合中,那麼移除這個元素

集合除了基本的添加操做和移除操做以外,還支持不少其餘操做。SINTER、SUNION、SDIFF這3個命令就能夠分別執行常見的交集計算、並集計算和差集計算。it

127.0.0.1:6379> sadd set-key item
(integer) 1
127.0.0.1:6379> sadd set-key item2
(integer) 1
127.0.0.1:6379> sadd set-key item3
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> sadd set-key item
(integer) 0
127.0.0.1:6379> smembers set-key
1) "item3"
2) "item2"
3) "item"
127.0.0.1:6379> sismember set-key item4
(integer) 0
127.0.0.1:6379> sismember set-key item
(integer) 1
127.0.0.1:6379> srem set-key item2
(integer) 1
127.0.0.1:6379> smembers set-key
1) "item3"
2) "item"
127.0.0.1:6379>

散列

Redis的散列能夠存儲多個鍵值對之間的映射。和字符串同樣,散列存儲的值既能夠是字符串又能夠是數字值,而且用戶一樣能夠對散列存儲的數字值執行自增操做或者自減操做。io

命令 用例和描述
HSET 在散列裏面關聯起給定的鍵值對
HGET 獲取指定散列鍵的值
HGETALL 獲取散列包含的全部鍵值對
HDEL 若是給定鍵存在於散列裏面,那麼移除這個鍵
127.0.0.1:6379> hset hash-key sub-key value3
(integer) 0
127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 1
127.0.0.1:6379> hset hash-key sub-key2 value2
(integer) 1
127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 0
127.0.0.1:6379> hgetall hash-key
1) "sub-key"
2) "value3"
3) "sub-key1"
4) "value1"
5) "sub-key2"
6) "value2"
127.0.0.1:6379> hdel hash-key sub-key2
(integer) 1
127.0.0.1:6379> hget hash-key sub-key
"value3"
127.0.0.1:6379> hgetall hash-key
1) "sub-key"
2) "value3"
3) "sub-key1"
4) "value1"
127.0.0.1:6379>

有序集合

有序集合和散列同樣,都用於存儲鍵值對:有序集合的鍵被稱爲成員(member),每一個成員都是各不相同的;而有序集合的值則被稱爲分值(score), 分值必須爲浮點數

有序集合是Redis裏面惟一一個既能夠根據成員訪問元素(這一點和散列同樣),又能夠根據分值以及分值的排列順序來訪問元素的結構

命令 用例和描述
ZADD 將一個帶有給定分值的成員添加到有序集合裏面
ZRANGE 根據元素在有序排列中所處的位置,從有序集合裏面獲取多個元素
ZRANGEBYSCORE 獲取有序集合在給定分值範圍內的全部元素
ZREM 若是給定成員存在於有序集合,那麼移除這個成員
127.0.0.1:6379> zadd zset-key 100 member1
(integer) 1
127.0.0.1:6379> zadd zset-key 200 member0
(integer) 1
127.0.0.1:6379> zadd zset-key 300 member0
(integer) 0
127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member1"
2) "100"
3) "member0"
4) "300"
127.0.0.1:6379> zrangebyscore zset-key 0 250
1) "member1"
127.0.0.1:6379> zrangebyscore zset-key 0 250 withscores
1) "member1"
2) "100"
127.0.0.1:6379>
相關文章
相關標籤/搜索