Redis 鍵(key)
基本語法格式:COMMAND KEY_NAME
命令 |
作用 |
DEL key |
該命令用於在 key 存在時刪除 key。 |
DUMP key |
序列化給定 key ,並返回被序列化的值。 |
EXISTS key |
檢查給定 key 是否存在。 |
EXPIRE key seconds |
爲給定 key 設置過期時間,以秒計。 |
EXPIREAT key timestamp |
EXPIREAT 的作用和 EXPIRE 類似,都用於爲 key 設置過期時間。 不同在於 EXPIREAT 命令接受的時間參數是 UNIX 時間戳(unix timestamp)。 |
PEXPIRE key milliseconds |
設置 key 的過期時間以毫秒計。 |
PEXPIREAT key milliseconds-timestamp |
設置 key 過期時間的時間戳(unix timestamp) 以毫秒計 |
KEYS pattern |
查找所有符合給定模式( pattern)的 key 。 |
MOVE key db |
將當前數據庫的 key 移動到給定的數據庫 db 當中。 |
PERSIST key |
移除 key 的過期時間,key 將持久保持。 |
PTTL key |
以毫秒爲單位返回 key 的剩餘的過期時間。 |
TTL key |
以秒爲單位,返回給定 key 的剩餘生存時間(TTL, time to live)。 |
RANDOMKEY |
從當前數據庫中隨機返回一個 key 。 |
RENAME key newkey |
修改 key 的名稱 |
RENAMENX key newkey |
僅當 newkey 不存在時,將 key 改名爲 newkey 。 |
TYPE key |
返回 key 所儲存的值的類型。 |
更多命令請參考:https://redis.io/commands
Redis 字符串(String)
命令 |
作用 |
SET key value |
設置指定 key 的值 |
GET key |
獲取指定 key 的值。 |
GETRANGE key start end |
返回 key 中字符串值的子字符 |
GETSET key value |
將給定 key 的值設爲 value ,並返回 key 的舊值(old value)。 |
GETBIT key offset |
對 key 所儲存的字符串值,獲取指定偏移量上的位(bit)。 |
MGET key1 [key2…] |
獲取所有(一個或多個)給定 key 的值。 |
SETBIT key offset value |
對 key 所儲存的字符串值,設置或清除指定偏移量上的位(bit)。 |
SETEX key seconds value |
將值 value 關聯到 key ,並將 key 的過期時間設爲 seconds (以秒爲單位)。 |
SETNX key value |
只有在 key 不存在時設置 key 的值。 |
SETRANGE key offset value |
用 value 參數覆寫給定 key 所儲存的字符串值,從偏移量 offset 開始。 |
STRLEN key |
返回 key 所儲存的字符串值的長度。 |
MSET key value [key value …] |
同時設置一個或多個 key-value 對。 |
MSETNX key value [key value …] |
同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。 |
PSETEX key milliseconds value |
這個命令和 SETEX 命令相似,但它以毫秒爲單位設置 key 的生存時間,而不是像 SETEX 命令那樣,以秒爲單位。 |
INCR key |
將 key 中儲存的數字值增一。 |
INCRBY key increment |
將 key 所儲存的值加上給定的增量值(increment) 。 |
INCRBYFLOAT key increment |
將 key 所儲存的值加上給定的浮點增量值(increment) 。 |
DECR key |
將 key 中儲存的數字值減一。 |
DECRBY key decrement |
key 所儲存的值減去給定的減量值(decrement) 。 |
APPEND key value |
如果 key 已經存在並且是一個字符串, APPEND 命令將指定的 value 追加到該 key 原來值(value)的末尾。 |
Redis 哈希(Hash)
命令 |
作用 |
HDEL key field1 [field2] |
刪除一個或多個哈希表字段 |
HEXISTS key field |
查看哈希表 key 中,指定的字段是否存在。 |
HGET key field |
獲取存儲在哈希表中指定字段的值。 |
HGETALL key |
獲取在哈希表中指定 key 的所有字段和值 |
HINCRBY key field increment |
爲哈希表 key 中的指定字段的整數值加上增量 increment 。 |
HINCRBYFLOAT key field increment |
爲哈希表 key 中的指定字段的浮點數值加上增量 increment 。 |
HKEYS key |
獲取所有哈希表中的字段 |
HLEN key |
獲取哈希表中字段的數量 |
HMGET key field1 [field2] |
獲取所有給定字段的值 |
HMSET key field1 value1 [field2 value2 ] |
同時將多個 field-value (域-值)對設置到哈希表 key 中。 |
HSET key field value |
將哈希表 key 中的字段 field 的值設爲 value 。 |
HSETNX key field value |
只有在字段 field 不存在時,設置哈希表字段的值。 |
HVALS key |
獲取哈希表中所有值 |
HSCAN key cursor [MATCH pattern] [COUNT count] |
迭代哈希表中的鍵值對。 |
Redis 列表(List)
命令 |
作用 |
BLPOP key1 [key2 ] timeout |
移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。 |
BRPOP key1 [key2 ] timeout |
移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。 |
BRPOPLPUSH source destination timeout |
從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。 |
LINDEX key index |
通過索引獲取列表中的元素 |
LINSERT key BEFORE |
AFTER pivot value |
LLEN key |
獲取列表長度 |
LPOP key |
移出並獲取列表的第一個元素 |
LPUSH key value1 [value2] |
將一個或多個值插入到列表頭部 |
LPUSHX key value |
將一個值插入到已存在的列表頭部 |
LRANGE key start stop |
獲取列表指定範圍內的元素 |
LREM key count value |
移除列表元素 |
LSET key index value |
通過索引設置列表元素的值 |
LTRIM key start stop |
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。 |
RPOP key |
移除列表的最後一個元素,返回值爲移除的元素。 |
RPOPLPUSH source destination |
移除列表的最後一個元素,並將該元素添加到另一個列表並返回 |
RPUSH key value1 [value2] |
在列表中添加一個或多個值 |
RPUSHX key value |
爲已存在的列表添加值 |
Redis 集合(Set)
命令 |
作用 |
SADD key member1 [member2] |
向集合添加一個或多個成員 |
SCARD key |
獲取集合的成員數 |
SDIFF key1 [key2] |
返回給定所有集合的差集 |
SDIFFSTORE destination key1 [key2] |
返回給定所有集合的差集並存儲在 destination 中 |
SINTER key1 [key2] |
返回給定所有集合的交集 |
SINTERSTORE destination key1 [key2] |
返回給定所有集合的交集並存儲在 destination 中 |
SISMEMBER key member |
判斷 member 元素是否是集合 key 的成員 |
SMEMBERS key |
返回集合中的所有成員 |
SMOVE source destination member |
將 member 元素從 source 集合移動到 destination 集合 |
SPOP key |
移除並返回集合中的一個隨機元素 |
SRANDMEMBER key [count] |
返回集合中一個或多個隨機數 |
SREM key member1 [member2] |
移除集合中一個或多個成員 |
SUNION key1 [key2] |
返回所有給定集合的並集 |
SUNIONSTORE destination key1 [key2] |
所有給定集合的並集存儲在 destination 集合中 |
SSCAN key cursor [MATCH pattern] [COUNT count] |
迭代集合中的元素 |
Redis 有序集合(sorted set)
命令 |
作用 |
ZADD key score1 member1 [score2 member2] |
向有序集合添加一個或多個成員,或者更新已存在成員的分數 |
ZCARD key |
獲取有序集合的成員數 |
ZCOUNT key min max |
計算在有序集合中指定區間分數的成員數 |
ZINCRBY key increment member |
有序集合中對指定成員的分數加上增量 increment |
ZINTERSTORE destination numkeys key [key …] |
計算給定的一個或多個有序集的交集並將結果集存儲在新的有序集合 key 中 |
ZLEXCOUNT key min max |
在有序集合中計算指定字典區間內成員數量 |
ZRANGE key start stop [WITHSCORES] |
通過索引區間返回有序集合成指定區間內的成員 |
ZRANGEBYLEX key min max [LIMIT offset count] |
通過字典區間返回有序集合的成員 |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] |
通過分數返回有序集合指定區間內的成員 |
ZRANK key member |
返回有序集合中指定成員的索引 |
ZREM key member [member …] |
移除有序集合中的一個或多個成員 |
ZREMRANGEBYLEX key min max |
移除有序集合中給定的字典區間的所有成員 |
ZREMRANGEBYRANK key start stop |
移除有序集合中給定的排名區間的所有成員 |
ZREMRANGEBYSCORE key min max |
移除有序集合中給定的分數區間的所有成員 |
ZREVRANGE key start stop [WITHSCORES] |
返回有序集中指定區間內的成員,通過索引,分數從高到底 |
ZREVRANGEBYSCORE key max min [WITHSCORES] |
返回有序集中指定分數區間內的成員,分數從高到低排序 |
ZREVRANK key member |
返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序 |
ZSCORE key member |
返回有序集中,成員的分數值 |
ZUNIONSTORE destination numkeys key [key …] |
計算給定的一個或多個有序集的並集,並存儲在新的 key 中 |
ZSCAN key cursor [MATCH pattern] [COUNT count] |
迭代有序集合中的元素(包括元素成員和元素分值) |
BitSet
命令 |
作用 |
bitset bit 0 1 |
將鍵bit從右往左第0號位上的值設爲1 |
getbit bit 0 |
獲取鍵bit第0號位上的值 |
bitcount bit |
獲取鍵bit中值爲1的位的個數 |
bitcount bit 2 10 |
獲取鍵bit從第2(包含)個到第10(包含)個字節之間的值爲1的個數 |
bitop and and-result x y |
對x和y進行按位與運算,並將運算結果保存在and-result中 |
bitop or or-result x y |
對x和y進行按位或運算,並將運算結果保存在or-result中 |
bitop xor xor-result x y |
對x和y進行按位異或運算,並將運算結果保存在xor-result中 |
HyperLogLog
Redis HyperLogLog 是用來做基數統計的算法,HyperLogLog 的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定 的、並且是很小的。
在 Redis 裏面,每個 HyperLogLog 鍵只需要花費 12 KB 內存,就可以計算接近 2^64 個不同元素的基 數。這和計算基數時,元素越多耗費內存就越多的集合形成鮮明對比。
但是,因爲 HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以 HyperLogLog 不能像集合那樣,返回輸入的各個元素。
使用場景:統計某個網站的UV
命令 |
作用 |
PFADD key element [element …] |
添加指定元素到 HyperLogLog 中。 |
PFCOUNT key [key …] |
返回給定 HyperLogLog 的基數估算值。 |
PFMERGE destkey sourcekey [sourcekey …] |
將多個 HyperLogLog 合併爲一個 HyperLogLog |
其他
命令 |
作用 |
slowlog get |
獲取所有的慢查詢日誌 |
slowlog len |
獲取慢查詢日誌的條數 |
slowlog reset |
清除所有的慢查詢日誌 |
select 1 |
將redis當前使用的數據庫切換爲1號數據庫 |
flushdb |
將當前數據庫所有數據都清除 |
flushall |
將所有數據庫中的數據都清除 |
randomkey |
獲取當前數據庫中隨機的一個對象名 |
exists msg |
判斷當前數據庫中是否包含msg這個對象 |
rename msg message |
將名稱爲msg的對象重命名爲message,如果message的鍵值對已經存在,則會將其覆蓋 |
renamenx msg message |
如果message的鍵值對存在,則不會對其進行覆蓋 |
keys regex |
返回名稱匹配正則表達式regex的對象 |
dbsize |
獲取當前數據庫所擁有的對象數目 |
monitor |
實時獲取當前服務器執行的命令 |
move msg 2 |
將當前庫中msg對應的鍵值對轉移到索引爲2的庫 |