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

前言

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

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

  • 命令關(guān)鍵字命令示例;命令說明;
    • 命令參數(shù)解釋及一些說明;

其中命令關(guān)鍵字使用小寫是為了方便記憶,按規(guī)范來說應(yīng)該采用大寫字母。實(shí)際中大小寫不區(qū)分,大寫小寫Redis都能識(shí)別命令。Redis在設(shè)置命令時(shí)有一些互通的思想,如下:

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

文章會(huì)根據(jù)筆者的學(xué)習(xí)進(jìn)度持續(xù)更新……


1. Key(鍵)

key為鍵值對(duì)的鍵;value為鍵值對(duì)的值;[]為可省內(nèi)容;pattern為給定格式,類比正則式;seconds和timestamp表示時(shí)間;timeout表示時(shí)間,單位ms;host:port為主機(jī)名:端口號(hào);ttl為毫秒值;offset為數(shù)字,表示初始下標(biāo);count為數(shù)字,表示數(shù)量;destination為鍵值對(duì)的鍵,表示目的鍵;

1.1 鍵的基本操作功能

del move rename renamenx migrate

  • delDEL key [key ...];刪除給定的一個(gè)或多個(gè) key;
  • moveMOVE key db;將當(dāng)前數(shù)據(jù)庫的 key 移動(dòng)到給定的數(shù)據(jù)庫 db 當(dāng)中;
  • renameRENAME key newkey;將 key 改名為 newkey;
  • renamenxRENAMENX key newkey;當(dāng)且僅當(dāng) newkey 不存在時(shí),將 key 改名為 newkey;
  • migrateMIGRATE host port key destination-db timeout [COPY] [REPLACE];將 key 原子性地從當(dāng)前實(shí)例傳送到目標(biāo)實(shí)例 host:port 的指定數(shù)據(jù)庫上,一旦傳送成功, key 保證會(huì)出現(xiàn)在目標(biāo)實(shí)例上,而當(dāng)前實(shí)例上的 key 會(huì)被刪除;
    • COPY :不移除源實(shí)例上的 key;
    • REPLACE :替換目標(biāo)實(shí)例上已存在的 key;

1.2 鍵的獲取功能

type exists randomkey keys

  • typeTYPE key;返回?cái)?shù)據(jù)庫鍵對(duì)應(yīng)的類型;
  • existsEXISTS key;檢查給定 key 是否存在;
  • randomkeyRANDOMKEY;從當(dāng)前數(shù)據(jù)庫中隨機(jī)返回(不刪除)一個(gè) key ;
  • keysKEYS pattern;查找所有符合給定模式 pattern 的 key;
    • KEYS * 匹配數(shù)據(jù)庫中所有 key;
    • KEYS h?llo 匹配 hello , hallo 和 hxllo 等;
    • KEYS h*llo 匹配 hllo 和 heeeeello 等;
    • KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo;
    • 特殊符號(hào)用 \ 隔開;

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 中經(jīng)過排序的元素。排序默認(rèn)以數(shù)字作為對(duì)象,值被解釋為雙精度浮點(diǎn)數(shù),然后進(jìn)行比較;
  • sortSORT key;返回鍵值從小到大排序的結(jié)果;
  • sort ... ascSORT key ASC;返回鍵值從小到大排序的結(jié)果;
  • sort ... descSORT key DESC;返回鍵值從大到小排序的結(jié)果;
  • sort ... alphaSORT key ALPHA;可以對(duì)包含字符串的鍵進(jìn)行排列;
  • sort ... by ...SORT key BY pattern;可以指定某些字符串鍵,或者某個(gè)哈希鍵說包含的某些域來作為權(quán)重,對(duì)一個(gè)鍵排序;
  • sort ... limit ...SORT key LIMIT offset count;可以讓結(jié)果只返回其中部分已排序的元素;
  • sort ... get ...SORT key GET pattern;可以在鍵被排序后,根據(jù)被排序的元素,以及 GET 選項(xiàng)指定的模式,查找并返回某些鍵的值;
  • sort ... store ...SORT key STORE destination;可以將排序結(jié)果保存在指定的鍵里面;

1.4 生存時(shí)間的功能

