redis常用命令

通用命令

1.keys pattern

含義:查找所有符合給定模式(pattern)的key

keys * ? ? ? ? ? ? 遍歷所有key

keys he[h-l]*? ? 遍歷以he開(kāi)頭,第三個(gè)字符為h-l之間的所有key

keys ph?? ? ? ? ? ? ?代表一個(gè)字符

注意:keys命令一般不在生產(chǎn)環(huán)境中使用

生產(chǎn)環(huán)境的key比較多,keys這個(gè)命令是一個(gè)O(n)的命令

由于Redis是單線程的,這個(gè)命令的操作會(huì)阻塞其他操作

可以在從節(jié)點(diǎn)上執(zhí)行keys命令

使用SCAN命令代替keys命令

2.dbsize

含義:查找當(dāng)前數(shù)據(jù)庫(kù)的key的數(shù)量

3.exists key

含義:檢查給定的key是否存在

4.del key1 [key2...]

含義:在key存在時(shí)刪除key

5.expire key second

含義:為給定key設(shè)置過(guò)期時(shí)間,單位為秒

6. ttl key

含義:以秒為單位,返回給定key的剩余生存時(shí)間(TTL , time to live)

不存在key返回-2

無(wú)過(guò)期時(shí)間的key返回-1

7.persist key

含義:移除key的過(guò)期時(shí)間,key將持久保存

8.type key

含義:返回key所存儲(chǔ)的值的類(lèi)型

不存在的key返回none

String數(shù)據(jù)類(lèi)型

String-結(jié)構(gòu)

結(jié)構(gòu):Key-Value對(duì)

Value:可以是字符串、數(shù)字,也可以是二進(jìn)制數(shù)組

限制:Value最大值為512MB

String-常用命令

1.get? key

含義:獲取指定key的值

2.set key value

含義:設(shè)置指定key的值

3.incr key

含義:將key中存儲(chǔ)的數(shù)字值增一

4.incrby key increment

含義:將key所存儲(chǔ)的數(shù)字值加上給定的增量

5.decr key

含義:將key中存儲(chǔ)的數(shù)字值減一

6.decrby key decrement

含義:將key所存儲(chǔ)的數(shù)字值減去給定的減量

7.setnx key value

含義:只有當(dāng)key不存在時(shí)才設(shè)置key的值

8.set key value nx

含義:與⑦相同,只有當(dāng)key不存在時(shí)才設(shè)置key的值

###9.setex key second value

含義:設(shè)置指定key的值,同時(shí)設(shè)置該key的過(guò)期時(shí)間,單位為秒

10.set key second value ex

含義:與⑨相同,設(shè)置指定key的值,同時(shí)設(shè)置該key的過(guò)期時(shí)間,單位為秒

11.set key value xx

含義:只有key存在時(shí)才設(shè)置key的值

12.mget key1 [key2...]

含義:獲取所有(一個(gè)或多個(gè))指定key的值

13.mset key1 value1 [key2 value2...]

含義:同時(shí)設(shè)置一個(gè)或多個(gè)key-value對(duì)

String-不太常用命令

1.getset key value

含義:將給定key的值設(shè)置為value,并返回key的舊值

2.append key value

含義:將value追加到舊值的末尾

3.strlen key

含義:返回key所存儲(chǔ)的字符串值的長(zhǎng)度

當(dāng)key不存在時(shí),返回0

一個(gè)中文占2個(gè)字節(jié)

時(shí)間復(fù)雜度為O(1),strlen在redis內(nèi)部不需要查詢(xún)整個(gè)字符串來(lái)得到長(zhǎng)度

4.incrbyfloat key increment

含義:將key所存儲(chǔ)的值加上給定的浮點(diǎn)值

5.getrange key start end

含義:返回key中字符串區(qū)間為[start,end]的子串,索引從0開(kāi)始

6.setrange key offset value

含義:用value擦?xí)采w指定key所存儲(chǔ)的字符串值,從偏移量offset開(kāi)始,索引從0開(kāi)始

key = content的時(shí)候,執(zhí)行setrange key 1 haha 之后,key=chahant

Hash數(shù)據(jù)類(lèi)型

Hash-常用命令

1.hget key field

含義:獲取存儲(chǔ)在哈希表中指定field的值

2.hset key field value

含義:將哈希表中指定field的值設(shè)置為value

3.hdel key field1 [field2...]

含義:刪除哈希表中一個(gè)或多個(gè)field

4.hexists key field

含義:判斷哈希表中,指定field是否存在

5.hlen key

含義:獲取哈希表中字段的數(shù)量

6.hmget key field1 [field2...]

含義:獲取哈希表中所有給定field的值

7.hmset key field1 value1 [field2 value2...]

含義:同時(shí)將一個(gè)或多個(gè)field-value對(duì)設(shè)置到哈希表中

8.hincrby key fiel increment

含義:為哈希表中指定field的值加上一個(gè)整型增量

9.hgetall key

含義:獲取哈希表中所有字段和值

時(shí)間復(fù)雜度為O(n),不建議使用

10.hkeys key

含義:獲取哈希表中的所有字段

