本文實(shí)例總結(jié)了redis操作。分享給大家供大家參考,具體如下:
相關(guān)內(nèi)容:
雖然有參考文檔,而且記憶太多也是耗腦,但學(xué)習(xí)的時(shí)候還是想要有個(gè)系統(tǒng)劃分開(kāi)知識(shí)點(diǎn)的文檔,即使不要求去細(xì)致記憶,但劃分開(kāi)知識(shí)塊后腦子里的印象才會(huì)更清晰,所以就有了這個(gè)博文。
主要是將各種命令進(jìn)行劃分成不同的功能歸屬
- redis的介紹:
- 客戶端連接操作
- 服務(wù)端操作
- string操作
- hash操作
- list操作
- set操作
- sort set操作
- key操作
- 發(fā)布\訂閱
- 事務(wù)
參考:w3school
首發(fā)時(shí)間:2018-03-10 15:36
Redis的介紹:
- Redis是一種非關(guān)系型數(shù)據(jù)庫(kù) ,是一個(gè)高性能的key-value數(shù)據(jù)庫(kù) ,設(shè)置的值也是以鍵值對(duì)存在的
- Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤(pán)中,重啟的時(shí)候可以再次加載進(jìn)行使用
- Redis不僅僅支持簡(jiǎn)單的key-value類型的數(shù)據(jù),同時(shí)還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
- Redis還支持?jǐn)?shù)據(jù)備份
- Redis的所有操作都是原子性的
- Redis支持五種數(shù)據(jù)類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted
set:有序集合)。
客戶端連接操作:
-
啟動(dòng)redis客戶端連接:
- redis-cli [-h host] [-p port] [-a password ]
- host是服務(wù)端IP
- port是服務(wù)端端口
- password是連接密碼
- 端口port 默認(rèn)是6379

-
斷開(kāi)連接: quit
-
客戶端連接測(cè)試:
- auth:如果設(shè)置了密碼,但連接的時(shí)候沒(méi)有使用-a password,那么可以在連接完成后使用auth password來(lái)解鎖,解鎖之后才能使用其他 Redis 命令
- echo message:打印一個(gè)特定的信息 message ,測(cè)試時(shí)使用。
- ping [message]:使用客戶端向 Redis 服務(wù)器發(fā)送一個(gè) PING ,如果服務(wù)器運(yùn)作正常的話,會(huì)返回一個(gè) PONG 。通常用于測(cè)試與服務(wù)器的連接是否仍然生效,或者用于測(cè)量延遲值。如果設(shè)置了message,那么返回值為message。
-
切換數(shù)據(jù)庫(kù)
- select index:切換到指定的數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)索引號(hào) index 用數(shù)字值指定,以 0 作為起始索引值。默認(rèn)使用 0 號(hào)數(shù)據(jù)庫(kù)。可以從標(biāo)識(shí)看出當(dāng)前是哪個(gè)數(shù)據(jù)庫(kù)。

