主頁 > 資料庫 > Redis | Redis常用命令及示例總結(API)

Redis | Redis常用命令及示例總結(API)

2021-12-07 08:07:14 資料庫

目錄
  • 前言
  • 1. Key(鍵)
    • 1.1 鍵的基本操作功能
      • del move rename renamenx migrate
    • 1.2 鍵的獲取功能
      • type exists randomkey keys
    • 1.3 鍵的排序功能
      • sort asc/desc/alpha/by/limit/get/store
    • 1.4 生存時間的功能
      • expire pexpire expireat persist ttl pttl
    • 1.5 序列化與反序列化的功能
      • dump restore
    • 1.6 鍵的迭代遍歷功能
      • scan
    • 1.7 OBJECT命令
      • refcount ecoding idletime
  • 2. String(字串)
    • 2.1 鍵值對的操作功能
      • set get setnx getset mset mget msetnx setex psetex
    • 2.2 獲取與追加的功能
      • strlen append setrange getrange
    • 2.3 數字與浮點數的操作功能
      • incrby incr incrbyfloat decrby decr
    • 2.4 二進制位操作的功能
      • setbit getbit bitcount bitop
  • 3. List(串列)
    • 3.1 添加與修改元素的功能
      • rpush rpushx lpush lpushx linsert lset
    • 3.2 移除元素的功能
      • lpop blpop rpop brpop lrem
    • 3.3 串列與元素的獲取功能
      • llen lingex lrange
    • 3.4 串列的操作功能
      • ltrim rpoplpush brpoplpush
  • 4. Hash(哈希表)
    • 4.1 添加和修改鍵值對的功能
      • hset mhset hsetnx hincrby hincrbyfloat
    • 4.2 移除鍵值對的功能
      • hdel
    • 4.3 鍵值對的獲取功能
      • hkeys hvals hgetall hexists hget hmget hlen
    • 4.4 哈希表的迭代遍歷功能
      • hscan
  • 5. Set(集合)
    • 5.1 添加和修改元素的功能
      • sadd
    • 5.2 移除元素的功能
      • spop srem
    • 5.3 元素的獲取功能
      • smembers sismember srandmember
    • 5.4 集合的獲取功能
      • scard sdiff sdiffstore sinter sinterstore sunion sunionstore
    • 5.5 集合的操作功能
      • smove
    • 5.6 集合的迭代遍歷功能
      • sscan
  • 6. SortedSet(有序集合)
    • 6.1 添加和修改元素的功能
      • zadd zincrby
    • 6.2 移除元素的功能
      • zrem zremrangebyrank zremrangebyscore
    • 6.3 元素的獲取功能
      • zrange zrevrange zrangebyscore zrevrangebyscore zrank zrevrank zscore
    • 6.4 集合的獲取功能
      • zcard zcount zunionstore zinterstore
    • 6.5 集合的迭代遍歷功能
      • zscan
  • 7. Pub/Sub(發布/訂閱)
    • 7.1 頻道的訂閱與退訂
      • subscribe unsubscribe
    • 7.2 模式的訂閱與退訂
      • psubscribe punsubscribe
    • 7.3 發送訊息
      • publish
    • 7.4 查看訂閱資訊
      • pubsub channels/numsub/bumpat
  • 8. Transaction(事務)
    • watch unwatch multi exec discard
  • 9. Script(腳本)
    • 9.1 校驗相關
      • eval evalsha
    • 9.2 SCRIPT 命令
      • script exists/flush/kill/load
  • 10. Connection(連接)
    • select ping quit auth echo
  • 11. Server(服務器)
    • 11.1 服務器的獲取功能
      • dbsize time lastsave monitor
    • 11.2 服務器的操作的功能
      • flushdb flushall shutdown salveof
    • 11.3 服務器持久化相關
      • save bgsave bgrewriteaof
    • 11.4 客戶端相關操作
      • client list/setname/getname/kill
    • 11.5 服務器的配置引數相關
      • config set/get/rewrite/resetstat
    • 11.6 Slow log 慢查詢日志相關
      • slowlog get/len/reset
    • 11.7 獲取Redis服務器的各種資訊和統計數值
      • info
  • 最后


前言

參考檔案:http://doc.redisfans.com/index.html

本篇主要總結Redis的常用命令,筆者在記錄命令時的格式如下:

  • 命令關鍵字命令示例;命令說明;
    • 命令引數解釋及一些說明;

其中命令關鍵字使用小寫是為了方便記憶,按規范來說應該采用大寫字母,實際中大小寫不區分,大寫小寫Redis都能識別命令,Redis在設定命令時有一些互通的思想,如下:

