激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Redis - Redis教程(七):Key操作命令詳解

Redis教程(七):Key操作命令詳解

2019-10-24 17:57Redis教程網(wǎng) Redis

這篇文章主要介紹了Redis教程(七):Key操作命令詳解,本文講解了Key操作命令概述、相關(guān)命令列表、命令使用示例等內(nèi)容,需要的朋友可以參考下

一、概述:

      在該系列的前幾篇博客中,主要講述的是與Redis數(shù)據(jù)類型相關(guān)的命令,如String、List、Set、Hashes和Sorted-Set。這些命令都具有一個(gè)共同點(diǎn),即所有的操作都是針對(duì)與Key關(guān)聯(lián)的Value的。而該篇博客將主要講述與Key相關(guān)的Redis命令。學(xué)習(xí)這些命令對(duì)于學(xué)習(xí)Redis是非常重要的基礎(chǔ),也是能夠充分挖掘Redis潛力的利器。
      在該篇博客中,我們將一如既往的給出所有相關(guān)命令的明細(xì)列表和典型示例,以便于我們現(xiàn)在的學(xué)習(xí)和今后的查閱。

二、相關(guān)命令列表:

 

命令原型

時(shí)間復(fù)雜度

命令描述

返回值

KEYS pattern

O(N)

時(shí)間復(fù)雜度中的N表示數(shù)據(jù)庫(kù)中Key的數(shù)量。獲取所有匹配pattern參數(shù)的Keys。需要說(shuō)明的是,在我們的正常操作中應(yīng)該盡量避免對(duì)該命令的調(diào)用,因?yàn)閷?duì)于大型數(shù)據(jù)庫(kù)而言,該命令是非常耗時(shí)的,對(duì)Redis服務(wù)器的性能打擊也是比較大的。pattern支持glob-style的通配符格式,如*表示任意一個(gè)或多個(gè)字符,?表示任意字符,[abc]表示方括號(hào)中任意一個(gè)字母。

匹配模式的鍵列表。

DEL key [key ...]

O(N)

時(shí)間復(fù)雜度中的N表示刪除的Key數(shù)量。從數(shù)據(jù)庫(kù)刪除中參數(shù)中指定的keys,如果指定鍵不存在,則直接忽略。還需要另行指出的是,如果指定的Key關(guān)聯(lián)的數(shù)據(jù)類型不是String類型,而是List、Set、Hashes和Sorted Set等容器類型,該命令刪除每個(gè)鍵的時(shí)間復(fù)雜度為O(M),其中M表示容器中元素的數(shù)量。而對(duì)于String類型的Key,其時(shí)間復(fù)雜度為O(1)。

實(shí)際被刪除的Key數(shù)量。

EXISTS key 

O(1)

判斷指定鍵是否存在。

1表示存在,0表示不存在。

MOVE key db 

O(1)

將當(dāng)前數(shù)據(jù)庫(kù)中指定的鍵Key移動(dòng)到參數(shù)中指定的數(shù)據(jù)庫(kù)中。如果該Key在目標(biāo)數(shù)據(jù)庫(kù)中已經(jīng)存在,或者在當(dāng)前數(shù)據(jù)庫(kù)中并不存在,該命令將不做任何操作并返回0。  

移動(dòng)成功返回1,否則0。

RENAME key newkey 

O(1)

為指定指定的鍵重新命名,如果參數(shù)中的兩個(gè)Keys的命令相同,或者是源Key不存在,該命令都會(huì)返回相關(guān)的錯(cuò)誤信息。如果newKey已經(jīng)存在,則直接覆蓋。 

 

RENAMENX key newkey

O(1)

如果新值不存在,則將參數(shù)中的原值修改為新值。其它條件和RENAME一致。

1表示修改成功,否則0。

PERSIST key

O(1)

如果Key存在過(guò)期時(shí)間,該命令會(huì)將其過(guò)期時(shí)間消除,使該Key不再有超時(shí),而是可以持久化存儲(chǔ)。