:
服務(wù)端操作:
-
數(shù)據(jù)持久化:
-
snapshot快照持久化:保存的是所有數(shù)據(jù),默認(rèn)情況下,自動(dòng)執(zhí)行快照持久化,保存文件為.rbd
- 如何打開(kāi)snapshot記錄功能:
- 如何使用:
- 使用save:SAVE 命令執(zhí)行一個(gè)同步保存操作,將當(dāng)前 Redis 實(shí)例的所有數(shù)據(jù)快照(snapshot)以 RDB 文件的形式保存到硬盤(pán)。一般來(lái)說(shuō),在生產(chǎn)環(huán)境很少執(zhí)行 SAVE 操作,因?yàn)樗鼤?huì)阻塞所有客戶端,保存數(shù)據(jù)庫(kù)的任務(wù)通常由BGSAVE 命令異步地執(zhí)行。然而,如果負(fù)責(zé)保存數(shù)據(jù)的后臺(tái)子進(jìn)程不幸出現(xiàn)問(wèn)題時(shí), SAVE 可以作為保存數(shù)據(jù)的最后手段來(lái)使用。
- 使用bgsave:與save不同的是會(huì)在后臺(tái)進(jìn)行備份,不會(huì)堵塞當(dāng)前所有客戶端。
- 如何恢復(fù)數(shù)據(jù): 使用snapshot方式保存會(huì)有一個(gè).rbd文件(config get dbfilename可獲知是哪個(gè)文件),保存完畢后將這個(gè)文件復(fù)制到外面一份,當(dāng)需要恢復(fù)的時(shí)候,關(guān)閉redis服務(wù),將.rbd復(fù)制回來(lái)覆蓋,重啟redis服務(wù)即可
-
AOF日志記錄型持久化:保存的是操作日志
- 如何打開(kāi)aof記錄功能: config set appendonly “yes”
- 如何使用: 開(kāi)啟aof功能后,會(huì)自動(dòng)記錄執(zhí)行的命令
- 如何恢復(fù):與rdb恢復(fù)數(shù)據(jù)方式相同,會(huì)有一個(gè).aof文件(config get appendfilename可獲知是哪個(gè)文件,如果不行就看配置文件),保存完畢后將這個(gè)文件復(fù)制到外面一份,當(dāng)需要恢復(fù)的時(shí)候,關(guān)閉redis服務(wù),將.aof復(fù)制回來(lái)覆蓋,重啟redis服務(wù)即可
- 如果rdb文件,和aof文件都存在,優(yōu)先用“AOF"來(lái)恢復(fù)數(shù)據(jù)【這個(gè)要謹(jǐn)慎使用,有可能因?yàn)檫@個(gè)而發(fā)生”刪庫(kù)“】
- 恢復(fù)時(shí)rdb和aof,rdb恢復(fù)的快
-
客戶端管理:
-
斷開(kāi)客戶端:CLIENT KILL ip:port 【關(guān)閉地址為 ip:port 的客戶端。】
-
設(shè)置客戶端名稱:CLIENT SETNAME connection-name 【為當(dāng)前連接分配一個(gè)名字。】
-
獲取客戶端名稱:CLIENT GETNAME 【返回 CLIENT SETNAME 命令為連接設(shè)置的名字。創(chuàng)建的連接默認(rèn)是沒(méi)有名字的】
-
獲取客戶端連接信息:CLIENT LIST 【返回所有連接到服務(wù)器的客戶端信息和統(tǒng)計(jì)數(shù)據(jù)。】
-
服務(wù)端配置管理:
-
數(shù)據(jù)管理:
-
其他:
String操作:
String是字符串的意思,在redis中就是表示“設(shè)置變量的值為一個(gè)字符串”
-
設(shè)置string:
- set key value [EX seconds] [PX milliseconds] [NX|XX] :設(shè)置鍵值對(duì),無(wú)論key是否存在,存在則覆蓋
- key:就是設(shè)置的鍵名
- value:對(duì)應(yīng)的鍵的值,默認(rèn)為字符串,可以加雙引號(hào),也可以不加
- ex:設(shè)置鍵的過(guò)期時(shí)間為 seconds 秒
- px:與ex不同的是代表多少毫秒失效
- nx:只在鍵不存在時(shí),才對(duì)鍵進(jìn)行設(shè)置操作 【當(dāng)使用setnx設(shè)置值時(shí)默認(rèn)有nx】
- xx:只在鍵已經(jīng)存在時(shí),才對(duì)鍵進(jìn)行設(shè)置操作

- setnx key value :只有在 key 不存在時(shí)設(shè)置 鍵值對(duì)
- setex key seconds value:設(shè)置鍵值對(duì)的過(guò)期時(shí)間為seconds 秒
- setbit key offset value: 設(shè)置對(duì)應(yīng)二進(jìn)制的offset位為value【每個(gè)字符占八位,從高位到低位為0-7】

- setrange key offset value :用 value 參數(shù)覆蓋給定 key 所儲(chǔ)存的字符串值,從偏移量 offset 開(kāi)始。

- mset key value [key value ...]:同時(shí)設(shè)置一個(gè)或多個(gè) key‐value 對(duì)。

- msetnx key value [key value ...]:當(dāng)所有鍵都不存在時(shí),同時(shí)設(shè)置一個(gè)或多個(gè) key‐value 對(duì)。只要一個(gè)給定 key 已存在, 全部設(shè)置操作都會(huì)取消(原子性)
- append key value:如果 key 已經(jīng)存在并且是一個(gè)字符串, append命令將 value 追加到 key 原來(lái)的值的末尾。如果 key 不存在, append就簡(jiǎn)單地將給定 key 設(shè)為 value ,就像執(zhí)行 SET key value 一樣。 如果key不是一個(gè)字符串,將報(bào)錯(cuò)。