設定操作有則覆寫,無則新建, 在設定鍵值對時,若key已經存在,則將新值覆寫舊值;反之則創建一個新的鍵值對;
索引操作可以負數, 一些 start 和 end 的偏移量可以使用負數,負數偏移量表示從字串最后開始計數, -1 表示最后一個字符,而 -2 表示倒數第二個位,以此類推;
使用inf表示最值, inf可以在不知道有序集的最低和最高 score 值的情況下,使用 ZRANGEBYSCORE 這類命令;

文章會根據筆者的學習進度持續更新……


1. Key(鍵)

key為鍵值對的鍵;value為鍵值對的值;[]為可省內容;pattern為給定格式,類比正則式;seconds和timestamp表示時間;timeout表示時間,單位ms;host:port為主機名:埠號;ttl為毫秒值;offset為數字,表示初始下標;count為數字,表示數量;destination為鍵值對的鍵,表示目的鍵;

1.1 鍵的基本操作功能

del move rename renamenx migrate

  • delDEL key [key ...];洗掉給定的一個或多個 key;
  • moveMOVE key db;將當前資料庫的 key 移動到給定的資料庫 db 當中;
  • renameRENAME key newkey;將 key 改名為 newkey;
  • renamenxRENAMENX key newkey;當且僅當 newkey 不存在時,將 key 改名為 newkey;
  • migrateMIGRATE host port key destination-db timeout [COPY] [REPLACE];將 key 原子性地從當前實體傳送到目標實體 host:port 的指定資料庫上,一旦傳送成功, key 保證會出現在目標實體上,而當前實體上的 key 會被洗掉;
    • COPY :不移除源實體上的 key;
    • REPLACE :替換目標實體上已存在的 key;

1.2 鍵的獲取功能

type exists randomkey keys

  • typeTYPE key;回傳資料庫鍵對應的型別;
  • existsEXISTS key;檢查給定 key 是否存在;
  • randomkeyRANDOMKEY;從當前資料庫中隨機回傳(不洗掉)一個 key ;
  • keysKEYS pattern;查找所有符合給定模式 pattern 的 key;
    • KEYS * 匹配資料庫中所有 key;
    • KEYS h?llo 匹配 hello , hallo 和 hxllo 等;
    • KEYS h*llo 匹配 hllo 和 heeeeello 等;
    • KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo;
    • 特殊符號用 \ 隔開;

1.3 鍵的排序功能

sort asc/desc/alpha/by/limit/get/store

  • sortSORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination];回傳或保存給定串列、集合、有序集合 key 中經過排序的元素,排序默認以數字作為物件,值被解釋為雙精度浮點數,然后進行比較;
  • sortSORT key;回傳鍵值從小到大排序的結果;
  • sort ... ascSORT key ASC ;回傳鍵值從小到大排序的結果;
  • sort ... descSORT key DESC;回傳鍵值從大到小排序的結果;
  • sort ... alphaSORT key ALPHA;可以對包含字串的鍵進行排列;
  • sort ... by ...SORT key BY pattern;可以指定某些字串鍵,或者某個哈希鍵說包含的某些域來作為權重,對一個鍵排序;
  • sort ... limit ...SORT key LIMIT offset count;可以讓結果只回傳其中部分已排序的元素;
  • sort ... get ...SORT key GET pattern;可以在鍵被排序后,根據被排序的元素,以及 GET 選項指定的模式,查找并回傳某些鍵的值;
  • sort ... store ...SORT key STORE destination;可以將排序結果保存在指定的鍵里面;

1.4 生存時間的功能

expire pexpire expireat persist ttl pttl

  • expireEXPIRE key seconds;將鍵key的生存時間設定為 seconds 秒;
  • pexpirePEXPIRE key milliseconds;與 EXPIRE 命令的作用類似,將鍵key的生存時間設定為 milliseconds 毫秒;
  • expireatEXPIREAT key timestamp;將鍵 key 的過期時間設定為 timestamp 所指定的秒數時間戳;
  • pexpireatPEXPIREAT key milliseconds-timestamp;與 EXPIREAT 命令的作用類似,將鍵 key 的過期時間設定為 milliseconds-timestamp 所指定的毫秒數時間戳;
  • persistPERSIST key;移除給定 key 的生存時間,將這個 key 從『易失的』(帶生存時間 key )轉換成『持久的』(一個不帶生存時間、永不過期的 key );
  • ttlTTL key;以秒為單位,回傳給定 key 的剩余生存時間(TTL, time to live);
  • pttlPTTL key;這個命令類似于 TTL 命令,但它以毫秒為單位回傳 key 的剩余生存時間,而不是像 TTL 命令那樣,以秒為單位;

