Redis是一個速度很是快的非關係型數據庫,能夠存儲鍵與5中不一樣數據結構類型之間的映射。這5種數據結構分別是STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)、ZSET(有序集合)。數據庫
和其餘編程語言或者其餘鍵值存儲提供的字符串很是類似。編程
SET 設置值數據結構
GET 獲取值app
DEL 刪除值編程語言
127.0.0.1:6379> set hello world OK 127.0.0.1:6379> get hello "world" 127.0.0.1:6379> del hello (integer) 1 127.0.0.1:6379> get hello (nil) 127.0.0.1:6379>
經常使用API:spa
API | 說明 | 複雜度 |
get key | 獲取key對應的value | O(1) |
set key value | 設置key-value,無論key是否存在,都設置 | O(1) |
del key | 刪除key-value | O(1) |
incr key | key自增1,若是key不存在,自增後get(key)=1 | O(1) |
decr key | key自減1,若是key不存在,自減後get(key)=-1 | O(1) |
incrby key k | key自增k,若是key不存在,自增後get(key)=k | O(1) |
decr key k | key自減k,若是key不存在,自減後get(key)=-k | O(1) |
setnx key value | key不存在,才設置 | O(1) |
set key value xx | key存在,才設置 | O(1) |
mget key1 key2 key3 ... | 批量獲取key,原子操做 | O(n) |
mset key1 value1 key2 value2 ... | 批量設置key-value | O(n) |
getset key newvalue | set key newvalue並返回舊的value | O(1) |
append key value | 將value追加到舊的value | O(1) |
strlen key | 返回字符串的長度(注意中文) | O(1) |
incrbyfloat key 2.3 | 增長key對應的值2.3 | O(1) |
getrange key start end | 獲取字符串指定下標的全部值 | O(1) |
setrange key index value | 設置指定下標(index)全部對應的值 | O(1) |
列表能夠有序存儲多個字符串,其中字符串能夠相同。code
LPUSH 將元素推入列表的左端對象
RPUSH 將元素推入列表的右端blog
LPOP 將元素從列表左端彈出排序
RPOP 將元素從列表右端彈出
LINDEX 獲取列表在給定位置上的單個元素
LRANGE 獲取列表在給定範圍的全部元素
127.0.0.1:6379> rpush list-key item (integer) 2 127.0.0.1:6379> rpop list-key "item" 127.0.0.1:6379> rpop list-key "item" 127.0.0.1:6379> rpush list-key item (integer) 1 127.0.0.1:6379> rpush list-key item2 (integer) 2 127.0.0.1:6379> rpush list-key item (integer) 3 127.0.0.1:6379> lrange list-key 0 -1 1) "item" 2) "item2" 3) "item" 127.0.0.1:6379> lindex list-key 1 "item2" 127.0.0.1:6379> lpop list-key "item" 127.0.0.1:6379> lrange list-key 0 -1 1) "item2" 2) "item" 127.0.0.1:6379>
經常使用API:
API
|
說明
|
複雜度
|
lpush key value1 [value2] |
將一個或多個值推入列表的左端
|
O(1)
|
rpush key value1 [value2]
|
將一個或多個值推入列表的右端
|
O(1)
|
linsert key before|after value newValue
|
在list指定的值前|後插入newValue
|
O(n)
|
lpop key
|
移除並返回列表最左端的元素
|
O(1)
|
rpop key
|
移除並返回列表最右端的元素
|
O(1)
|
ltrim key start end
|
按照索引範圍修剪列表
|
O(n)
|
lindex key offset
|
返回列表中偏移量爲offset的元素
|
O(n)
|
lrange key start end(包含end)
|
獲取列表指定索引範圍全部元素
|
O(n)
|
llen key
|
獲取列表長度
|
O(1)
|
lset key index newValue
|
設置列表指定索引值爲newValue
|
O(n)
|
blpop key timeout
|
lpop阻塞版本,timeout爲阻塞超時時間,=0爲不阻塞
|
O(1)
|
brpop key timeout
|
rpop阻塞版本,timeout爲阻塞超時時間,=0爲不阻塞
|
O(1)
|
集合能夠存儲不一樣多個字符串,且無序。
SADD 將元素添加到集合中
SREM 從集合裏面移除元素,若是這個元素存在
SISMEMBER 快速檢查一個元素是否已經存在集合中
SMEMBERS 獲取集合包含的全部元素(若是集合包含的元素很是多,那麼命令執行速度回很慢,謹慎使用)
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> 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> srem set-key item2 (integer) 0 127.0.0.1:6379> smembers set-key 1) "item3" 2) "item" 127.0.0.1:6379>
經常使用API:
API |
說明
|
複雜度
|
sadd key element
|
向集合key添加element(若是element已經存在,添加失敗)
|
O(1)
|
srem key element
|
將集合key中的element移除
|
O(1)
|
sismember key element
|
檢查元素element是否存在於集合key中
|
O(1)
|
smembers
|
返回集合包含的全部元素
|
O(N)
|
Redis能夠存儲多個鍵值對之間的映射,hash 是一個string類型的field和value的映射表,適合存儲對象。和字符串同樣,散列存儲的值既能夠存儲字符串和數字值,而且能夠對散列存儲的數字值執行自增或自減操做。
HSET 在散列裏面關聯起給定的鍵值對
HGET 獲取指定散列鍵的值
HGETALL 獲取散列包含的全部鍵值對
HDEL 若是給定鍵存在於散列裏面,那麼刪除這個鍵
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-key1" 2) "value1" 3) "sub-key2" 4) "value2" 127.0.0.1:6379> hdel hash-key sub-key2 (integer) 1 127.0.0.1:6379> hdel hash-key sub-key2 (integer) 0 127.0.0.1:6379> hget hash-key sub-key1 "value1" 127.0.0.1:6379> hgetall hash-key 1) "sub-key1" 2) "value1" 127.0.0.1:6379>
經常使用API:
API
|
說明
|
複雜度
|
hget key field
|
獲取hash key對應的field的value
|
O(1)
|
hset key field value
|
設置hash key對應的field的value
|
O(1)
|
hdel key field
|
刪除hash key對應的field的value
|
O(1)
|
hexists key field
|
判斷hash key是否有field
|
O(1)
|
hlen
|
獲取hash key field的數量
|
O(1)
|
hmget key field1 field2 ...
|
批量獲取hash key的一批field對應的值
|
O(n)
|
hmset key field1 value1 field2 value2 ...
|
批量設置hash key的一批field value
|
O(n)
|
hgetall key
|
返回hash key 對應全部的field和value
|
O(n)
|
hvals key
|
返回hash key對應全部field的value
|
O(n)
|
hkeys key
|
返回hash key對應全部field
|
O(n)
|
hsetnx key field value
|
設置hash key對應的field的value(若是field已經存在,則失敗)
|
O(1)
|
hincrby key field intCounter
|
hash key對應的field的value自增intCounter
|
O(1)
|
hincrbyfloat key field floatCounter
|
hash key對應的field的value自增floatCounter
|
O(1)
|
有序集合和散列同樣,都用於存儲鍵值對:有序集合的鍵被稱爲成員(member),每一個成員都是各不相同的;有序集合的值被稱爲分值(score),分值必須使用浮點數。有序集合是Redis裏面惟一一個既能夠根據成員訪問元素,又能夠根據分值以及分值的排列順序來訪問元素的結構。
使用場景:例如基於發表時間排序的文章列表、基於投票數量排序的文章列表等。
ZADD 將一個帶有給定分值的成員添加到有序集合裏面
ZRANGE 根據元素在有序排列中所處的位置,從有序集合中取出多個元素
ZRANGEBYSCORE 獲取有序集合在給定分值範圍內的全部元素
ZREM 若是給定成員存在於有序集合中,那麼移除這個成員
127.0.0.1:6379> zadd zset-key 728 member1 (integer) 1 127.0.0.1:6379> zadd zset-key 985 member0 (integer) 1 127.0.0.1:6379> zadd zset-key 985 member0 (integer) 0 127.0.0.1:6379> zrange zset-key 0 -1 withscores 1) "member1" 2) "728" 3) "member0" 4) "985" 127.0.0.1:6379> zrangebyscore zset-key 0 800 withscores 1) "member1" 2) "728" 127.0.0.1:6379> zrem zset-key member1 (integer) 1 127.0.0.1:6379> zrem zset-key member1 (integer) 0 127.0.0.1:6379> zrange zset-key 0 -1 withscores 1) "member0" 2) "985" 127.0.0.1:6379>
經常使用API:
API
|
說明
|
複雜度
|
zadd key score element(能夠是多對的)
|
添加score和element
|
O(lonN)
|
zrem key element(能夠是多個)
|
刪除元素
|
O(1)
|
zscore key element
|
返回元素的分數
|
O(1)
|
zincrby key increScore element
|
增長或減小元素的分數
|
O(1)
|
zcard key
|
返回元素的總個數
|
O(1)
|
zrange key start end [WITHSCORES]
|
返回指定索引範圍內的升序元素【分值】
|
O(lon(n)+m)
|
zrangebyscore key minScore maxScore[WITHSCORES]
|
返回指定分數範圍內的升序元素【分值】
|
O(lon(n)+m)
|
zcount key minScore maxScore
|
返回有序集合內在指定分數範圍內的個數
|
O(lon(n)+m)
|
zremrangebyrank key start end
|
刪除指定排名內的升序元素
|
O(lon(n)+m)
|
zremrangebyscor key minScore maxScore
|
刪除指定分數內的升序元素
|
O(lon(n)+m)
|