1. 程式人生 > 資料庫 >Redis 常用命令

Redis 常用命令

Redis命令

Redis 命令用於在 redis 服務上執行操作。要在 redis 服務上執行命令需要一個 redis客戶端。

參考資料

  • http://redisdoc.com/
  • http://redis.io/commands

連線操作相關的命令

  • ping:測試連線是否存活如果正常會返回 pong
  • echo:列印
  • select:切換到指定的資料庫,資料庫索引號 index 用數字值指定,以 0 作為起始索引值
  • quit:關閉連線(connection)
  • auth:簡單密碼認證

常用命令key管理

keys  * : 返回滿足的所有鍵,可以模糊匹配 比如 keys  abc* 代表 abc 開頭的 key 

exists key :是否存在指定的key,存在返回1,不存在返回0 

expire key second:設定某個key的過期時間 時間為秒。使用場景如下 
   1、限時的優惠活動資訊 2、網站資料快取(對於一些需要定時更新的資料,例如:積分排行榜) 
   3、手機驗證碼 
   4、限制網站訪客訪問頻率(例如:1分鐘多訪問10次)

del key:刪除某個key 

ttl key:檢視剩餘時間,key不存在時返回-2;存在但沒設定剩餘生存時間,返回-1,否則,以秒為單位,返回剩餘生存時間。

TYPE key:返回 key 所儲存的值的型別

PTTL key:以毫秒為單位返回 key 的剩餘的過期時間

KEYS pattern:查詢所有符合給定模式( pattern)的 key 。 
    keys 萬用字元     獲取所有與pattern匹配的key,返回所有與該匹配   
    萬用字元:          
    *  代表所有          
    ? 表示代表一個字元 

persist key:取消過去時間 

PEXPIRE key milliseconds 修改key 的過期時間為毫秒 

select :  選擇資料庫  資料庫為0-15(預設一共16個數據庫) s設計成多個數據庫實際上是為了資料庫安全和備份 

move key dbindex : 將當前資料中的key轉移到其他資料庫 

randomkey:隨機返回一個key 

rename key key2:重新命名key 

echo:列印命令 

dbsize:檢視資料庫的key數量 

info:檢視資料庫資訊 

config get * 實時傳儲收到的請求,返回相關的配置 

flushdb :清空當前資料庫 flushall :清空所有資料庫

key的命名建議

  1. redis單個key允許存入512M大小
  2. key不要太長,儘量不要超過1024位元組,這不僅消耗記憶體,而且會降低查詢的效率;
  3. key也不要太短,太短的話,key的可讀性會降低;
  4. 在一個專案中,key好使用統一的命名模式,例如user:123:password;
  5. key名稱區分大小寫

服務端相關命令

  • time:返回當前伺服器時間
  • client list: 返回所有連線到伺服器的客戶端資訊和統計資料 參見 http://redisdoc.com/server/client_list.html
  • client kill ip:port:關閉地址為 ip:port 的客戶端
  • save:將資料同步儲存到磁碟
  • bgsave:將資料非同步儲存到磁碟
  • lastsave:返回上次成功將資料儲存到磁碟的Unix時戳
  • shundown:將資料同步儲存到磁碟,然後關閉服務
  • info:提供伺服器的資訊和統計
  • config resetstat:重置 info 命令中的某些統計資料
  • config get:獲取配置檔案資訊
  • config set:動態地調整 Redis伺服器的配置(configuration)而無須重啟,可以修改的配置引數可以使用命令 CONFIG GET * 來列出
  • config rewrite:Redis 伺服器時所指定的 redis.conf 檔案進行改寫
  • monitor:實時轉儲收到的請求
  • slaveof:改變複製策略設定

釋出訂閱相關命令

  • psubscribe:訂閱一個或多個符合給定模式的頻道 例如 psubscribe news.* tweet.*
  • publish:將資訊 message 傳送到指定的頻道 channel 例如 publish msg “good morning”
  • pubsub channels:列出當前的活躍頻道 例如 PUBSUB CHANNELS news.i*
  • pubsub numsub:返回給定頻道的訂閱者數量 例如 PUBSUB NUMSUB news.it news.internet news.sport news.music
  • pubsub numpat:返回客戶端訂閱的所有模式的數量總和
  • punsubscribe:指示客戶端退訂所有給定模式。
  • subscribe:訂閱給定的一個或多個頻道的資訊。例如 subscribe msg chat_room
  • unsubscribe:指示客戶端退訂給定的頻道。

對 KEY 操作的命令

  • exists(key):確認一個 key 是否存在
  • del(key):刪除一個 key
  • type(key):返回值的型別
  • keys(pattern):返回滿足給定 pattern 的所有 key
  • randomkey:隨機返回 key 空間的一個
  • keyrename(oldname,newname):重新命名 key
  • dbsize:返回當前資料庫中 key 的數目
  • expire:設定一個 key 的活動時間(s)
  • ttl:獲得一個 key 的活動時間
  • move(key,dbindex):移動當前資料庫中的 key 到 dbindex 資料庫
  • flushdb:刪除當前選擇資料庫中的所有 key
  • flushall:刪除所有資料庫中的所有 key