1.5 序列化與反序列化的功能

dump restore

  • dumpDUMP key;序列化給定 key ,并回傳被序列化的值,使用 RESTORE 命令可以將這個值反序列化為 Redis 鍵,序列化生成的值有以下幾個特點:
    • 它帶有 64 位的校驗和,用于檢測錯誤, RESTORE 在進行反序列化之前會先檢查校驗和;
    • 值的編碼格式和 RDB 檔案保持一致;
    • RDB 版本會被編碼在序列化值當中,如果因為 Redis 的版本不同造成 RDB 格式不兼容,那么 Redis 會拒絕對這個值進行反序列化操作;
  • restoreRESTORE key ttl serialized-value;反序列化給定的序列化值,并將它和給定的 key 關聯,引數 ttl 以毫秒為單位為 key 設定生存時間;如果 ttl 為 0 ,那么不設定生存時間;

1.6 鍵的迭代遍歷功能

scan

  • scanSCAN cursor [MATCH pattern] [COUNT count];SCAN 命令是一個基于游標的迭代器(cursor based iterator): SCAN 命令每次被呼叫之后, 都會向用戶回傳一個新的游標, 用戶在下次迭代時需要使用這個新游標作為 SCAN 命令的游標引數, 以此來延續之前的迭代程序;
    • 當 SCAN 命令的游標引數被設定為 0 時, 服務器將開始一次新的迭代;
    • 而當服務器向用戶回傳值為 0 的游標時, 表示迭代已結束;

1.7 OBJECT命令

refcount ecoding idletime

  • object refcountOBJECT REFCOUNT key;回傳給定 key 參考所儲存的值的次數,此命令主要用于除錯;
  • object ecodingOBJECT ENCODING key;查看一個資料庫鍵的值物件編碼;
  • object idletimeOBJECT IDLETIME key;回傳給定 key 自儲存以來的空轉時間,單位秒;

2. String(字串)

key為鍵值對的鍵;value為鍵值對的值;increment為浮點數增量;offset為數字,表示偏移量;start和end為數字,表示索引;destkey表示結果;

2.1 鍵值對的操作功能

set get setnx getset mset mget msetnx setex psetex

  • setSET key "value";設定鍵值對;
  • getGET key;根據鍵獲取值;
  • setnxSETNX key value;將 key 的值設為 value ,當且僅當 key 不存在;
  • getsetGETSET key value;將給定 key 的值設為 value ,并回傳 key 的舊值(old value);
  • msetMSET key value [key value ...];同時設定一個或多個 key-value 對;
  • mgetMGET key [key ...];回傳所有(一個或多個)給定 key 的值value;
  • msetnxMSETNX key value [key value ...];同時設定一個或多個 key-value 對,當且僅當所有給定 key 都不存在才成功;
  • setexSETEX key seconds value;將值 value 關聯到 key ,并將 key 的生存時間設為 seconds (以秒為單位);
  • psetexPSETEX key milliseconds value;這個命令和 SETEX 命令相似,但它以毫秒為單位設定 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位;

2.2 獲取與追加的功能

strlen append setrange getrange

  • strlenSTRLEN key;回傳 key 所儲存的字串值的長度;
  • appendAPPEND key value;如果 key 已經存在并且是一個字串, APPEND 命令將 value 追加到 key 原來的值的末尾;
  • setrangeSETRANGE key offset value;用 value 引數覆寫(overwrite)給定 key 所儲存的字串值,從偏移量 offset 開始;
  • getrangeGETRANGE key [start] [end];回傳 key 中字串值的子字串,字串的截取范圍由 start 和 end 兩個偏移量決定(包括 start 和 end 在內)(負數偏移量表示從字串最后開始計數, -1 表示最后一個字符);

2.3 數字與浮點數的操作功能

incrby incr incrbyfloat decrby decr

  • incrbyINCRBY key increment;將 key 所儲存的整數值加上增量 increment;
  • incrINCR key;將 key 中儲存的數字值增 1;
  • incrbyfloatINCRBYFLOAT key increment;為 key 中所儲存的值加上浮點數增量 increment;
  • decrbyDECRBY key decrement;將 key 所儲存的值減去減量 decrement;
  • decrDECR key;將 key 中儲存的數字值減 1;

2.4 二進制位操作的功能

setbit getbit bitcount bitop

  • setbitSETBIT key offset value;對 key 所儲存的字串值,設定或清除指定偏移量上的位(bit);
  • getbitGETBIT key offset;對 key 所儲存的字串值,獲取指定偏移量上的位(bit);
  • bitcountBITCOUNT key [start] [end];計算給定字串中,被設定為 1 的位元位的數量;
  • bitopBITOP operation destkey key [key ...];對一個或多個保存二進制位的字串 key 進行位元操作,并將結果保存到 destkey 上(operation 可以是 AND 、 OR 、 NOT 、 XOR 這四種操作中的任意一種);