expire pexpire expireat persist ttl pttl

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

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

dump restore

  • dumpDUMP key;序列化給定 key ,并返回被序列化的值,使用 RESTORE 命令可以將這個(gè)值反序列化為 Redis 鍵。序列化生成的值有以下幾個(gè)特點(diǎn):
    • 它帶有 64 位的校驗(yàn)和,用于檢測(cè)錯(cuò)誤, RESTORE 在進(jìn)行反序列化之前會(huì)先檢查校驗(yàn)和;
    • 值的編碼格式和 RDB 文件保持一致;
    • RDB 版本會(huì)被編碼在序列化值當(dāng)中,如果因?yàn)?Redis 的版本不同造成 RDB 格式不兼容,那么 Redis 會(huì)拒絕對(duì)這個(gè)值進(jìn)行反序列化操作;
  • restoreRESTORE key ttl serialized-value;反序列化給定的序列化值,并將它和給定的 key 關(guān)聯(lián)。參數(shù) ttl 以毫秒為單位為 key 設(shè)置生存時(shí)間;如果 ttl 為 0 ,那么不設(shè)置生存時(shí)間;

1.6 鍵的迭代遍歷功能

scan

  • scanSCAN cursor [MATCH pattern] [COUNT count];SCAN 命令是一個(gè)基于游標(biāo)的迭代器(cursor based iterator): SCAN 命令每次被調(diào)用之后, 都會(huì)向用戶返回一個(gè)新的游標(biāo), 用戶在下次迭代時(shí)需要使用這個(gè)新游標(biāo)作為 SCAN 命令的游標(biāo)參數(shù), 以此來延續(xù)之前的迭代過程;
    • 當(dāng) SCAN 命令的游標(biāo)參數(shù)被設(shè)置為 0 時(shí), 服務(wù)器將開始一次新的迭代;
    • 而當(dāng)服務(wù)器向用戶返回值為 0 的游標(biāo)時(shí), 表示迭代已結(jié)束;

1.7 OBJECT命令

refcount ecoding idletime

  • object refcountOBJECT REFCOUNT key;返回給定 key 引用所儲(chǔ)存的值的次數(shù)。此命令主要用于除錯(cuò);
  • object ecodingOBJECT ENCODING key;查看一個(gè)數(shù)據(jù)庫鍵的值對(duì)象編碼;
  • object idletimeOBJECT IDLETIME key;返回給定 key 自儲(chǔ)存以來的空轉(zhuǎn)時(shí)間,單位秒;


2. String(字符串)

key為鍵值對(duì)的鍵;value為鍵值對(duì)的值;increment為浮點(diǎn)數(shù)增量;offset為數(shù)字,表示偏移量;start和end為數(shù)字,表示索引;destkey表示結(jié)果;

2.1 鍵值對(duì)的操作功能

set get setnx getset mset mget msetnx setex psetex

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

2.2 獲取與追加的功能

strlen append setrange getrange

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

2.3 數(shù)字與浮點(diǎn)數(shù)的操作功能

incrby incr incrbyfloat decrby decr

  • incrbyINCRBY key increment;將 key 所儲(chǔ)存的整數(shù)值加上增量 increment;
  • incrINCR key;將 key 中儲(chǔ)存的數(shù)字值增 1;
  • incrbyfloatINCRBYFLOAT key increment;為 key 中所儲(chǔ)存的值加上浮點(diǎn)數(shù)增量 increment;
  • decrbyDECRBY key decrement;將 key 所儲(chǔ)存的值減去減量 decrement;
  • decrDECR key;將 key 中儲(chǔ)存的數(shù)字值減 1;

2.4 二進(jìn)制位操作的功能

setbit getbit bitcount bitop

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


3. List(列表)

key為鍵值對(duì)的鍵;value為鍵值對(duì)的值;[]為可省內(nèi)容,這里表示一個(gè)或多個(gè);timeout為數(shù)字,表示超時(shí)時(shí)間;index為數(shù)字,表示下標(biāo);pivot為某個(gè)值;start和stop為區(qū)間的下標(biāo);count為數(shù)字,表示計(jì)數(shù)器;source和destination為兩個(gè)鏈表的key,前者表示來源,后者表示目的;