時(shí)間復(fù)雜度為O(n),不建議使用

11.hvals key

含義:獲取哈希表中的所有值

時(shí)間復(fù)雜度為O(n),不建議使用

12.hsetnx key field value

含義:只有當(dāng)哈希表中field不存在時(shí),才設(shè)置該field的值

13.hincrbyfloat key field increment

含義:為哈希表中指定field的值加上一個(gè)浮點(diǎn)數(shù)增量

List數(shù)據(jù)類(lèi)型

List-結(jié)構(gòu)

列表:有序、可以有重復(fù)元素

索引相關(guān)知識(shí)

索引從左往右,從0開(kāi)始逐個(gè)增大? ? ? 0? ? ? 1? ? ? 2? ? ? 3? ? ? 4? ? ? 5

索引從右往左,從-1開(kāi)始逐個(gè)減小? ? -6? ? -5? ? -4? ? -3? ? ? -2? ? -1? ?

List-常用命令

1.rpush key value1 [value2...]

含義:在列表后側(cè)添加一個(gè)或多個(gè)值

2.lpush key value1 [value2...]

含義:在列表左側(cè)添加一個(gè)或多個(gè)值

3.linsert key before/after value newValue

含義:在列表指定的value前/后插入newValue,時(shí)間復(fù)雜度為O(n)

4.lpop key

含義:從列表左側(cè)彈出一個(gè)值

5.rpop key

含義:從列表右側(cè)彈出一個(gè)值

6.lrem key count value

含義:根據(jù)count值,從列表中刪除值為value的項(xiàng),時(shí)間復(fù)雜度為O(n)

count > 0 時(shí),從左往右遍歷,刪除最多count個(gè)與value相等的值

count < 0 時(shí),從右往左遍歷,刪除最多Math.abs(count)個(gè)與value相等的值

count = 0 時(shí),刪除所有與value相等的值

7.ltrim key start end

含義:對(duì)一個(gè)列表進(jìn)行修剪,只保留指定區(qū)間內(nèi)的元素,不在區(qū)間內(nèi)的元素都將被刪除,時(shí)間復(fù)雜度為O(n)

8.lrange key start end

含義:獲取列表指定索引范圍的所有元素,時(shí)間復(fù)雜度為O(n)

9.lindex key index

含義:獲取列表指定索引的元素,時(shí)間復(fù)雜度為O(n)

10.llen key

含義:獲取列表長(zhǎng)度,時(shí)間復(fù)雜度為O(1)

11.lset key index newValue

含義:設(shè)置列表指定索引的值為newValue,時(shí)間復(fù)雜度為O(n)

注意:

必須存在這個(gè)值才能設(shè)置成功,否則會(huì)報(bào)錯(cuò)

12.blpop key timeout

含義:移除并獲取列表左邊第一個(gè)元素,如果列表沒(méi)有元素會(huì)阻塞直到等待超時(shí)或可彈出元素為止

timeout單位為秒,timeout=0時(shí)不阻塞

13.brpop key timeout

含義:移除并獲取列表右邊第一個(gè)元素,如果列表沒(méi)有元素會(huì)阻塞直到等待超時(shí)或可彈出元素為止

timeout單位為秒,timeout=0時(shí)不阻塞

Set數(shù)據(jù)類(lèi)型

Set-結(jié)構(gòu)

集合:無(wú)序、不能包含重復(fù)元素

Set-集合內(nèi)操作

1.sadd key memebr1 [member2...]

含義:向集合中添加一個(gè)或多個(gè)成員

2.srem key member1 [member2...]

含義:從集合中刪除一個(gè)或多個(gè)成員

3.scard key

含義:獲取集合中的元素個(gè)數(shù)

4.sismember key member

含義:判斷member元素是不是集合的成員

5.srandmember key count

含義:隨機(jī)從集合中取出count個(gè)成員

6.spop key

含義:隨機(jī)移除并返回集合中的一個(gè)成員

7.smembers key

含義:獲取集合中的所有成員

時(shí)間復(fù)雜度為O(n),不建議使用,類(lèi)似的操作可以使用SSCAN

Set-集合間操作

1.sdiff key1 [key2...]

含義:返回給定所有集合的差集

2.sdiffstore destKey key1 [key2...]

含義:計(jì)算給定所有集合的差集,并存入destKey

3.sinter key1 [key2...]

含義:返回給定所有集合的交集

4.sinterstore destKey key1 [key2...]

含義:計(jì)算給定所有集合的交集,并存入destKey

5.sunion key1 [key2...]

含義:返回給定所有集合的并集

6.sunionstore destKey key1 [key2...]

含義:計(jì)算給定所有集合的并集,并存入destKey

ZSet數(shù)據(jù)類(lèi)型

ZSet-結(jié)構(gòu)

有序集合:有序、不能包含重復(fù)元素

每個(gè)節(jié)點(diǎn)包含:score和value兩個(gè)屬性,根據(jù)score進(jìn)行排序

索引相關(guān)知識(shí)