對 String 操作的命令

  • set(key,value):給資料庫中名稱為 key 的 string 賦予值 value
  • get(key):返回資料庫中名稱為 key 的 string 的 value
  • getset(key,value):給名稱為 key 的 string 賦予上一次的 value
  • mget(key1,key2,…,key N):返回庫中多個 string 的 value
  • setnx(key,value):新增 string,名稱為 key,值為 value
  • setex(key,time,value):向庫中新增 string,設定過期時間 time
  • mset(key N,value N):批量設定多個 string 的值
  • msetnx(key N,value N):如果所有名稱為 key i 的 string 都不存在
  • incr(key):名稱為 key 的 string 增 1 操作
  • incrby(key,integer):名稱為 key 的 string 增加 integer
  • decr(key):名稱為 key 的 string 減 1 操作
  • decrby(key,integer):名稱為 key 的 string 減少 integer
  • append(key,value):名稱為 key 的 string 的值附加 value
  • substr(key,start,end):返回名稱為 key 的 string 的 value 的子串

對 List 操作的命令

  • rpush(key,value):在名稱為 key 的 list 尾新增一個值為 value 的元素
  • lpush(key,value):在名稱為 key 的 list 頭新增一個值為 value 的元素
  • llen(key):返回名稱為 key 的 list 的長度
  • lrange(key,end):返回名稱為 key 的 list 中 start 至 end 之間的元素
  • ltrim(key,end):擷取名稱為 key 的 list
  • lindex(key,index):返回名稱為 key 的 list 中 index 位置的元素
  • lset(key,index,value):給名稱為 key 的 list 中 index 位置的元素賦值
  • lrem(key,count,value):刪除 count 個 key 的 list 中值為 value 的元素
  • lpop(key):返回並刪除名稱為 key 的 list 中的首元素
  • rpop(key):返回並刪除名稱為 key 的 list 中的尾元素
  • blpop(key1,… key N,timeout):lpop 命令的 block 版本。
  • brpop(key1,timeout):rpop 的 block 版本。
  • rpoplpush(srckey,dstkey):返回並刪除名稱為 srckey 的 list 的尾元素,並將該元素新增到名稱為 dstkey 的 list 的頭部

對 Set 操作的命令

  • sadd(key,member):向名稱為 key 的 set 中新增元素 member
  • srem(key,member) :刪除名稱為 key 的 set 中的元素 member
  • spop(key) :隨機返回並刪除名稱為 key 的 set 中一個元素
  • smove(srckey,dstkey,member) :移到集合元素
  • scard(key) :返回名稱為 key 的 set 的基數
  • sismember(key,member) :member 是否是名稱為 key 的 set 的元素
  • sinter(key1,…key N) :求交集
  • sinterstore(dstkey,(keys)) :求交集並將交集儲存到 dstkey 的集合
  • sunion(key1,(keys)) :求並集
  • sunionstore(dstkey,(keys)) :求並集並將並集儲存到 dstkey 的集合
  • sdiff(key1,(keys)) :求差集
  • sdiffstore(dstkey,(keys)) :求差集並將差集儲存到 dstkey 的集合
  • smembers(key) :返回名稱為 key 的 set 的所有元素
  • srandmember(key) :隨機返回名稱為 key 的 set 的一個元素

對 Hash 操作的命令

  • hset(key,field,value):向名稱為 key 的 hash 中新增元素 field
  • hget(key,field):返回名稱為 key 的 hash 中 field 對應的 value
  • hmget(key,(fields)):返回名稱為 key 的 hash 中 field i 對應的 value
  • hmset(key,(fields)):向名稱為 key 的 hash 中新增元素 field
  • hincrby(key,integer):將名稱為 key 的 hash 中 field 的 value 增加 integer
  • hexists(key,field):名稱為 key 的 hash 中是否存在鍵為 field 的域
  • hdel(key,field):刪除名稱為 key 的 hash 中鍵為 field 的域
  • hlen(key):返回名稱為 key 的 hash 中元素個數
  • hkeys(key):返回名稱為 key 的 hash 中所有鍵
  • hvals(key):返回名稱為 key 的 hash 中所有鍵對應的 value
  • hgetall(key):返回名稱為 key 的 hash 中所有的鍵(field)及其對應的 value

Redis Sentinel

  • ping :返回 pong
  • sentinel masters :列出所有被監視的主伺服器,以及這些主伺服器的當前狀態。
  • sentinel slaves:列出給定主伺服器的所有從伺服器,以及這些從伺服器的當前狀態。
  • sentinel get-master-addr-by-name:返回給定名字的主伺服器的 IP 地址和埠號。如果這個主伺服器正在執行故障轉移操作,或者針對這個主伺服器的故障轉移操作已經完成,那麼這個命令返回新的主伺服器的 IP 地址和埠號。
  • sentinel reset:重置所有名字和給定模式 pattern 相匹配的主伺服器。pattern 引數是一個 Glob 風格的模式 重置操作清楚主伺服器目前的所有狀態,包括正在執行中的故障轉移,並移除目前已經發現和關聯的,主伺服器的所有從伺服器和 Sentinel 。
  • sentinel failover:當主伺服器失效時,在不詢問其他 Sentinel 意見的情況下,強制開始一次自動故障遷移(不過發起故障轉移的 Sentinel 會向其他 Sentinel 傳送一個新的配置,其他 Sentinel 會根據這個配置進行相應的更新)。