3.1 添加與修改元素的功能

rpush rpushx lpush lpushx linsert lset

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

3.2 移除元素的功能

lpop blpop rpop brpop lrem

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

3.3 列表與元素的獲取功能

llen lingex lrange

  • llenLLEN key;返回列表 key 的長(zhǎng)度;
  • lingexLINDEX key index;返回列表 key 中,下標(biāo)為 index 的元素;
  • lrangeLRANGE key start stop;返回列表 key 中指定區(qū)間 [start, stop] 內(nèi)的元素;

3.4 列表的操作功能

ltrim rpoplpush brpoplpush

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


4. Hash(哈希表)

key為哈希表;field為鍵值對(duì)的鍵,也稱域;value為鍵值對(duì)的值;increment為數(shù)字,表示增量;

4.1 添加和修改鍵值對(duì)的功能

hset mhset hsetnx hincrby hincrbyfloat

  • hsetHSET key field value;將哈希表 key 中的域 field 的值設(shè)為 value;
  • mhsetHMSET key field value [field value ...];同時(shí)將多個(gè) field-value (域-值)對(duì)設(shè)置到哈希表 key 中;
  • hsetnxHSETNX key field value;將哈希表 key 中的域 field 的值設(shè)置為 value ,當(dāng)且僅當(dāng)域 field 不存在。若域 field 已經(jīng)存在,該操作無效;
  • hincrbyHINCRBY key field increment;為哈希表 key 中的域 field 的值加上整數(shù)增量 increment;
  • hincrbyfloatHINCRBYFLOAT key field increment;為哈希表 key 中的域 field 加上浮點(diǎn)數(shù)增量 increment;

4.2 移除鍵值對(duì)的功能

hdel

  • hdelHDEL key field [field ...];刪除哈希表 key 中的一個(gè)或多個(gè)指定域,不存在的域?qū)⒈缓雎裕?/li>

4.3 鍵值對(duì)的獲取功能

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 中,一個(gè)或多個(gè)給定域的值;
  • hlenHLEN key;返回哈希表 key 中域的數(shù)量;

4.4 哈希表的迭代遍歷功能

hscan

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


5. Set(集合)

key為集合的鍵;member為元素;[]為可省內(nèi)容,這里表示一個(gè)或多個(gè);source為源頭集合;destination為目標(biāo)集合;count為數(shù)字;

5.1 添加和修改元素的功能

sadd

  • saddSADD key member [member ...];將一個(gè)或多個(gè) member 元素加入到集合 key 當(dāng)中,已經(jīng)存在于集合的 member 元素將被忽略;

5.2 移除元素的功能

spop srem

  • spopSPOP key;移除并返回集合中的一個(gè)隨機(jī)元素;
  • sremSREM key member [member ...];移除集合 key 中的一個(gè)或多個(gè) member 元素,不存在的 member 元素會(huì)被忽略;

5.3 元素的獲取功能

smembers sismember srandmember

  • smembersSMEMBERS key;返回集合 key 中的所有成員;
  • sismemberSISMEMBER key member;判斷集合 key 是否包含 member 元素;
  • srandmemberSRANDMEMBER key [count];如果命令執(zhí)行時(shí),只提供了 key 參數(shù),那么返回集合中的一個(gè)隨機(jī)元素;
    • 如果 count 為正數(shù),且小于集合基數(shù),那么命令返回一個(gè)包含 count 個(gè)元素的數(shù)組,數(shù)組中的元素各不相同。如果 count 大于等于集合基數(shù),那么返回整個(gè)集合;
    • 如果 count 為負(fù)數(shù),那么命令返回一個(gè)數(shù)組,數(shù)組中的元素可能會(huì)重復(fù)出現(xiàn)多次,而數(shù)組的長(zhǎng)度為 count 的絕對(duì)值;

5.4 集合的獲取功能

scard sdiff sdiffstore sinter sinterstore sunion sunionstore

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

5.5 集合的操作功能

smove

  • smoveSMOVE source destination member;將 member 元素從 source 集合移動(dòng)到 destination 集合;

5.6 集合的迭代遍歷功能

sscan

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