3. List(串列)

key為鍵值對的鍵;value為鍵值對的值;[]為可省內容,這里表示一個或多個;timeout為數字,表示超時時間;index為數字,表示下標;pivot為某個值;start和stop為區間的下標;count為數字,表示計數器;source和destination為兩個鏈表的key,前者表示來源,后者表示目的;

3.1 添加與修改元素的功能

rpush rpushx lpush lpushx linsert lset

  • rpushRPUSH key value [value ...];將一個或多個值 value 插入到串列 key 的表尾(最右邊),當 key 不存在時,會創建空串列并執行 LPUSH 操作;
  • rpushxRPUSHX key value;將值 value 插入到串列 key 的表尾,當且僅當 key 存在并且是一個串列時操作成功;
  • lpushLPUSH key value [value ...];將一個或多個值 value 插入到串列 key 的表頭(最左邊),當 key 不存在時,會創建空串列并執行 LPUSH 操作;
  • lpushxLPUSHX key value;將值 value 插入到串列 key 的表頭,當且僅當 key 存在并且是一個串列時操作成功;
  • linsert ... before|afterLINSERT key BEFORE|AFTER pivot value;將值 value 插入到串列 key 當中,位于值 pivot 之前或之后;
  • lsetLSET key index value;將串列 key 下標為 index 的元素的值設定為 value;

3.2 移除元素的功能

lpop blpop rpop brpop lrem

  • lpopLPOP key;移除并回傳串列 key 的頭元素;
  • blpopBLPOP key [key ...] timeout;串列的阻塞式(blocking)彈出原語,當給定多個 key 引數時,按引數 key 的先后順序依次檢查各個串列,彈出第一個非空串列的頭元素;
  • rpopRPOP key;移除并回傳串列 key 的尾元素;
  • brpopBRPOP key [key ...] timeout;串列的阻塞式(blocking)彈出原語,當給定多個 key 引數時,按引數 key 的先后順序依次檢查各個串列,彈出第一個非空串列的尾部元素;
  • lremLREM key count value;根據引數 count 的值,移除串列中與引數 value 相等的元素;
    • count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數量為 count;
    • count < 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數量為 count 的絕對值;
    • count = 0 : 移除表中所有與 value 相等的值;

3.3 串列與元素的獲取功能

llen lingex lrange

  • llenLLEN key;回傳串列 key 的長度;
  • lingexLINDEX key index;回傳串列 key 中,下標為 index 的元素;
  • lrangeLRANGE key start stop;回傳串列 key 中指定區間 [start, stop] 內的元素;

3.4 串列的操作功能

ltrim rpoplpush brpoplpush

  • ltrimLTRIM key start stop;對一個串列進行修剪(trim),保留區間 [start, stop] 內的元素;
  • rpoplpushRPOPLPUSH source destination;在一個原子時間內,執行以下兩個動作:
    • 將串列 source 中的最后一個元素(尾元素)彈出,并回傳給客戶端;
    • 將 source 彈出的元素插入到串列 destination ,作為 destination 串列的的頭元素;
  • brpoplpushBRPOPLPUSH source destination timeout;是 RPOPLPUSH 的阻塞版本;
    • 當給定串列 source 不為空時, BRPOPLPUSH 的表現和 RPOPLPUSH 一樣;
    • 當串列 source 為空時, BRPOPLPUSH 命令將阻塞連接,直到等待超時,或有另一個客戶端對 source 執行 LPUSH 或 RPUSH 命令為止;

4. Hash(哈希表)

key為哈希表;field為鍵值對的鍵,也稱域;value為鍵值對的值;increment為數字,表示增量;

4.1 添加和修改鍵值對的功能

hset mhset hsetnx hincrby hincrbyfloat

  • hsetHSET key field value;將哈希表 key 中的域 field 的值設為 value;
  • mhsetHMSET key field value [field value ...];同時將多個 field-value (域-值)對設定到哈希表 key 中;
  • hsetnxHSETNX key field value;將哈希表 key 中的域 field 的值設定為 value ,當且僅當域 field 不存在,若域 field 已經存在,該操作無效;
  • hincrbyHINCRBY key field increment;為哈希表 key 中的域 field 的值加上整數增量 increment;
  • hincrbyfloatHINCRBYFLOAT key field increment;為哈希表 key 中的域 field 加上浮點數增量 increment;

4.2 移除鍵值對的功能