-
獲取string:
- get key :獲取對(duì)應(yīng)鍵的鍵值
- mget key [key ...]:獲取多個(gè)鍵的值
- getrange key start end:返回 key 中字符串值的子字符串,字符串的截取范圍為[start , end]
- getset key newvalue:返回key的值,并設(shè)置key的值為newvalue
- getbit key offset: 獲取字符串所代表的二進(jìn)制位的offset數(shù)值

- strlen key :獲取key對(duì)應(yīng)字符串的長(zhǎng)度
- bitcount key [start end]:對(duì)應(yīng)對(duì)應(yīng)字符串的二進(jìn)制中為1的數(shù)量
-
其他操作:
- decr key: 當(dāng)字符串為數(shù)字時(shí),將 key 中儲(chǔ)存的數(shù)字值減一,其余時(shí)報(bào)錯(cuò)。如果 key 不存在,那么 key 的值會(huì)先被初始化為 0 ,然后再執(zhí)行 decr 操作。
- decrby key decrement:與decr key不同的是指定減少數(shù)量為decrement。如果 key 不存在,那么 key 的值會(huì)先被初始化為 0 ,然后再執(zhí)行 decrby 操作。
- incr key:當(dāng)字符串為數(shù)字時(shí),將 key 中儲(chǔ)存的數(shù)字值增一,其余時(shí)報(bào)錯(cuò)。如果 key 不存在,那么 key 的值會(huì)先被初始化為 0 ,然后再執(zhí)行 incr操作。
- incrby key increment:當(dāng)字符串為數(shù)字時(shí),將 key 所儲(chǔ)存的值加上增量 increment 。如果 key 不存在,那么 key 的值會(huì)先被初始化為 0 ,然后再執(zhí)行incrby 命令。
- incrbyfloat key increment:與incrby key increment不同的是,增長(zhǎng)的值為浮點(diǎn)數(shù)。
- bitop operation destkey key [key ...]: 對(duì)一個(gè)或多個(gè)保存二進(jìn)制位的字符串或十六進(jìn)制字符串或普通字符串 key 進(jìn)行位元操作,并將結(jié)果保存到 destkey 上。
- operation可以是and,or,not,xor(異或)


- 當(dāng) bitop 處理不同長(zhǎng)度的字符串時(shí),較短的那個(gè)字符串所缺少的部分會(huì)被看作 0 。空的 key 也被看作是包含 0 的字符串序列
-
補(bǔ)充:
- m前綴的操作是具有原子性的,只有一個(gè)失敗就報(bào)錯(cuò),比如mset設(shè)置多個(gè)值,只要一個(gè)設(shè)置失敗,那么就會(huì)報(bào)錯(cuò),并全部設(shè)置失敗。
- 并且redis是有數(shù)據(jù)類型的,操作會(huì)檢測(cè)數(shù)據(jù)類型,除去一些能“覆蓋”原變量,忽略原變量類型的操作,其他操作遇到不符合的類型都會(huì)報(bào)錯(cuò)
Hash操作:
redis中的hash相當(dāng)于key只是一個(gè)索引值,指向一個(gè)哈希表,它的值是一個(gè)域值對(duì)(field-value)區(qū)域

-
設(shè)置hash:
- hset key field value:將哈希表 key 中的域 field 的值設(shè)為 value 。如果 key 不存在,一個(gè)新的哈希表被創(chuàng)建并進(jìn)行hset操作。如果域 field 已經(jīng)存在于哈希表中,舊值將被覆蓋。
- hsetnx key field value:將哈希表 key 中的域 field 的值設(shè)置為 value ,當(dāng)且僅當(dāng)域 field 不存在。
- hmset key field value [field value ...]:同時(shí)將多個(gè) field‐value (域-值)對(duì)設(shè)置到哈希表 key 中。
-
獲取hash:
- hget key field:獲取哈希表中的field的值,只返回值value
- hgetall key:獲取哈希表中的所有field的值,返回值中,奇數(shù)行為field,偶數(shù)行為value

- hmget key field [field…]:返回哈希表 key 中,一個(gè)或多個(gè)給定域的值,只返回值value
- hvals key:獲取哈希表中的所有field的值,只返回value