6. SortedSet(有序集合)

key為鍵值對(duì)的鍵;member為元素;score為分?jǐn)?shù)權(quán)重值;[]為可省內(nèi)容,這里表示一個(gè)或多個(gè);destination為目標(biāo)集合;count為數(shù)字;min和max表示浮點(diǎn)數(shù)范圍區(qū)間;start和stop為區(qū)間的下標(biāo);

6.1 添加和修改元素的功能

zadd zincrby

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

6.2 移除元素的功能

zrem zremrangebyrank zremrangebyscore

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

6.3 元素的獲取功能

zrange zrevrange zrangebyscore zrevrangebyscore zrank zrevrank zscore

  • zrangeZRANGE key start stop [WITHSCORES];返回有序集 key 中,指定下標(biāo)區(qū)間 [start, stop] 內(nèi)的元素。其中成員的位置按 score 值遞增(從小到大)來排序;
  • zrevrangeZREVRANGE key start stop [WITHSCORES];返回有序集 key 中,指定區(qū)間 [start, stop] 內(nèi)的元素。其中成員的位置按 score 值遞減(從大到小)來排列;
  • zrangebyscoreZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count];返回有序集 key 中,所有 score 值介于 [min, max] 之間的成員有序集成員按 score 值遞增(從小到大)次序排列;
    • WITHSCORES 參數(shù)決定結(jié)果集是單單返回有序集的成員,還是將有序集成員及其 score 值一起返回;
    • 可以使用 (min(max 來指定開區(qū)間;
  • zrangebyscore ... -inf +infZRANGEBYSCORE key -inf +inf;顯示整個(gè)有序集;
    • 相當(dāng)于min取負(fù)無窮,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 中元素的數(shù)量;
  • zcountZCOUNT key min max;返回有序集 key 中, score 值在 min 和 max 之間(默認(rèn)包括 score 值等于 min 或 max )的成員的數(shù)量;
  • zunionstoreZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX];計(jì)算給定的一個(gè)或多個(gè)有序集的并集,其中給定 key 的數(shù)量必須以 numkeys 參數(shù)指定,并將該并集(結(jié)果集)儲(chǔ)存到 destination 。
    • 默認(rèn)情況下,結(jié)果集中某個(gè)成員的 score 值是所有給定集下該成員 score 值之和;
    • WEIGHTS表示乘法因子,默認(rèn)為1,并集后的元素的分值 score 為 score*weight;
    • AGGREGATE可以指定并集的結(jié)果集的聚合方式;
  • zinterstoreZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX];計(jì)算給定的一個(gè)或多個(gè)有序集的交集,其中給定 key 的數(shù)量必須以 numkeys 參數(shù)指定,并將該交集(結(jié)果集)儲(chǔ)存到 destination ;
    • 類似性質(zhì)同上;

6.5 集合的迭代遍歷功能

zscan

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


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

channel表示頻道名;pattern為一個(gè)通配符,表示模式名;message表示消息;

7.1 頻道的訂閱與退訂

subscribe unsubscribe

  • subscribeSUBSCRIBE channel [channel ...];訂閱給定的一個(gè)或多個(gè)頻道的信息;
  • subscribeSUBSCRIBE channel:message;關(guān)注 “某個(gè)鍵執(zhí)行了什么命令”,返回鍵空間通知;
  • subscribeSUBSCRIBE channel:del;關(guān)注 “某個(gè)命令被什么鍵執(zhí)行了”,返回鍵事件通知;
  • unsubscribeUNSUBSCRIBE [channel [channel ...]];退訂給定的頻道;

7.2 模式的訂閱與退訂

psubscribe punsubscribe

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

7.3 發(fā)送消息

publish

  • publishPUBLISH channel message;信息 message 發(fā)送到指定的頻道 channel ;

7.4 查看訂閱信息

pubsub channels/numsub/bumpat

  • pubsub channelsPUBSUB CHANNELS [pattern];列出當(dāng)前的活躍頻道。給出 pattern 參數(shù),那么只列出和給定模式 pattern 相匹配的那些活躍頻道;
  • pubsub numsubPUBSUB NUMSUB [channel-1 ... channel-N];返回給定頻道的訂閱者數(shù)量, 訂閱模式的客戶端不計(jì)算在內(nèi)。;
  • pubsub bumpatPUBSUB NUMPAT;返回訂閱模式的數(shù)量;


