redis常用命令收集
阿新 • • 發佈:2019-01-10
redis-cli 是 Redis 自帶的命令列工具, 直接在命令列終端與 redis server 執行所有命令和返回響應。下面所有命令都可以在 cli 互動式命令列中執行。
互動式命令引數
redis-cli 命令列自帶一些引數,可以使用 redis-cli --help 檢視。
通常 -p 引數指定埠, -a 引數指定密碼, -h 指定 hostname。
–stat 引數列印狀態
Redis基礎命令
ping 用於檢測 redis 服務是否啟動 info 檢視redis資訊 select 選擇不同的keyspace,或者說database keys * 檢視當前keyspace下所有的key flushdb 清空當前keyspace下的資料 flushall 清空所有的keyspace下的資料 dbsize 檢視當前keyspace下的一個鍵值對數量 save 持久化redis中儲存的資料到磁碟中 quit 退出客戶端命令列 select dbIndex 預設16個數據庫:0-15,進入redis後預設是0庫。不建議使用多個數據庫
Redis鍵命令
del key 該命令用於在 key 存在時刪除 key dump key 序列化給定 key ,並返回被序列化的值 exists key 檢查給定 key 是否存在,存在返回1,不存在返回0 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 或者說 keyspace 當中 persist key 移除 key 的過期時間,key 將持久保持 pttl key 以毫秒為單位返回 key 的剩餘的過期時間,-1表示沒有過期時間,-2表示該key不存在 ttl key 以秒為單位,返回給定 key 的剩餘生存時間(TTL, time to live),-1表示沒有過期時間,-2表示該key不存在 randomkey 從當前資料庫中隨機返回一個 key rename key newkey 修改 key 的名稱 renamenx key newkey 僅當 newkey 不存在時,將 key 改名為 newkey type key 返回 key 所儲存的值的型別
遷移鍵
方式一 move key db 遷移鍵-(不建議再生產環境中使用)把指定的鍵從源資料庫移動到目標資料庫 方式二 dump+restore dump key Restore key ttl value Dump+restore可以實現在不同的redis例項之間進行資料遷移的功能,整個遷移的過程分為兩步; 1)在源redis上,dump命令會將鍵值序列化,格式採用的是RDB格式 2)在目標redis上,restore命令將上面序列化的值進行復原,其中ttl引數代表過期時間,ttl=0代表沒有過期時間 例子: 源redis 192.168.225.129:6379> get redis "world" 192.168.225.129:6379> dump redis "\x00\x05world\a\x00\xe6\xe3\xe9w\xd8c\xa7\xd8" 目標redis 192.168.225.128:6379> get redis (nil) 192.168.225.128:6379> restore redis 0 "\x00\x05world\a\x00\xe6\xe3\xe9w\xd8c\xa7\xd8" OK 192.168.225.128:6379> get redis "world" 方式三 migrate migrate實際上是吧dump、restore、del 3個命令進行組合,從而簡化了操作步驟。 Migrate host port key [ key ......] destination-db timeout [replace] 源redis中執行 192.168.225.129:6379> migrate 192.168.225.128 6379 flower 0 1000 replace (將鍵flower遷移至目標192.168.225.128:6379的庫0中,超時時間為1000毫秒,replace表示目標庫如果存在鍵flower,則覆蓋)
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
hset key field value 將雜湊表 key 中的欄位 field 的值設為 value
hdel key field1 [field2] 刪除一個或多個雜湊表字段
hexists key field 檢視雜湊表 key 中,指定的欄位是否存在
hget key field 獲取儲存在雜湊表中指定欄位的值
hgetall 獲取在雜湊表中指定 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 中
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
zincrbystore 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] 迭代有序集合中的元素(包括元素成員和元素分值)
pub/sub(釋出、訂閱)
publish channel message 釋出訊息 eg:publish channel:sports 'I want to go eatting'
subscribe channel [channel .....] 訂閱訊息 eg: subscribe channel:sports
unsubscribe channel [channel .....] 取消訂閱
psubscribe pattern [pattern ......] 按照模式訂閱
unpsubscribe pattern [pattern ......] 按照模式取消訂閱
查詢訂閱
pubsub channels 檢視活躍的頻道
192.168.225.128:6379> pubsub channels
1) "channel:sports"
2) "__sentinel__:hello"
pubsub numsub [channel ......] 檢視頻道訂閱數 pubsub numsub channel:sports
pubsub numpat 檢視模式訂閱數
說明:
客戶端在執行訂閱命令之後進入了訂閱狀態,只能接收四個命令:subscribe、psubscribe、unsubscribe、punsubscribe;
新開啟的訂閱客戶端,無法收到該頻道之前的訊息,因為redis不會對釋出的訊息進行持久化。
Transaction(事務)
discard , 取消執行事務塊內的所有命令
exec , 執行事務塊內的命令
multi , 標記一個事務塊的開始
unwatch , 取消watch命令對所有key的監視
watch key [key ...] , 監視一個或者多個key,如果事務執行之前,這個kye被其它命令所動,則事務被打斷
Connection(連線)
auth password , 登入redis時輸入密碼
echo message , 列印一個特定的資訊message,測試時使用
ping , 測試與伺服器的連線,如果正常則返回pong
quit , 請求伺服器關閉與當前客戶端的連線
select index , 切換到指定的資料庫
Server(伺服器)
bgsave , 後臺非同步儲存資料到硬碟
client setname/client getname , 為連線設定、獲取名字
client kill ip:port , 關閉地址為 ip:port的客戶端
client list , 以人類可讀的方式,返回所有的連線客戶端資訊和統計資料
config get parameter , 取得執行redis伺服器的配置引數
config set parameter value , 設定redis伺服器的配置引數
config resetstat , 重置info命令的某些統計資料
dbsize , 返回當前資料庫中key的數量
flushall , 清空整個redis伺服器的資料(刪除所有資料庫的所有 key)
flushdb , 清空當前資料庫中的所有key
info [section] , 返回redis伺服器的各種資訊和統計資料
lastsave , 返回最近一次redis成功將資料儲存到磁碟時的時間
monitor , 實時打印出redis伺服器接收到的指令
save , 將當前 Redis 例項的所有資料快照(snapshot)以 RDB 檔案的形式儲存到硬碟
slaveof host port , 將當前伺服器轉變為指定伺服器的從屬伺服器
slowlog subcommand [argument] , Redis 用來記錄查詢執行時間的日誌系統