1表示Key的過(guò)期時(shí)間被移出,0表示該Key不存在或沒(méi)有過(guò)期時(shí)間。

EXPIRE key seconds 

O(1) 

該命令為參數(shù)中指定的Key設(shè)定超時(shí)的秒數(shù),在超過(guò)該時(shí)間后,Key被自動(dòng)的刪除。如果該Key在超時(shí)之前被修改,與該鍵關(guān)聯(lián)的超時(shí)將被移除。 

1表示超時(shí)被設(shè)置,0則表示Key不存在,或不能被設(shè)置。

EXPIREAT key timestamp 

O(1) 

該命令的邏輯功能和EXPIRE完全相同,唯一的差別是該命令指定的超時(shí)時(shí)間是絕對(duì)時(shí)間,而不是相對(duì)時(shí)間。該時(shí)間參數(shù)是Unix timestamp格式的,即從1970年1月1日開(kāi)始所流經(jīng)的秒數(shù)。

1表示超時(shí)被設(shè)置,0則表示Key不存在,或不能被設(shè)置。 

TTL key 

O(1)

獲取該鍵所剩的超時(shí)描述。 

返回所剩描述,如果該鍵不存在或沒(méi)有超時(shí)設(shè)置,則返回-1。

RANDOMKEY

O(1)  

從當(dāng)前打開(kāi)的數(shù)據(jù)庫(kù)中隨機(jī)的返回一個(gè)Key。

返回的隨機(jī)鍵,如果該數(shù)據(jù)庫(kù)是空的則返回nil。

TYPE key 

O(1) 

獲取與參數(shù)中指定鍵關(guān)聯(lián)值的類型,該命令將以字符串的格式返回。

返回的字符串為string、list、set、hash和zset,如果key不存在返回none。

SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] 

O(N+M*log(M)) 

這個(gè)命令相對(duì)來(lái)說(shuō)是比較復(fù)雜的,因此我們這里只是給出最基本的用法,有興趣的網(wǎng)友可以去參考redis的官方文檔。

返回排序后的原始列表。

 

 

三、命令示例:

   1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX:
  

復(fù)制代碼代碼如下:

    #在Shell命令行下啟動(dòng)Redis客戶端工具。
    /> redis-cli
    #清空當(dāng)前選擇的數(shù)據(jù)庫(kù),以便于對(duì)后面示例的理解。
    redis 127.0.0.1:6379> flushdb
    OK
    #添加String類型的模擬數(shù)據(jù)。
    redis 127.0.0.1:6379> set mykey 2
    OK
    redis 127.0.0.1:6379> set mykey2 "hello"
    OK
    #添加Set類型的模擬數(shù)據(jù)。
    redis 127.0.0.1:6379> sadd mysetkey 1 2 3
    (integer) 3
    #添加Hash類型的模擬數(shù)據(jù)。
    redis 127.0.0.1:6379> hset mmtest username "stephen"
    (integer) 1
    #根據(jù)參數(shù)中的模式,獲取當(dāng)前數(shù)據(jù)庫(kù)中符合該模式的所有key,從輸出可以看出,該命令在執(zhí)行時(shí)并不區(qū)分與Key關(guān)聯(lián)的Value類型。
    redis 127.0.0.1:6379> keys my*
    1) "mysetkey"
    2) "mykey"
    3) "mykey2"
    #刪除了兩個(gè)Keys。
    redis 127.0.0.1:6379> del mykey mykey2
    (integer) 2
    #查看一下剛剛刪除的Key是否還存在,從返回結(jié)果看,mykey確實(shí)已經(jīng)刪除了。
    redis 127.0.0.1:6379> exists mykey
    (integer) 0
    #查看一下沒(méi)有刪除的Key,以和上面的命令結(jié)果進(jìn)行比較。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 1
    #將當(dāng)前數(shù)據(jù)庫(kù)中的mysetkey鍵移入到ID為1的數(shù)據(jù)庫(kù)中,從結(jié)果可以看出已經(jīng)移動(dòng)成功。
    redis 127.0.0.1:6379> move mysetkey 1
    (integer) 1
    #打開(kāi)ID為1的數(shù)據(jù)庫(kù)。
    redis 127.0.0.1:6379> select 1
    OK
    #查看一下剛剛移動(dòng)過(guò)來(lái)的Key是否存在,從返回結(jié)果看已經(jīng)存在了。
    redis 127.0.0.1:6379[1]> exists mysetkey
    (integer) 1
    #在重新打開(kāi)ID為0的缺省數(shù)據(jù)庫(kù)。
    redis 127.0.0.1:6379[1]> select 0
    OK
    #查看一下剛剛移走的Key是否已經(jīng)不存在,從返回結(jié)果看已經(jīng)移走。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 0
    #準(zhǔn)備新的測(cè)試數(shù)據(jù)。    
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #將mykey改名為mykey1
    redis 127.0.0.1:6379> rename mykey mykey1
    OK
    #由于mykey已經(jīng)被重新命名,再次獲取將返回nil。
    redis 127.0.0.1:6379> get mykey
    (nil)
    #通過(guò)新的鍵名獲取。
    redis 127.0.0.1:6379> get mykey1
    "hello"
    #由于mykey已經(jīng)不存在了,所以返回錯(cuò)誤信息。
    redis 127.0.0.1:6379> rename mykey mykey1
    (error) ERR no such key
    #為renamenx準(zhǔn)備測(cè)試key
    redis 127.0.0.1:6379> set oldkey "hello"
    OK
    redis 127.0.0.1:6379> set newkey "world"
    OK
    #由于newkey已經(jīng)存在,因此該命令未能成功執(zhí)行。
    redis 127.0.0.1:6379> renamenx oldkey newkey
    (integer) 0
    #查看newkey的值,發(fā)現(xiàn)它也沒(méi)有被renamenx覆蓋。
    redis 127.0.0.1:6379> get newkey
    "world"
  

     
   2. PERSIST/EXPIRE/EXPIREAT/TTL:    
  