- hkeys key:獲取哈希表中的所有field,只返回field
- hscan key cursor [MATCH pattern] [COUNT count]:用于增量地迭代hash
- cursor是 迭代的開(kāi)始索引,第一次為0,迭代中第一行返回值為下一次繼續(xù)迭代的索引,如果為0代表迭代完畢
- Match pattenrn是 匹配field的模式 ,不是value也不是key!!
- count count是此次迭代的數(shù)量

- hlen key:返回哈希表 key 中域的數(shù)量。
- hexists key field:查看哈希表 key 中,給定域 field 是否存在。
-
其他操作:
- hdel key field [field ...]:刪除哈希表 key 中的一個(gè)或多個(gè)指定域,不存在的域?qū)⒈缓雎浴?
- hincrby key field increment:如果哈希表中對(duì)應(yīng)的field為數(shù)字,那么為哈希表 key 中的域 field 的值加上增量 increment 。如果 key 不存在,一個(gè)新的哈希表被創(chuàng)建并執(zhí)行 HINCRBY 命令。如果域 field 不存在,那么在執(zhí)行命令前,域的值被初始化為 0 。【注,increment可以為負(fù)數(shù),所以沒(méi)有hdecr】
- hincrbyfloat key field increment:如果哈希表中對(duì)應(yīng)的field為數(shù)字,那么為哈希表 key 中的域 field 的值加上浮點(diǎn)數(shù)增量 increment 。如果 key 不存在,一個(gè)新的哈希表被創(chuàng)建并執(zhí)行 HINCRBY 命令。如果域 field 不存在,那么在執(zhí)行命令前,域的值被初始化為 0 。【注,值和增量可以為指數(shù)符號(hào)如5.0e3】
List操作:
代表key的值為一個(gè)列表,可以有多個(gè)元素
List中左邊為頭,右邊為尾

-
設(shè)置list:
- lpush key value [value ...] : 將一個(gè)或多個(gè)值 value 插入到列表 key 的表頭,多個(gè)值插入時(shí),后面插入的值在表頭,也就是說(shuō)會(huì)從左邊把一個(gè)個(gè)值往右邊壓,最后面的值作為表頭。
- rpush key value [value ...] :將一個(gè)或多個(gè)值 value 插入到列表 key 的表尾(最右邊)。多個(gè)值插入時(shí),最后面的的值作為表尾。
- rpushx key value :將值 value 插入到列表 key 的表尾,當(dāng)且僅當(dāng) key 存在并且是一個(gè)列表,否則不執(zhí)行任何操作。
- lrange key start stop : 返回列表 key 中指定區(qū)間[start,stop](這是一個(gè)[閉區(qū)間])內(nèi)的元素。可以用-1來(lái)代表最后一個(gè)元素
- lset key index value : 將列表 key 下標(biāo)為 index 的元素的值設(shè)置為 value 。當(dāng) index 參數(shù)超出范圍,或?qū)σ粋€(gè)空列表( key 不存在)進(jìn)行 LSET 時(shí),返回一個(gè)錯(cuò)誤。
- linsert key before|after pivot value : 將值 value 插入到列表 key 當(dāng)中,位于值 pivot (注意pivot是一個(gè)值value) 之前(before)或之后(after)。當(dāng) pivot 不存在于列表 key 時(shí),不執(zhí)行任何操作。當(dāng) key 不存在時(shí), key 被視為空列表,不執(zhí)行任何操作。如果 key 不是列表類型,返回一個(gè)錯(cuò)誤。

-
獲取list:
- lpop key : 移除并返回列表 key 的頭元素
- rpop key : 移除并返回列表 key 的尾元素。
- blpop : 是 LPOP 命令的阻塞版本,當(dāng)給定列表內(nèi)沒(méi)有任何元素可供彈出的時(shí)候,連接將被 BLPOP 命令阻塞,直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止(可以使用另外一個(gè)客戶端來(lái)添加元素)。當(dāng)給定多個(gè) key 參數(shù)時(shí),按參數(shù) key 的先后順序依次檢查各個(gè)列表,彈出第一個(gè)非空列表的頭元素。