索引從左往右,從0開(kāi)始逐個(gè)增大? ? ? 0? ? ? 1? ? ? 2? ? ? 3? ? ? 4? ? ? 5

索引從右往左,從-1開(kāi)始逐個(gè)減小? ? -6? ? -5? ? -4? ? -3? ? ? -2? ? -1? ?

ZSet-常用命令

1.zadd key score1 member1 [score2 member2...]

含義:向有序集合添加一個(gè)或多個(gè)成員,或者更新已存在成員的分?jǐn)?shù)

2.zrem key member1 [member2...]

含義:從有序集合中刪除一個(gè)或多個(gè)成員

3.zscore key member

含義:獲取有序集合中成員的分?jǐn)?shù)

4.zincrby key increment member

含義:對(duì)有序集合中指定成員的分?jǐn)?shù)加上增量increment

5.zcard key

含義:返回有序集合中元素的總個(gè)數(shù)

6.zrange key start end [withscores]

含義:通過(guò)索引返回有序集合中指定區(qū)間的成員信息

withscores 參數(shù),加上代表一并將score數(shù)據(jù)返回

時(shí)間復(fù)雜度:O(log(n) + m) , n=有序集合中的元素個(gè)數(shù),m=返回的總個(gè)數(shù)

###7.zrangebyscore key min max [withscores][limit]

含義:通過(guò)score返回有序集合中指定分?jǐn)?shù)區(qū)間的成員信息

withscores 參數(shù),加上代表一并將score數(shù)據(jù)返回

limit參數(shù),加上代表限制返回多少條數(shù)據(jù)

時(shí)間復(fù)雜度:O(log(n) + m) , n=有序集合中的元素個(gè)數(shù),m=返回的總個(gè)數(shù)

###8.zscore key min max

含義:返回有序集合中指定分?jǐn)?shù)范圍內(nèi)的元素個(gè)數(shù)

時(shí)間復(fù)雜度:O(log(n) + m) , n=有序集合中的元素個(gè)數(shù),m=指定分?jǐn)?shù)范圍內(nèi)的元素個(gè)數(shù)

9.zremrangebyscore key min max

含義:刪除有序集合中指定分?jǐn)?shù)區(qū)間的所有成員

時(shí)間復(fù)雜度:O(log(n) + m) , n=有序集合中的元素個(gè)數(shù),m=指定分?jǐn)?shù)范圍內(nèi)的元素個(gè)數(shù)

10.zremrangebyrank key start end

含義:刪除有序集合中給定索引區(qū)間的所有成員

時(shí)間復(fù)雜度:O(log(n) + m) , n=有序集合中的元素個(gè)數(shù),m=指定索引范圍內(nèi)的元素個(gè)數(shù)

String VS Hash

相似的API

StringHash

gethget

set setnxhset hsetnx

delhdel

incrbyhincrby

mget msethmget hmset

保存對(duì)象的三種方式與優(yōu)缺點(diǎn)

方式一:采用string,將整個(gè)對(duì)象進(jìn)行序列化,設(shè)計(jì)Key為對(duì)象的業(yè)務(wù)ID

方式二:采用string,設(shè)計(jì)Key為對(duì)象的業(yè)務(wù)ID+屬性名,對(duì)各個(gè)屬性分散存儲(chǔ)

方式三:采用hash,設(shè)計(jì)Key為對(duì)象的業(yè)務(wù)ID,屬性名為field

優(yōu)點(diǎn)缺點(diǎn)

方式一訪問(wèn)Redis編程簡(jiǎn)單相比方式二比較節(jié)約內(nèi)存序列化開(kāi)銷(xiāo)修改屬性需要操作整個(gè)數(shù)據(jù)

方式二Redis數(shù)據(jù)直觀可查可以方便更新屬性?xún)?nèi)存占用較大key較為分散

方式三Redis數(shù)據(jù)直觀可查比起方式二比較節(jié)約內(nèi)存可以方便更新屬性訪問(wèn)Redis編碼稍微比較復(fù)雜TTL不好控制

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Key(鍵) 1. DEL 時(shí)間復(fù)雜度:O(N), N 為被刪除的 key 的數(shù)量。刪除單個(gè)字符串類(lèi)型的 key...
    one_zheng閱讀 606評(píng)論 0 0
  • 最近學(xué)習(xí)redis,記錄一下 redis官網(wǎng):redis.io 中文官網(wǎng):http://www.redis.net...
    alexpdh閱讀 1,965評(píng)論 0 1
  • key DELDEL key [key ...]刪除給定的一個(gè)或多個(gè) key 。O(1) EXISTSEXISTS...
    劍書(shū)藏于西閱讀 317評(píng)論 0 0
  • 編號(hào)命令描述 1 DEL key 此命令刪除一個(gè)指定鍵(如果存在)。...
    huoyl0410閱讀 402評(píng)論 0 1
  • 不管你覺(jué)得驚世駭俗,還是不堪入目,這都是人類(lèi)學(xué)繞不過(guò)的經(jīng)典。 1967年,《裸猿》橫空出世,遭到教會(huì)的封禁和焚燒。...
    你先走閱讀 3,908評(píng)論 0 15

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