復(fù)制代碼代碼如下:

    #為后面的示例準(zhǔn)備的測(cè)試數(shù)據(jù)。
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #將該鍵的超時(shí)設(shè)置為100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    #通過(guò)ttl命令查看一下還剩下多少秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 97
    #立刻執(zhí)行persist命令,該存在超時(shí)的鍵變成持久化的鍵,即將該Key的超時(shí)去掉。
    redis 127.0.0.1:6379> persist mykey
    (integer) 1
    #ttl的返回值告訴我們,該鍵已經(jīng)沒(méi)有超時(shí)了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) -1
    #為后面的expire命令準(zhǔn)備數(shù)據(jù)。
    redis 127.0.0.1:6379> del mykey
    (integer) 1
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #設(shè)置該鍵的超時(shí)被100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    #用ttl命令看一下當(dāng)前還剩下多少秒,從結(jié)果中可以看出還剩下96秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 96
    #重新更新該鍵的超時(shí)時(shí)間為20秒,從返回值可以看出該命令執(zhí)行成功。
    redis 127.0.0.1:6379> expire mykey 20
    (integer) 1
    #再用ttl確認(rèn)一下,從結(jié)果中可以看出果然被更新了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 17
    #立刻更新該鍵的值,以使其超時(shí)無(wú)效。
    redis 127.0.0.1:6379> set mykey "world"
    OK
    #從ttl的結(jié)果可以看出,在上一條修改該鍵的命令執(zhí)行后,該鍵的超時(shí)也無(wú)效了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) -1


   3. TYPE/RANDOMKEY/SORT:
  

