參考自 Redis in acion 中文版redis
Redis的字符串就是一個由字節組成的序列。code
在Redis裏面,字符串能夠存儲如下3種類型的值。ci
用戶能夠經過給定一個任意的數值,對存儲着整數或者浮點數的字符串執行自增(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"
集合則經過使用散列表來保證本身存儲的每一個字符串都是各不相同的。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>