8. Transaction(事務(wù))

key為鍵值對(duì)的鍵;

watch unwatch multi exec discard

  • watchWATCH key [key ...];監(jiān)視一個(gè)(或多個(gè)) key ,如果在事務(wù)執(zhí)行之前這個(gè)(或這些) key 被其他命令所改動(dòng),那么事務(wù)將被打斷;
  • unwatchUNWATCH;取消 WATCH 命令對(duì)所有 key 的監(jiān)視;
  • multiMULTI;標(biāo)記一個(gè)事務(wù)塊的開始;
  • execEXEC;執(zhí)行所有事務(wù)塊內(nèi)的命令。事務(wù)成功與否與 WATCH 命令相關(guān);
  • discardDISCARD;取消事務(wù),放棄執(zhí)行事務(wù)塊內(nèi)的所有命令;


9. Script(腳本)

sha1表示校驗(yàn)碼;script表示腳本;numkeys為數(shù)字,表示參數(shù)個(gè)數(shù); arg表示參數(shù);

9.1 校驗(yàn)相關(guān)

eval evalsha

  • evalEVAL script numkeys key [key ...] arg [arg ...];對(duì) Lua 腳本進(jìn)行求值;
  • evalshaEVALSHA sha1 numkeys key [key ...] arg [arg ...];根據(jù)給定的 sha1 校驗(yàn)碼,對(duì)緩存在服務(wù)器中的腳本進(jìn)行求值;

9.2 SCRIPT 命令

script exists/flush/kill/load

  • script existsSCRIPT EXISTS script [script ...];給定一個(gè)或多個(gè)腳本的 SHA1 校驗(yàn)和,返回一個(gè)包含 0 和 1 的列表,表示校驗(yàn)和所指定的腳本是否已經(jīng)被保存在緩存當(dāng)中;
  • script flushSCRIPT FLUSH;清除所有 Lua 腳本緩存;
  • script killSCRIPT KILL;殺死當(dāng)前正在運(yùn)行的 Lua 腳本,當(dāng)且僅當(dāng)這個(gè)腳本沒有執(zhí)行過任何寫操作時(shí),這個(gè)命令才生效;
  • script loadSCRIPT LOAD;將腳本 script 添加到腳本緩存中,但并不立即執(zhí)行這個(gè)腳本;


10. Connection(連接)

password表示密碼;message表示信息;index為數(shù)字,表示下標(biāo);

select ping quit auth echo

  • selectSELECT index;切換到指定的數(shù)據(jù)庫,數(shù)據(jù)庫索引號(hào) index 用數(shù)字值指定,以 0 作為起始索引值;
  • pingPING;使用客戶端向 Redis 服務(wù)器發(fā)送一個(gè) PING ,如果服務(wù)器運(yùn)作正常的話,會(huì)返回一個(gè) PONG。通常用于測(cè)試與服務(wù)器的連接是否仍然生效,或者用于測(cè)量延遲值;
  • quitQUIT;請(qǐng)求服務(wù)器關(guān)閉與當(dāng)前客戶端的連接;
  • authAUTH password;鍵入密碼。通過設(shè)置配置文件中 requirepass 項(xiàng)的值(使用命令 CONFIG SET requirepass password ),可以使用密碼來保護(hù) Redis 服務(wù)器;
  • echoECHO message;打印一個(gè)特定的信息 message ,測(cè)試時(shí)使用;


11. Server(服務(wù)器)

section為可選參數(shù);connection-name為字符串,表示當(dāng)前連接的名字;ip表示IP地址;port表示端口號(hào);parameter表示配置;value表示配置的參數(shù);argument表示參數(shù);

11.1 服務(wù)器的獲取功能

dbsize time lastsave monitor

  • dbsizeDBSIZE;返回當(dāng)前數(shù)據(jù)庫的 key 的數(shù)量;
  • timeTIME;返回當(dāng)前服務(wù)器時(shí)間;
  • lastsaveLASTSAVE;返回最近一次 Redis 成功將數(shù)據(jù)保存到磁盤上的時(shí)間,以 UNIX 時(shí)間戳格式表示;
  • monitorMONITOR;實(shí)時(shí)打印出 Redis 服務(wù)器接收到的命令,調(diào)試用;