hdel

  • hdelHDEL key field [field ...];洗掉哈希表 key 中的一個或多個指定域,不存在的域將被忽略;

4.3 鍵值對的獲取功能

hkeys hvals hgetall hexists hget hmget hlen

  • hkeysHKEYS key;回傳哈希表 key 中的所有域 field;
  • hvalsHVALS key;回傳哈希表 key 中所有域的值 value;
  • hgetallHGETALL key;回傳哈希表 key 中,所有的域 field 和值 value;
  • hexistsHEXISTS key field;查看哈希表 key 中,給定域 field 是否存在;
  • hgetHGET key field;回傳哈希表 key 中給定域 field 的值;
  • hmgetHMGET key field [field ...];回傳哈希表 key 中,一個或多個給定域的值;
  • hlenHLEN key;回傳哈希表 key 中域的數量;

4.4 哈希表的迭代遍歷功能

hscan

  • hscanHSCAN key cursor [MATCH pattern] [COUNT count];參考《鍵的迭代遍歷功能 scan》;

5. Set(集合)

key為集合的鍵;member為元素;[]為可省內容,這里表示一個或多個;source為源頭集合;destination為目標集合;count為數字;

5.1 添加和修改元素的功能

sadd

  • saddSADD key member [member ...];將一個或多個 member 元素加入到集合 key 當中,已經存在于集合的 member 元素將被忽略;

5.2 移除元素的功能

spop srem

  • spopSPOP key;移除并回傳集合中的一個隨機元素;
  • sremSREM key member [member ...];移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略;

5.3 元素的獲取功能

smembers sismember srandmember

  • smembersSMEMBERS key;回傳集合 key 中的所有成員;
  • sismemberSISMEMBER key member;判斷集合 key 是否包含 member 元素;
  • srandmemberSRANDMEMBER key [count];如果命令執行時,只提供了 key 引數,那么回傳集合中的一個隨機元素;
    • 如果 count 為正數,且小于集合基數,那么命令回傳一個包含 count 個元素的陣列,陣列中的元素各不相同,如果 count 大于等于集合基數,那么回傳整個集合;
    • 如果 count 為負數,那么命令回傳一個陣列,陣列中的元素可能會重復出現多次,而陣列的長度為 count 的絕對值;

5.4 集合的獲取功能

scard sdiff sdiffstore sinter sinterstore sunion sunionstore

  • scardSCARD key;回傳集合 key 中元素的數量;
  • sdiffSDIFF key [key ...];回傳一個集合的全部成員,該集合是所有給定集合之間的差集;
  • sdiffstoreSDIFFSTORE destination key [key ...];這個命令的作用和 SDIFF 類似,但它將結果保存到 destination 集合,而不是簡單地回傳結果集;
  • sinterSINTER key [key ...];回傳一個集合的全部成員,該集合是所有給定集合的交集;
  • sinterstoreSINTERSTORE destination key [key ...];這個命令類似于 SINTER 命令,但它將結果保存到 destination 集合,而不是簡單地回傳結果集;
  • sunionSUNION key [key ...];回傳一個集合的全部成員,該集合是所有給定集合的并集;
  • sunionstoreSUNIONSTORE destination key [key ...];這個命令類似于 SUNION 命令,但它將結果保存到 destination 集合,而不是簡單地回傳結果集;

5.5 集合的操作功能

smove

  • smoveSMOVE source destination member;將 member 元素從 source 集合移動到 destination 集合;

5.6 集合的迭代遍歷功能

sscan

  • sscanSSCAN key cursor [MATCH pattern] [COUNT count];參考《鍵的迭代遍歷功能 scan》;

6. SortedSet(有序集合)

key為鍵值對的鍵;member為元素;score為分數權重值;[]為可省內容,這里表示一個或多個;destination為目標集合;count為數字;min和max表示浮點數范圍區間;start和stop為區間的下標;

6.1 添加和修改元素的功能

zadd zincrby

  • zaddZADD key score member [[score member] [score member] ...];將一個或多個 member 元素及其 score 值加入到有序集 key 當中;
  • zincrbyZINCRBY key increment member;為有序集 key 的成員 member 的 score 值加上增量 increment ;

6.2 移除元素的功能

zrem zremrangebyrank zremrangebyscore

  • zremZREM key member [member ...];移除有序集 key 中的一個或多個成員,不存在的成員將被忽略;
  • zremrangebyrankZREMRANGEBYRANK key start stop;移除有序集 key 中,指定下標排名(rank)區間 [start, stop] 內的所有成員;
  • zremrangebyscoreZREMRANGEBYSCORE key min max;移除有序集 key 中,所有 score 值介于 [min, max] 之間;