- brpop : 是 RPOP 命令的阻塞版本,當(dāng)給定列表內(nèi)沒(méi)有任何元素可供彈出的時(shí)候,連接將被 BRPOP 命令阻塞,直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止(可以使用另外一個(gè)客戶端來(lái)添加元素)。當(dāng)給定多個(gè) key 參數(shù)時(shí),按參數(shù) key 的先后順序依次檢查各個(gè)列表,彈出第一個(gè)非空列表的尾元素。
- rpoplpush source destination : 將source的尾元素取出來(lái)放到destination的表頭
- lindex key index : 返回列表 key 中,下標(biāo)為 index 的元素。如果 key 不是列表類型,返回一個(gè)錯(cuò)誤。
- llen key : 返回列表 key 的長(zhǎng)度。如果 key 不存在,則 key 被解釋為一個(gè)空列表,返回 0 .如果 key 不是列表類型,返回一個(gè)錯(cuò)誤。
-
其他操作:
- ltrim key start stop : 對(duì)一個(gè)列表進(jìn)行修剪(trim),就是說(shuō),讓列表只保留指定區(qū)間內(nèi)(為閉區(qū)間)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除。
補(bǔ)充:
- m前綴的操作是具有原子性的,只有一個(gè)失敗就報(bào)錯(cuò),比如mset設(shè)置多個(gè)值,只要一個(gè)設(shè)置失敗,那么就會(huì)報(bào)錯(cuò),并全部設(shè)置失敗。
- 并且redis是有數(shù)據(jù)類型的,操作會(huì)檢測(cè)數(shù)據(jù)類型,除去一些能“覆蓋”原變量,忽略原變量類型的操作,其他操作遇到不符合的類型都會(huì)報(bào)錯(cuò)
Set操作:
代表key的值為一個(gè)集合,集合中元素不可以重復(fù)
-
設(shè)置set:
- sadd key member [member ...] : 將一個(gè)或多個(gè) member 元素加入到集合 key 當(dāng)中,已經(jīng)存在于集合的 member 元素將被忽略。假如 key 不存在,則創(chuàng)建一個(gè)只包含 member 元素作成員的集合。當(dāng) key 不是集合類型時(shí),返回一個(gè)錯(cuò)誤。
- srandmember key [count] : 如果命令執(zhí)行時(shí),只提供了 key 參數(shù),那么返回集合中的count個(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ì)值。
-
其他操作:
- sscan key cursor [MATCH pattern] [COUNT count]: 用于增量地迭代set
- cursor是 迭代的開(kāi)始索引,第一次為0,迭代中第一行返回值為下一次繼續(xù)迭代的索引,如果為0代表迭代完畢
- Match pattenrn是 匹配set中元素的模式
- count count是此次迭代的數(shù)量

