> key *
遍歷全部keyjava
> dbsize
> exists key
存在返回1,不存在返回0redis
> del key [key ...]
能夠刪除任意數據結構,也能夠同時刪除多個鍵。數據庫
> expire key seconds
key再seconds秒後過時編程
大於或等於0的整數:鍵剩餘的過時時間
-1:鍵沒設置過時時間
-2:鍵不存在
查看key剩餘的過時時間:數據結構
> ttl key
去掉key的過時時間:架構
> persist key
type key
返回key的類型app
> set key value [ex second] [px milliseconds] [nx|xx]
ex seconds:爲鍵設置秒級過時時間
px milliseconds:爲鍵設置毫秒級過時時間
nx:鍵必須不存在,才能夠設置成功,用於添加
xx:與nx相反,鍵必須存在,才能夠設置成功,用於更新
批量設置dom
> mset key value [key value]
> get key
若是要獲取的鍵不存在,則返回nil(空)
批量獲取值:編程語言
> mget key [key ...]
批量獲取值有助於提升效率。ui
> incr key
對key作自增操做。
返回結果有三種狀況:
值不是整數,返回錯誤。
值是整數,返回自增後的結果。
鍵不存在,按照值爲0自增,返回結果爲1。
若是對一個不存在的鍵執行incr
操做後,返回結果爲1:
> exists key (integer) 0 > incr key (integer) 1 > incr key (integer) 2
除次以外還有:
decr:自減
incrby:自增指定數字
decrby:自減指定數字
incrbyfloat:自增浮點數
> append key value
例如:
> get key "hello" > append key world (integer) 10 > get key "helloworld"
> strlen key
> getset key value
getset
和set
同樣會設置值,可是getset
會返回原來的值
setrange key offeset value
例如:
> set key hello > setrange key 0 o > get key oello
> getrange key start end
start
從0開始。
加入存在hello
的鍵
> object encoding hello "embstr"
每種數據結構都有兩種以上的內部編碼實現
int:8個字節的長整型
embstr:小於等於39個字節的字符串
raw:大於39個字節的字符串
hash是第二種redis結構,在編程語言中很是常見。在redis裏,哈希又是另外一種鍵值對結構。redis自己就是key-value型,哈希結構至關於在value裏又套了一層kv型數據。哈希和C#裏的字典,java裏的map結構是同樣的。
> hset key field value
成功返回1,失敗返回0。
要批量設置的話:
hmget key field value [field value ...]
> hget key field
若是值不存在,返回nil。
批量獲取:
> hmget key field [field ...]
> hdel key field [field ..]
返回結果爲成功刪除的field的個數
> hlen key
> hexists key field
> hkeys key
> hvals key
> hgetall key
> hincrby key field > hincrbyfloat key field
hincrby和hincrbyfloat的做用域是field。
> hstrlen key field
當哈希類型元素個數小於hash-max-ziplist-entries配置(默認512個),同時全部值小於hash-max-ziplist-value配置(默認64字節)時,會啓用。
> object encoding hashkey "ziplist"
> object encoding hashkey "hashtable"
Redis列表是簡單的字符串列表,按照插入順序排序。
彈入彈出操做:
從右邊插入元素:
> rpush key value [value ...]
從左邊插入元素:
> lpush key value [value ...]
向某個元素前或者後插入元素:
> linsert key {before|after} pivot(列表裏的元素) value
返回當前列表的長度。
獲取指定範圍內的元素列表:
> lrange key start end
例如從左到右獲取列表的全部元素:
> lrange listkey 0 -1
獲取列表指定索引下標的元素:
> lindex key index
獲取列表長度
> llen key
從列表左側彈出元素:
> lpop key
從列表右側彈出:
> rpop key
刪除指定元素
> lrem key count value
count>0:從左到右,刪除最多count個元素
count<0:從右到左,刪除最多絕對值count個元素
count=0:刪除全部
例如:
> lrange key 0 -1 a a a a a a b g b b b > lrem key 5 a > lrange key -1 0 a b g b b b
按照索引範圍修建列表:
> ltrim key start end
會保留start到end的元素(包括了start和end)。
修改指定索引下標的元素:
> lset key index newValue
> blpop key [key ...] timeout > brpop key [key ...] timeout
ziplist:壓縮列表
linkedlist:鏈表
集合類型用來保存多個的字符串元素,不容許有重複元素。
> sadd key element [element ...]
返回成功添加的元素個數。
> srem key element [element ...]
返回成功刪除的元素個數。
> smembers key
返回結果是無序的。
> scard key
> sismember key element
存在返回1,反之返回0。
> srandmember key [count]
不寫個數則默認爲1。集合內元素依然存在。
> spop key
> sinter key [key ...]
> suinon key [key ...]
> sdiff key [key ...]
> sinterstore destination key [key ...] > suionstore destination key [key ...] > sdiffstore destination key [key ...]
.intset:整數集合。
.hashtable:哈希表。
保留了集合不能有重複成員的特性,有序集合內的元素又能夠排序。
> zadd keey score member [score member ...]
Redis3.2爲zadd命令新添加的四個選項:
nx:member必須不存在,用於添加。
xx:member必須存在,用於更新。
ch:返回操做後有序集合元素和分數發生變化的個數。
incr:對score作增長。
> zcard key
> zscore key member
結果不存在則返回nil
。
> zrank key member > zrevrank key member
> zrem key member [member ...]
> zincrby key increment member
> zrange key start end [withscores] > zrevrange key start end [withscores]
加withsscores
選項會同時返回成員的分數。
> zrangebyscore key min max [withscores] [limit offset count] > zrevrangebyscore key min max [withscores] [limit offset count]
limit offset count
限制輸出的起始位置和個數。min
和max
都支持開區間,例如
> zrangebyscore user:rank (200 +inf withscores
+inf
表明無線大,-inf
表明無限小。
> zcount key min max
> zremrangebyrank key start end
> zremrangebyscore key min max
> zinterstore destination numkeys key [key ...] [weights weithts [weights ...]] [aggregate sum|min|max]
> zunionstore destination numkeys key [key ...] [weights weithts [weights ...]] [aggregate sum|min|max]
.ziplist:壓縮列表。
.skiplist:跳躍表。
> rename key newkey
這個存在已有變量被覆蓋的風險,可使用:
> renamenx key newkey
確保newkey
不存在的時候才覆蓋。
> randomkey
> ttl key
pttl
精度更高,能夠達到毫秒級。
> move key db
把key
遷移到另外一個數據庫。
> dump key > restore key ttl value # ttl=0表明沒有過時時間
在不一樣Redis數據庫之間作數據遷移。
> migrate host port {key|""} destination-db timeout [copy] [replace] [key key ...]
> keys pattern
> scan cursor [match pattern] [count number]
> select dbIndex
Redis中默認有16個數據庫。
清除數據庫:
flushdb:清除當前數據庫。 flushall:清除全部數據庫。