11.2 服務(wù)器的操作的功能

flushdb flushall shutdown salveof

  • flushdbFLUSHDB;清空當(dāng)前數(shù)據(jù)庫中的所有 key;
  • flushallFLUSHALL;清空整個(gè) Redis 服務(wù)器的數(shù)據(jù)(刪除所有數(shù)據(jù)庫的所有 key)。此命令從不失??;
  • shutdownSHUTDOWN;停止所有客戶端;如果有至少一個(gè)保存點(diǎn)在等待,執(zhí)行 SAVE 命令;如果 AOF 選項(xiàng)被打開,更新 AOF 文件;關(guān)閉 redis 服務(wù)器;
  • slaveofSLAVEOF ip port;在 Redis 運(yùn)行時(shí)動(dòng)態(tài)地修改復(fù)制(replication)功能的行為??梢詫?dāng)前服務(wù)器轉(zhuǎn)變?yōu)橹付ǚ?wù)器的從屬服務(wù)器;
  • slaveof no oneSLAVEOF NO ONE;使得這個(gè)從屬服務(wù)器關(guān)閉復(fù)制功能,并從從屬服務(wù)器轉(zhuǎn)變回主服務(wù)器,原來同步所得的數(shù)據(jù)集不會(huì)被丟棄;
  • syncSYNC;用于復(fù)制功能(replication)的內(nèi)部命令;
  • psyncPSYNC <MASTER_RUN_ID> <OFFSET>;用于復(fù)制功能(replication)的內(nèi)部命令;

11.3 服務(wù)器持久化相關(guān)

save bgsave bgrewriteaof

  • saveSAVE;執(zhí)行一個(gè)同步保存操作,將當(dāng)前 Redis 實(shí)例的所有數(shù)據(jù)快照以 RDB 文件的形式保存到硬盤;
  • bgsaveBGSAVE;在后臺(tái)異步(Asynchronously)保存當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)到磁盤;
  • bgrewriteaofBGREWRITEAOF;AOF 文件后臺(tái)重寫;

11.4 客戶端相關(guān)操作

client list/setname/getname/kill

  • client listCLIENT LIST;以易讀的格式,返回所有連接到服務(wù)器的客戶端信息和統(tǒng)計(jì)數(shù)據(jù);
  • client setnameCLIENT SETNAME connection-name;為當(dāng)前連接分配一個(gè)名字;
  • client getnameCLIENT GETNAME;返回 CLIENT SETNAME 命令為連接設(shè)置的名字;
  • client killCLIENT KILL ip:port;關(guān)閉地址為 ip:port 的客戶端;

11.5 服務(wù)器的配置參數(shù)相關(guān)

config set/get/rewrite/resetstat

  • config setCONFIG SET parameter value;動(dòng)態(tài)地調(diào)整 Redis 服務(wù)器的配置(configuration)而無須重啟;
  • config getCONFIG GET parameter;取得運(yùn)行中的 Redis 服務(wù)器的配置參數(shù)(;
  • config rewriteCONFIG REWRITE;對(duì)啟動(dòng) Redis 服務(wù)器時(shí)所指定的 redis.conf 文件進(jìn)行改寫。通過盡可能少的修改, 將服務(wù)器當(dāng)前所使用的配置記錄到 redis.conf 文件中;
  • config resetstatCONFIG RESETSTAT;重置 INFO 命令中的某些統(tǒng)計(jì)數(shù)據(jù);

11.6 Slow log 慢查詢?nèi)罩鞠嚓P(guān)

slowlog get/len/reset

  • slowlogSLOWLOG subcommand [argument];用來記錄查詢執(zhí)行時(shí)間的日志系統(tǒng);
  • slowlogSLOWLOG GET [number];打印所有 slow log ,最大長(zhǎng)度取決于 slowlog-max-len 選項(xiàng)的值;
  • slowlogSLOWLOG GET number;打印指定數(shù)量的日志;
  • slowlogSLOWLOG LEN;查看當(dāng)前日志的數(shù)量;
  • reset:SLOWLOG RESET;清除所有慢查詢?nèi)罩荆?/li>