- smove source destination member:將 member 元素從 source 集合移動(dòng)到 destination 集合。如果 source 集合不存在或不包含指定的 member 元素,則 SMOVE 命令不執(zhí)行任何操作,僅返回 0 。否則, member 元素從 source 集合中被移除,并添加到 destination 集合中去。
- sdiff key [key ...]:返回給定集合之間的差集
- sdiffstore destination key [key ...]:返回給定集合之間的差集,并存儲(chǔ)到destination中,如果 destination 集合已經(jīng)存在,則將其覆蓋。destination 可以是 key 本身。
- sinter key [key ...]:返回所有給定集合的交集
- sinter destination key [key ...]:返回給定集合之間的交集,并存儲(chǔ)到destination中,如果 destination 集合已經(jīng)存在,則將其覆蓋。destination 可以是 key 本身。
- sismember key member:判斷 member 元素是否集合 key 的成員。
- srem key member [member ...]:移除集合 key 中的一個(gè)或多個(gè) member 元素,不存在的 member 元素會(huì)被忽略。當(dāng) key 不是集合類型,返回一個(gè)錯(cuò)誤。
- sunion key [key…] :返回所有給定集合的并集。不存在的 key 被視為空集。
- sunionstore destination key [key…] :返回所有給定集合的并集,不存在的 key 被視為空集,將返回的結(jié)果保存到 destination 集合.如果 destination 已經(jīng)存在,則將其覆蓋。destination 可以是 key 本身。
補(bǔ)充:
redis是有數(shù)據(jù)類型的,操作會(huì)檢測(cè)數(shù)據(jù)類型,除去一些能“覆蓋”原變量,忽略原變量類型的操作,其他操作遇到不符合的類型都會(huì)報(bào)錯(cuò)
Sort Set操作:
Sort set代表是一個(gè)有序集合,score決定著元素的順序,一般score小的在前面
-
設(shè)置sort set:
- zadd key [NX|XX] [CH] [INCR] score member [score member ...]: 將一個(gè)或多個(gè) member 元素及其 score 值加入到有序集 key 當(dāng)中。
- scrore是元素的權(quán)重,決定著元素的順序
- nx:是member不存在才添加,已存在則不作操作
- xx:是member已經(jīng)存在才添加
- ch:修改返回值為發(fā)生變化的成員總數(shù),原始是返回新添加成員的總數(shù)
- incr:當(dāng)
ZADD
指定這個(gè)選項(xiàng)時(shí),成員的操作就等同zincrby命令,可以對(duì)已有成員的分?jǐn)?shù)進(jìn)行增加操作。
-
獲取sort set:
- zrange key start stop [WITHSCORES] :返回有序集 key 中,指定區(qū)間內(nèi)的成員。其中成員的位置按 score 值遞增(從小到大)來(lái)排序。
- withscores代表是否同時(shí)返回score
- zrangebyscore key min max [WITHSCORES] [LIMIT offset count]:返回有序集 key 中,所有 score 值介于 min 和 max 之間(包括等于 min 或 max )的成員。有序集成員按score 值遞增(從小到大)次序排列。
- zrevrange key start stop [WITHSCORES]:返回有序集 key 中,指定區(qū)間內(nèi)的成員。
- ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]:返回有序集 key 中, score 值介于 max 和 min 之間(默認(rèn)包括等于 max 或 min )的所有的成員。有序集成員按 score 值遞減(從大到小)的次序排列。
- zrank key member:返回有序集 key 中成員 member 的排名。
- zcard key:返回有序集合的元素個(gè)數(shù)
- zscore key member:返回有序集 key 中,成員 member 的 score 值。如果 member 元素不是有序集 key 的成員,或 key 不存在,返回 nil 。
-
zrevrank key member:返回有序集 key 中成員 member 的排名。其中有序集成員按 score 值遞減(從大到小)排序。排名以 0 為底,也就是說(shuō), score 值最大的成員排名為 0 。
-
zcount key min max:返回有序集 key 中, score 值在[min,max]之間的成員的數(shù)量。
- zrem key member [member ...]:移除有序集 key 中的一個(gè)或多個(gè)成員,不存在的成員將被忽略。當(dāng) key 存在但不是有序集類型時(shí),返回一個(gè)錯(cuò)誤。
- zincrby key increment member:為有序集 key 的成員 member 的 score 值加上增量 increment 。可以通過(guò)傳遞一個(gè)負(fù)數(shù)值 increment ,讓 score 減去相應(yīng)的值,比如 ZINCRBY key ‐5 member ,就是讓member 的 score 值減去 5 。當(dāng) key 不存在,或 member 不是 key 的成員時(shí), ZINCRBY key increment member 等同于ZADD key increment member 。當(dāng) key 不是有序集類型時(shí),返回一個(gè)錯(cuò)誤。score 值可以是整數(shù)值或雙精度浮點(diǎn)數(shù)。
- ZREMRANGEBYRANK key start stop:移除有序集 key 中,指定排名(rank)區(qū)間內(nèi)的所有成員。區(qū)間分別以下標(biāo)參數(shù) start 和 stop 指出,包含 start 和 stop 在內(nèi)。下標(biāo)參數(shù) start 和 stop 都以 0 為底,也就是說(shuō),以 0 表示有序集第一個(gè)成員,以 1 表示有序集第二個(gè)成員,以此類推。你也可以使用負(fù)數(shù)下標(biāo),以 ‐1 表示最后一個(gè)成員, ‐2 表示倒數(shù)第二個(gè)成員,以此類推。
- ZREMRANGEBYSCORE key min max:移除有序集 key 中,所有 score 值介于 min 和 max 之間(包括等于 min 或 max )的成員。
- zunionstore 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 值之 和 。
- zinterstore 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 值之和.
- zscan key cursor [MATCH pattern] [COUNT count]:
- cursor是 迭代的開(kāi)始索引,第一次為0,迭代中第一行返回值為下一次繼續(xù)迭代的索引,如果為0代表迭代完畢
- Match pattenrn是 匹配sort set中元素的模式
- count count是此次迭代的數(shù)量