6.3 元素的獲取功能

zrange zrevrange zrangebyscore zrevrangebyscore zrank zrevrank zscore

  • zrangeZRANGE key start stop [WITHSCORES];回傳有序集 key 中,指定下標區間 [start, stop] 內的元素,其中成員的位置按 score 值遞增(從小到大)來排序;
  • zrevrangeZREVRANGE key start stop [WITHSCORES];回傳有序集 key 中,指定區間 [start, stop] 內的元素,其中成員的位置按 score 值遞減(從大到小)來排列;
  • zrangebyscoreZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count];回傳有序集 key 中,所有 score 值介于 [min, max] 之間的成員有序集成員按 score 值遞增(從小到大)次序排列;
    • WITHSCORES 引數決定結果集是單單回傳有序集的成員,還是將有序集成員及其 score 值一起回傳;
    • 可以使用 (min(max 來指定開區間;
  • zrangebyscore ... -inf +infZRANGEBYSCORE key -inf +inf;顯示整個有序集;
    • 相當于min取負無窮,max取正無窮,inf可以在不知道有序集的最低和最高 score 值的情況下,使用 ZRANGEBYSCORE 這類命令;
  • zrevrangebyscoreZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count];回傳有序集 key 中, score 值介于 [min, max] 之間的所有的成員,有序集成員按 score 值遞減(從大到小)的次序排列;
    • 其他類似同上;
  • zrankZRANK key member;回傳有序集 key 中元素的排名 rank,其中有序集成員按 score 值遞增(從小到大)順序排列;
  • zrevrankZREVRANK key member;回傳有序集 key 中元素的排名 rank,其中有序集成員按 score 值遞減(從大到小)排序;
  • zscoreZSCORE key member;回傳有序集 key 中,成員 member 的 score 值;

6.4 集合的獲取功能

zcard zcount zunionstore zinterstore

  • zcardZCARD key;回傳集合 key 中元素的數量;
  • zcountZCOUNT key min max;回傳有序集 key 中, score 值在 min 和 max 之間(默認包括 score 值等于 min 或 max )的成員的數量;
  • zunionstoreZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX];計算給定的一個或多個有序集的并集,其中給定 key 的數量必須以 numkeys 引數指定,并將該并集(結果集)儲存到 destination ,
    • 默認情況下,結果集中某個成員的 score 值是所有給定集下該成員 score 值之和;
    • WEIGHTS表示乘法因子,默認為1,并集后的元素的分值 score 為 score*weight;
    • AGGREGATE可以指定并集的結果集的聚合方式;
  • zinterstoreZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX];計算給定的一個或多個有序集的交集,其中給定 key 的數量必須以 numkeys 引數指定,并將該交集(結果集)儲存到 destination ;
    • 類似性質同上;

6.5 集合的迭代遍歷功能

zscan

  • zscanZSCAN key cursor [MATCH pattern] [COUNT count];參考《鍵的迭代遍歷功能 scan》;

7. Pub/Sub(發布/訂閱)

channel表示頻道名;pattern為一個通配符,表示模式名;message表示訊息;

7.1 頻道的訂閱與退訂

subscribe unsubscribe

  • subscribeSUBSCRIBE channel [channel ...];訂閱給定的一個或多個頻道的資訊;
  • subscribeSUBSCRIBE channel:message;關注 “某個鍵執行了什么命令”,回傳鍵空間通知;
  • subscribeSUBSCRIBE channel:del;關注 “某個命令被什么鍵執行了”,回傳鍵事件通知;
  • unsubscribeUNSUBSCRIBE [channel [channel ...]];退訂給定的頻道;

7.2 模式的訂閱與退訂