復(fù)制代碼代碼如下:

    #由于mm鍵在數(shù)據(jù)庫(kù)中不存在,因此該命令返回none。
    redis 127.0.0.1:6379> type mm
    none
    #mykey的值是字符串類型,因此返回string。
    redis 127.0.0.1:6379> type mykey
    string
    #準(zhǔn)備一個(gè)值是set類型的鍵。
    redis 127.0.0.1:6379> sadd mysetkey 1 2
    (integer) 2
    #mysetkey的鍵是set,因此返回字符串set。
    redis 127.0.0.1:6379> type mysetkey
    set
    #返回?cái)?shù)據(jù)庫(kù)中的任意鍵。
    redis 127.0.0.1:6379> randomkey
    "oldkey"
    #清空當(dāng)前打開(kāi)的數(shù)據(jù)庫(kù)。
    redis 127.0.0.1:6379> flushdb
    OK
    #由于沒(méi)有數(shù)據(jù)了,因此返回nil。
    redis 127.0.0.1:6379> randomkey
    (nil)

延伸 · 閱讀

精彩推薦
  • RedisRedis 事務(wù)知識(shí)點(diǎn)相關(guān)總結(jié)

    Redis 事務(wù)知識(shí)點(diǎn)相關(guān)總結(jié)

    這篇文章主要介紹了Redis 事務(wù)相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友...

    xiaojin21cen10152021-07-27
  • RedisRedis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離詳解

    Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離詳解

    Redis的主從架構(gòu),能幫助我們實(shí)現(xiàn)讀多,寫(xiě)少的情況,下面這篇文章主要給大家介紹了關(guān)于Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離的相關(guān)資料,文中通過(guò)示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    這篇文章主要給大家介紹了關(guān)于redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具...

    一線碼農(nóng)5812019-11-18
  • RedisRedis的配置、啟動(dòng)、操作和關(guān)閉方法

    Redis的配置、啟動(dòng)、操作和關(guān)閉方法

    今天小編就為大家分享一篇Redis的配置、啟動(dòng)、操作和關(guān)閉方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 ...

    大道化簡(jiǎn)5312019-11-14
  • RedisRedis全量復(fù)制與部分復(fù)制示例詳解

    Redis全量復(fù)制與部分復(fù)制示例詳解

    這篇文章主要給大家介紹了關(guān)于Redis全量復(fù)制與部分復(fù)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis爬蟲(chóng)具有一定的參考學(xué)習(xí)...

    豆子先生5052019-11-27
  • Redis詳解Redis復(fù)制原理

    詳解Redis復(fù)制原理

    與大多數(shù)db一樣,Redis也提供了復(fù)制機(jī)制,以滿足故障恢復(fù)和負(fù)載均衡等需求。復(fù)制也是Redis高可用的基礎(chǔ),哨兵和集群都是建立在復(fù)制基礎(chǔ)上實(shí)現(xiàn)高可用的...

    李留廣10222021-08-09
  • Redisredis實(shí)現(xiàn)排行榜功能

    redis實(shí)現(xiàn)排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來(lái)實(shí)現(xiàn)排行榜功能,本文就來(lái)簡(jiǎn)單的介紹一下如何使用,具有一定的參考價(jià)值,感興趣的小伙伴們...

    乘月歸5022021-08-05
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 国产三级精品最新在线 | www.91pron | 中文字幕在线观看视频一区 | 午夜精品成人一区二区 | 大奶一级片 | 一级成人欧美一区在线观看 | 韩国精品久久久 | 最新欧美精品一区二区三区 | 香蕉视频破解 | 国产免费一区二区三区视频 | 黑人一区二区三区四区五区 | 欧美一级黄色免费看 | 操你逼| 午夜视频在线观看91 | 91精品片 | 色中色综合网 | 久久久青青草 | xxxxhd18hd日本hd | 日本中文一级片 | 免费毛片在线视频 | 91精品国产92久久久久 | 日本欧美一区二区三区在线观看 | 亚洲福利视 | 99ri在线| 日韩电影毛片 | 91久久精品一区二区 | 国产精品久久久久久久午夜片 | 国产精品99精品 | 黄色成人av在线 | 午夜视频在线免费播放 | 欧美激情第一区 | 黄色成人小视频 | 男女无套免费视频 | 一区二区三区日韩在线 | 成人黄色免费 | 黄在线看 | 国产精品久久久久久久久久东京 | 日韩中文一区 | 免费a级片在线观看 | 久草网在线 | 他也色在线视频 |