key操作:
-
查詢鍵:
-
exists key:檢測(cè)鍵是否存在
-
type key:檢測(cè)鍵對(duì)應(yīng)的值的類型
-
keys pattern:查找所有符合給定模式 pattern 的 key 。比如 keys *代表獲取所有鍵
-
ttl key:以秒為單位,返回給定 key 的剩余生存時(shí)間
-
PTTL key:以毫秒為單位返回 key 的剩余生存時(shí)間
-
RANDOMKEY:從當(dāng)前數(shù)據(jù)庫(kù)中隨機(jī)返回(不刪除)一個(gè) key 。
-
刪除鍵:
- del key:當(dāng)鍵存在時(shí),刪除鍵
-
鍵的排序:
- sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC]
[ALPHA] [STORE destination]:返回或保存給定列表、集合、有序集合 key 中經(jīng)過(guò)排序的元素。排序默認(rèn)以數(shù)字作為對(duì)象,值被解釋為雙精度浮點(diǎn)數(shù),然后進(jìn)行比較。
-
鍵的設(shè)置:
- EXPIRE key seconds:為給定 key 設(shè)置生存時(shí)間,當(dāng) key 過(guò)期時(shí)(生存時(shí)間為 0 ),它會(huì)被自動(dòng)刪除。
- EXPIREAT key timestamp:EXPIREAT 的作用和 EXPIRE 類似,都用于為 key 設(shè)置生存時(shí)間。不同在于 EXPIREAT 命令接受的時(shí)間參數(shù)是 UNIX 時(shí)間戳(unix timestamp)。
- PEXPIREAT key milliseconds-timestamp:它以毫秒為單位設(shè)置 key 的過(guò)期 unix 時(shí)間戳
- RENAME key newkey:將 key 改名為 newkey 。當(dāng) key 和 newkey 相同,或者 key 不存在時(shí),返回一個(gè)錯(cuò)誤。當(dāng) newkey 已經(jīng)存在時(shí), RENAME 命令將覆蓋舊值。
- RENAMENX key newkey:當(dāng)且僅當(dāng) newkey 不存在時(shí),將 key 改名為 newkey 。當(dāng) key 不存在時(shí),返回一個(gè)錯(cuò)誤。
- DUMP 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)行反序列化操作。序列化的值不包括任何生存時(shí)間信息。
- restore key ttl serialized-value [REPLACE]:反序列化給定的序列化值,并將它和給定的 key 關(guān)聯(lián)。參數(shù) ttl 以毫秒為單位為 key 設(shè)置生存時(shí)間;如果 ttl 為 0 ,那么不設(shè)置生存時(shí)間。RESTORE 在執(zhí)行反序列化之前會(huì)先對(duì)序列化值的 RDB 版本和數(shù)據(jù)校驗(yàn)和進(jìn)行檢查,如果 RDB 版本不相同或者數(shù)據(jù)不完整的話,那么 RESTORE 會(huì)拒絕進(jìn)行反序列化,并返回一個(gè)錯(cuò)誤。如果鍵 key 已經(jīng)存在, 并且給定了 REPLACE 選項(xiàng), 那么使用反序列化得出的值來(lái)代替鍵 key 原有的值; 相反地, 如果鍵 key 已經(jīng)存在, 但是沒(méi)有給定 REPLACE 選項(xiàng), 那么命令返回一個(gè)錯(cuò)誤。
- PERSIST key:移除給定 key 的生存時(shí)間
-
鍵的移動(dòng):
- migrate host port key destination-db timeout [COPY] [REPLACE]:將 key 原子性地從當(dāng)前實(shí)例傳送到目標(biāo)實(shí)例的指定數(shù)據(jù)庫(kù)上,一旦傳送成功, key 保證會(huì)出現(xiàn)在目標(biāo)實(shí)例上,而當(dāng)前實(shí)例上的 key 會(huì)被刪除。這個(gè)命令是一個(gè)原子操作,它在執(zhí)行的時(shí)候會(huì)阻塞進(jìn)行遷移的兩個(gè)實(shí)例,直到以下任意結(jié)果發(fā)生:遷移成功,遷移失敗,等到超時(shí)。
- move key db:將當(dāng)前數(shù)據(jù)庫(kù)的 key 移動(dòng)到給定的數(shù)據(jù)庫(kù) db 當(dāng)中。如果當(dāng)前數(shù)據(jù)庫(kù)(源數(shù)據(jù)庫(kù))和給定數(shù)據(jù)庫(kù)(目標(biāo)數(shù)據(jù)庫(kù))有相同名字的給定 key ,或者 key 不存在于當(dāng)前數(shù)據(jù)庫(kù),那么 MOVE 沒(méi)有任何效果
發(fā)布/訂閱:
訂閱可以使多個(gè)客戶端等待同一信息,發(fā)布可以使服務(wù)端向多個(gè)特定客戶端發(fā)送信息
- 就像收音機(jī)一樣,只要收音機(jī)調(diào)到指定的頻道channel,就可以收聽(tīng)到電臺(tái)的信息
- 而電臺(tái)可以向所有收聽(tīng)它的收音機(jī)發(fā)送信息
- 新的用戶,不會(huì)收聽(tīng)到之前的消息
-
訂閱頻道:
- psubscirbe pattern [pattern ...]:客戶端訂閱一個(gè)或多個(gè)符合給定模式的頻道
- subscirbe channel [channel ...]:訂閱給定的一個(gè)或多個(gè)頻道的信息。
- 【上述兩個(gè)的區(qū)別就是pattern可以模式匹配】
-
發(fā)送消息:
- publish channel message:將信息 message 發(fā)送到指定的頻道 channel 。返回值是收到message的訂閱者數(shù)量
-
退訂頻道:
- unpsubscirbe [channel [channel ...]]:指示客戶端退訂給定的頻道。
- punsubscirbe [pattern [pattern ...]]:指示客戶端退訂所有給定模式。
- 【上述兩個(gè)的區(qū)別就是pattern可以模式匹配】
-
頻道查詢:
-
pubsub numpat:客戶端訂閱的所有模式的數(shù)量總和。
-
pubsub channels [pattern]:列出當(dāng)前的活躍頻道。活躍頻道指的是那些至少有一個(gè)訂閱者的頻道, 訂閱模式的客戶端不計(jì)算在內(nèi)。
-
pubsub numsub [channel-1 ... channel-N]:返回給定頻道的訂閱者數(shù)量, 訂閱模式的客戶端不計(jì)算在內(nèi)。
事務(wù)
-
開(kāi)啟事務(wù):
- multi:標(biāo)記一個(gè)事務(wù)塊的開(kāi)始。事務(wù)塊內(nèi)的多條命令會(huì)按照先后順序被放進(jìn)一個(gè)隊(duì)列當(dāng)中,最后由 EXEC 命令原子性(atomic)地執(zhí)行。
-
監(jiān)控:
- watch key [key …]:監(jiān)視一個(gè)(或多個(gè)) key ,如果在事務(wù)執(zhí)行exec之前這個(gè)(或這些) key 被其他命令所改動(dòng),那么事務(wù)將被打斷。
- unwatch:取消 WATCH 命令對(duì)所有 key 的監(jiān)視。
-
執(zhí)行事務(wù)塊:
- exec:執(zhí)行所有事務(wù)塊內(nèi)的命令。
-
取消事務(wù):
- discard:取消事務(wù),放棄執(zhí)行事務(wù)塊內(nèi)的所有命令。同時(shí)也會(huì)取消watch對(duì)所有key的監(jiān)視


想知道更多,請(qǐng)參考官方文檔:https://redis.io/commands 中文文檔:http://www.redis.cn/documentation.html
希望本文所述對(duì)大家Redis數(shù)據(jù)庫(kù)程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- Redis操作命令總結(jié)
- Spring-data-redis操作redis知識(shí)總結(jié)
- PHP實(shí)現(xiàn)的Redis操作通用類示例
- 在c#中使用servicestackredis操作redis的實(shí)例代碼
- Spring-data-redis操作redis cluster的示例代碼
- python筆記:mysql、redis操作方法
- Python redis操作實(shí)例分析【連接、管道、發(fā)布和訂閱等】
- spring使用redis操作key-value的示例代碼
- 30個(gè)php操作redis常用方法代碼例子
- redis 隊(duì)列操作的例子(php)
- Redis的配置、啟動(dòng)、操作和關(guān)閉方法