psubscribe punsubscribe

  • psubscribePSUBSCRIBE pattern [pattern ...];訂閱一個或多個符合給定模式的頻道,以 /* 作為匹配符;
  • punsubscribePUNSUBSCRIBE [pattern [pattern ...]];退訂所有給定模式;

7.3 發送訊息

publish

  • publishPUBLISH channel message;資訊 message 發送到指定的頻道 channel ;

7.4 查看訂閱資訊

pubsub channels/numsub/bumpat

  • pubsub channelsPUBSUB CHANNELS [pattern];列出當前的活躍頻道,給出 pattern 引數,那么只列出和給定模式 pattern 相匹配的那些活躍頻道;
  • pubsub numsubPUBSUB NUMSUB [channel-1 ... channel-N];回傳給定頻道的訂閱者數量, 訂閱模式的客戶端不計算在內,;
  • pubsub bumpatPUBSUB NUMPAT;回傳訂閱模式的數量;

8. Transaction(事務)

key為鍵值對的鍵;

watch unwatch multi exec discard

  • watchWATCH key [key ...];監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷;
  • unwatchUNWATCH;取消 WATCH 命令對所有 key 的監視;
  • multiMULTI;標記一個事務塊的開始;
  • execEXEC;執行所有事務塊內的命令,事務成功與否與 WATCH 命令相關;
  • discardDISCARD;取消事務,放棄執行事務塊內的所有命令;

9. Script(腳本)

sha1表示校驗碼;script表示腳本;numkeys為數字,表示引數個數; arg表示引數;

9.1 校驗相關

eval evalsha

  • evalEVAL script numkeys key [key ...] arg [arg ...];對 Lua 腳本進行求值;
  • evalshaEVALSHA sha1 numkeys key [key ...] arg [arg ...];根據給定的 sha1 校驗碼,對快取在服務器中的腳本進行求值;

9.2 SCRIPT 命令

script exists/flush/kill/load

  • script existsSCRIPT EXISTS script [script ...];給定一個或多個腳本的 SHA1 校驗和,回傳一個包含 0 和 1 的串列,表示校驗和所指定的腳本是否已經被保存在快取當中;
  • script flushSCRIPT FLUSH;清除所有 Lua 腳本快取;
  • script killSCRIPT KILL;殺死當前正在運行的 Lua 腳本,當且僅當這個腳本沒有執行過任何寫操作時,這個命令才生效;
  • script loadSCRIPT LOAD;將腳本 script 添加到腳本快取中,但并不立即執行這個腳本;

10. Connection(連接)

password表示密碼;message表示資訊;index為數字,表示下標;

select ping quit auth echo

  • selectSELECT index;切換到指定的資料庫,資料庫索引號 index 用數字值指定,以 0 作為起始索引值;
  • pingPING;使用客戶端向 Redis 服務器發送一個 PING ,如果服務器運作正常的話,會回傳一個 PONG,通常用于測驗與服務器的連接是否仍然生效,或者用于測量延遲值;
  • quitQUIT;請求服務器關閉與當前客戶端的連接;
  • authAUTH password;鍵入密碼,通過設定組態檔中 requirepass 項的值(使用命令 CONFIG SET requirepass password ),可以使用密碼來保護 Redis 服務器;
  • echoECHO message;列印一個特定的資訊 message ,測驗時使用;

11. Server(服務器)

section為可選引數;connection-name為字串,表示當前連接的名字;ip表示IP地址;port表示埠號;parameter表示配置;value表示配置的引數;argument表示引數;

11.1 服務器的獲取功能

dbsize time lastsave monitor

  • dbsizeDBSIZE;回傳當前資料庫的 key 的數量;
  • timeTIME;回傳當前服務器時間;
  • lastsaveLASTSAVE;回傳最近一次 Redis 成功將資料保存到磁盤上的時間,以 UNIX 時間戳格式表示;
  • monitorMONITOR;實時列印出 Redis 服務器接收到的命令,除錯用;

11.2 服務器的操作的功能

flushdb flushall shutdown salveof

  • flushdbFLUSHDB;清空當前資料庫中的所有 key;
  • flushallFLUSHALL;清空整個 Redis 服務器的資料(洗掉所有資料庫的所有 key),此命令從不失敗;
  • shutdownSHUTDOWN;停止所有客戶端;如果有至少一個保存點在等待,執行 SAVE 命令;如果 AOF 選項被打開,更新 AOF 檔案;關閉 redis 服務器;
  • slaveofSLAVEOF ip port;在 Redis 運行時動態地修改復制(replication)功能的行為,可以將當前服務器轉變為指定服務器的從屬服務器;
  • slaveof no oneSLAVEOF NO ONE;使得這個從屬服務器關閉復制功能,并從從屬服務器轉變回主服務器,原來同步所得的資料集不會被丟棄;
  • syncSYNC;用于復制功能(replication)的內部命令;
  • psyncPSYNC <MASTER_RUN_ID> <OFFSET>;用于復制功能(replication)的內部命令;

11.3 服務器持久化相關

save bgsave bgrewriteaof

  • saveSAVE;執行一個同步保存操作,將當前 Redis 實體的所有資料快照以 RDB 檔案的形式保存到硬碟;
  • bgsaveBGSAVE;在后臺異步(Asynchronously)保存當前資料庫的資料到磁盤;
  • bgrewriteaofBGREWRITEAOF;AOF 檔案后臺重寫;

11.4 客戶端相關操作

client list/setname/getname/kill

  • client listCLIENT LIST;以易讀的格式,回傳所有連接到服務器的客戶端資訊和統計資料;
  • client setnameCLIENT SETNAME connection-name;為當前連接分配一個名字;
  • client getnameCLIENT GETNAME;回傳 CLIENT SETNAME 命令為連接設定的名字;
  • client killCLIENT KILL ip:port;關閉地址為 ip:port 的客戶端;

11.5 服務器的配置引數相關

config set/get/rewrite/resetstat

  • config setCONFIG SET parameter value;動態地調整 Redis 服務器的配置(configuration)而無須重啟;
  • config getCONFIG GET parameter;取得運行中的 Redis 服務器的配置引數(;
  • config rewriteCONFIG REWRITE;對啟動 Redis 服務器時所指定的 redis.conf 檔案進行改寫,通過盡可能少的修改, 將服務器當前所使用的配置記錄到 redis.conf 檔案中;
  • config resetstatCONFIG RESETSTAT;重置 INFO 命令中的某些統計資料;

11.6 Slow log 慢查詢日志相關

slowlog get/len/reset

  • slowlogSLOWLOG subcommand [argument];用來記錄查詢執行時間的日志系統;
  • slowlogSLOWLOG GET [number];列印所有 slow log ,最大長度取決于 slowlog-max-len 選項的值;
  • slowlogSLOWLOG GET number;列印指定數量的日志;
  • slowlog SLOWLOG LEN;查看當前日志的數量;
  • reset:SLOWLOG RESET;清除所有慢查詢日志;

11.7 獲取Redis服務器的各種資訊和統計數值

info

  • infoINFO [section];以一種易于解釋(parse)且易于閱讀的格式,回傳關于 Redis 服務器的各種資訊和統計數值,可選引數 section 如下:
    • server : 一般 Redis 服務器資訊,包含以下域:
      • redis_version : Redis 服務器版本;
      • redis_git_sha1 : Git SHA1;
      • redis_git_dirty : Git dirty flag;
      • os : Redis 服務器的宿主作業系統;
      • arch_bits : 架構(32 或 64 位);
      • multiplexing_api : Redis 所使用的事件處理機制;
      • gcc_version : 編譯 Redis 時所使用的 GCC 版本;
      • process_id : 服務器行程的 PID;
      • run_id : Redis 服務器的隨機識別符號(用于 Sentinel 和集群);
      • tcp_port : TCP/IP 監聽埠;
      • uptime_in_seconds : 自 Redis 服務器啟動以來,經過的秒數;
      • uptime_in_days : 自 Redis 服務器啟動以來,經過的天數;
      • lru_clock : 以分鐘為單位進行自增的時鐘,用于 LRU 管理;
    • clients : 已連接客戶端資訊,包含以下域:
      • connected_clients : 已連接客戶端的數量(不包括通過從屬服務器連接的客戶端);
      • client_longest_output_list : 當前連接的客戶端當中,最長的輸出串列;
      • client_longest_input_buf : 當前連接的客戶端當中,最大輸入快取;
      • blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客戶端的數量
    • memory : 記憶體資訊,包含以下域:
      • used_memory : 由 Redis 分配器分配的記憶體總量,以位元組(byte)為單位;
      • used_memory_human : 以人類可讀的格式回傳 Redis 分配的記憶體總量;
      • used_memory_rss : 從作業系統的角度,回傳 Redis 已分配的記憶體總量(俗稱常駐集大小),這個值和 top 、 ps 等命令的輸出一致;
      • used_memory_peak : Redis 的記憶體消耗峰值(以位元組為單位);
      • used_memory_peak_human : 以人類可讀的格式回傳 Redis 的記憶體消耗峰值;
      • used_memory_lua : Lua 引擎所使用的記憶體大小(以位元組為單位);
      • mem_fragmentation_ratio : used_memory_rss 和 used_memory 之間的比率;
      • mem_allocator : 在編譯時指定的, Redis 所使用的記憶體分配器,可以是 libc 、 jemalloc 或者 tcmalloc;
    • persistence : RDB 和 AOF 的相關資訊;
    • stats : 一般統計資訊;
    • replication : 主/從復制資訊;
    • cpu : CPU 計算量統計資訊;
    • commandstats : Redis 命令統計資訊;
    • cluster : Redis 集群資訊;
    • keyspace : 資料庫相關的統計資訊;
    • all : 回傳所有資訊;
    • default : 回傳默認選擇的資訊;


最后

新人制作,如有錯誤,歡迎指出,感激不盡!
歡迎關注公眾號,會分享一些更日常的東西!
如需轉載,請標注出處!

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374464.html

標籤:其他

上一篇:Redis | 第8章 發布訂閱與事務《Redis設計與實作》

下一篇:Redis | 第9章 Lua 腳本與排序《Redis設計與實作》

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more