11.7 獲取Redis服務(wù)器的各種信息和統(tǒng)計(jì)數(shù)值

info

  • infoINFO [section];以一種易于解釋(parse)且易于閱讀的格式,返回關(guān)于 Redis 服務(wù)器的各種信息和統(tǒng)計(jì)數(shù)值??蛇x參數(shù) section 如下:
    • server : 一般 Redis 服務(wù)器信息,包含以下域:
      • redis_version : Redis 服務(wù)器版本;
      • redis_git_sha1 : Git SHA1;
      • redis_git_dirty : Git dirty flag;
      • os : Redis 服務(wù)器的宿主操作系統(tǒng);
      • arch_bits : 架構(gòu)(32 或 64 位);
      • multiplexing_api : Redis 所使用的事件處理機(jī)制;
      • gcc_version : 編譯 Redis 時(shí)所使用的 GCC 版本;
      • process_id : 服務(wù)器進(jìn)程的 PID;
      • run_id : Redis 服務(wù)器的隨機(jī)標(biāo)識(shí)符(用于 Sentinel 和集群);
      • tcp_port : TCP/IP 監(jiān)聽端口;
      • uptime_in_seconds : 自 Redis 服務(wù)器啟動(dòng)以來,經(jīng)過的秒數(shù);
      • uptime_in_days : 自 Redis 服務(wù)器啟動(dòng)以來,經(jīng)過的天數(shù);
      • lru_clock : 以分鐘為單位進(jìn)行自增的時(shí)鐘,用于 LRU 管理;
    • clients : 已連接客戶端信息,包含以下域:
      • connected_clients : 已連接客戶端的數(shù)量(不包括通過從屬服務(wù)器連接的客戶端);
      • client_longest_output_list : 當(dāng)前連接的客戶端當(dāng)中,最長(zhǎng)的輸出列表;
      • client_longest_input_buf : 當(dāng)前連接的客戶端當(dāng)中,最大輸入緩存;
      • blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客戶端的數(shù)量
    • memory : 內(nèi)存信息,包含以下域:
      • used_memory : 由 Redis 分配器分配的內(nèi)存總量,以字節(jié)(byte)為單位;
      • used_memory_human : 以人類可讀的格式返回 Redis 分配的內(nèi)存總量;
      • used_memory_rss : 從操作系統(tǒng)的角度,返回 Redis 已分配的內(nèi)存總量(俗稱常駐集大?。_@個(gè)值和 top 、 ps 等命令的輸出一致;
      • used_memory_peak : Redis 的內(nèi)存消耗峰值(以字節(jié)為單位);
      • used_memory_peak_human : 以人類可讀的格式返回 Redis 的內(nèi)存消耗峰值;
      • used_memory_lua : Lua 引擎所使用的內(nèi)存大小(以字節(jié)為單位);
      • mem_fragmentation_ratio : used_memory_rss 和 used_memory 之間的比率;
      • mem_allocator : 在編譯時(shí)指定的, Redis 所使用的內(nèi)存分配器??梢允?libc 、 jemalloc 或者 tcmalloc;
    • persistence : RDB 和 AOF 的相關(guān)信息;
    • stats: 一般統(tǒng)計(jì)信息;
    • replication : 主/從復(fù)制信息;
    • cpu : CPU 計(jì)算量統(tǒng)計(jì)信息;
    • commandstats : Redis 命令統(tǒng)計(jì)信息;
    • cluster : Redis 集群信息;
    • keyspace : 數(shù)據(jù)庫相關(guān)的統(tǒng)計(jì)信息;
    • all : 返回所有信息;
    • default: 返回默認(rèn)選擇的信息;



最后

\color{blue}{\rm\small{新人制作,如有錯(cuò)誤,歡迎指出,感激不盡!}}

\color{blue}{\rm\small{歡迎關(guān)注我,并與我交流!}}

\color{blue}{\rm\small{如需轉(zhuǎn)載,請(qǐng)標(biāo)注出處!}}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容