<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    分享java帶來的快樂

    我喜歡java新東西

    Redis命令——Keys相關(guān)

     

    以下為Redis中有關(guān)Keys操作的一些命令,內(nèi)容主要來源于Redis的官方文檔。如有需要,請參閱Redis的官方文檔:http://redis.io/commands#generic。

     1.DEL
    語法:DEL key [key
    ...]
    說明:移除指定的keys,如果該key不存在則將會被忽略。該操作的時間復(fù)雜度為O(N),這里N為將要移除的keys的個數(shù)。當(dāng)將要移除的key對應(yīng)除字符串類型外其它類型的值時,對該key進行操作的時間復(fù)雜度為O(M),M為列表(list)、集合(set)、有序集合(sorted
    set)或者哈希(hash)中所包含元素的個數(shù)。移除對應(yīng)值為字符串類型的單個key的時間復(fù)雜度為O(1)。
    返回值:將要移除的keys的個數(shù)。
    該命令自0.07版本后可用。

    2.EXISTS
    語法:EXISTS
    key
    說明:判斷指定的key是否存在。該操作的時間復(fù)雜度為O(1)。
    返回值:如果指定的key存在,則返回值為1,否則返回值為0。
    該命令自0.0.7版本后可用。

    3.EXPIRE
    語法:EXPIRE
    key
    seconds
    說明:設(shè)置指定key的超時時間,超時后該key將會被自動刪除。該操作的時間復(fù)雜度為O(1)。在Redis中,如果一個key與某個超時時間相關(guān)聯(lián),那么該key將被稱為是易失的(volatile)。在2.1.3版本之前,已經(jīng)存在的超時時間是不能被重寫的。因此,如果一個key已經(jīng)關(guān)聯(lián)了某個過期時間,那么該命令將不會起作用并且返回值為0。但是自2.1.3版本后,Redis允許更新一個key的超時時間。另外,你可以使用PERSIST命令來移除一個key相關(guān)聯(lián)的超時時間。
    返回值:如果成功設(shè)置了超時時間,那么返回值為1;如果該key不存在或者不能夠設(shè)置超時時間,那么返回值為0。

     

    該命令自0.0.9版本后可用。

    4.EXPIREAT
    語法:EXPIREAT key
    timestemp
    說明:該操作的時間復(fù)雜對為O(1)。該命令與EXPIRE命令有著相同的語義和效果,二者唯一的差別是:EXPIREAT命令中指定的并不是表示TTL(Time
    To
    Live)的秒數(shù),而是一個確定的UNIX時間戳(即自1970年1月1日之后的秒數(shù))。
    返回值:如果成功設(shè)置了超時時間,那么返回值為1,如果該key不存在或者不能夠設(shè)置超時時間,那么返回值為0。

     

     


    該命令自1.1版本后可用。

    5.KEYS
    語法:KEYS
    pattern
    說明:返回與指定模式相匹配的所用的keys。該操作的時間復(fù)雜度為O(N),N為數(shù)據(jù)庫中所擁有的keys的個數(shù),并假設(shè)數(shù)據(jù)庫中keys的名稱與給定的匹配模式均具有有限的長度。雖然該操作的時間復(fù)雜度為O(N),但是此處時間復(fù)雜度的常量系數(shù)相當(dāng)?shù)?。需要注意的是:在生產(chǎn)環(huán)境中使用該命令需要特別注意,該命令在對規(guī)模較大的數(shù)據(jù)庫進行操作時可能會損害性能。該命令主要是設(shè)計用來進行調(diào)試和進行特殊的操作,例如更改keyspace的布局(layout)等。

     

    該命令所支持的匹配模式如下:
    (1)?:用于匹配單個字符。例如,h?llo可以匹配hello、hallo和hxllo等;
    (2)*:用于匹配零個或者多個字符。例如,h*llo可以匹配hllo和heeeello等;
    (3)[]:可以用來指定模式的選擇區(qū)間。例如h[ae]llo可以匹配hello和hallo,但是不能匹配hillo。
    同時,可以使用“/”符號來轉(zhuǎn)義特殊的字符

     

    例如,使用如下命令可以查看數(shù)據(jù)庫中的所有keys:keys *


     


    返回值:返回匹配指定模式的keys的列表。


    該命令自0.0.7版本后可用。

    6.MOVE
    語法:MOVE key
    db
    說明:將指定的key從當(dāng)前選擇的數(shù)據(jù)庫(使用SELECT命令)移動到目標(biāo)數(shù)據(jù)庫,該操作的時間復(fù)雜度為O(1)。當(dāng)該key在目標(biāo)數(shù)據(jù)庫中已經(jīng)存在或者它在源數(shù)據(jù)庫中并不存在時,該命令將不進行任何操作?;诖丝梢詫⒃撁钣米饕粋€鎖定的原語操作(locking
    primitive)。


    返回值:如果該key被移至目標(biāo)數(shù)據(jù)庫,那么返回值為1;如果該key未被移動,那么返回值為0。

     

    該命令自0.0.7版本后可用。

    7.OBJECT
    語法:OBJECT
    subcommand [arguments [arguments
    ...]]
    說明:對于現(xiàn)階段已經(jīng)實現(xiàn)的子命令而言,時間復(fù)雜度均為O(1)。該命令允許用戶查看與keys相關(guān)聯(lián)的Redis對象的內(nèi)部信息。對于調(diào)試或者理解keys是否正在使用特殊編碼的數(shù)據(jù)類型以便節(jié)省空間,該命令非常有用。在使用Redis作為緩存時,你的應(yīng)用程序可能需要使用OBJECT命令返回的信息來實現(xiàn)應(yīng)用層次的key驅(qū)離策略(eviction
    policies)。
    該命令支持多種子命令,如下所示:
    (1)OBJECT REFCOUNT
    <key>:返回對與指定key相關(guān)聯(lián)的值的引用個數(shù)。該命令對用戶進行調(diào)試非常有幫助;
    (2)OBJECT ENCODING
    <key>:返回用于存儲與指定key相關(guān)聯(lián)的值的內(nèi)部表示類型;
    (3)OBJECT IDLETIME
    <key>:返回與key相關(guān)聯(lián)的值自存儲以來處于空閑狀態(tài)(IDLE)的秒數(shù)(未被read或write等操作所請求)。計時器的時間粒度為10秒,該值在后續(xù)版本中可能會發(fā)生變化。
    對象可以使用如下不同的方式進行編碼:
    (1)string可以按照正常的字符串編碼格式進行存儲或者使用int類型(表示64位有符號數(shù)區(qū)間中整數(shù)的字符串可以按照這種方式進行編碼以便節(jié)省存儲空間);
    (2)lists可以被編碼為ziplist或者linkedlist格式。對于規(guī)模較小的鏈表而言,可以使用ziplist來表示以便節(jié)省存儲空間;
    (3)sets可以被編碼為intset或者hashtable格式。intset作為一種特別的編碼方式可以用于僅有整數(shù)構(gòu)成的規(guī)模較小的集合中;
    (4)hashes可以被編碼為zipmap或者hashtable。zipmap可以用于對規(guī)模較小的hashes進行編碼;
    (5)sorted
    sets可以編碼為ziplist或者skiplist。對于list類型,規(guī)模較小的有序集合(sorted
    sets)可以使用ziplist進行編碼,而skiplist可以用于對任何大小的有序集合進行編碼。
    需要注意的是:你一旦執(zhí)行了一種使得Redis無法保持能夠節(jié)約存儲空間的編碼方式的操作后,所有特殊編碼的類型將會被自動轉(zhuǎn)換為普通類型。
    返回值:對于不同的子命令將會有不同的返回值。
    (1)對于refcount和idletime子命令,返回值為整型(integers)。
    (2)對于encoding子命令將會返回一個塊回復(fù)(bulk
    reply)。
    (3)如果你要查看的object已經(jīng)丟失,那么將會返回一個null塊。


    可以通過如下實例進行測試:lpush mylist “hello world”

     

     


    通過上述測試可以了解到,Redis
    2.2.6版本中對對象處于IDLE狀態(tài)的時間統(tǒng)計的時間粒度為10秒。
    該命令自2.2.3版本后可用。

    8.PERSIST
    語法:PERSIST
    key
    說明:移除與key相關(guān)聯(lián)的超時時間。該操作的時間復(fù)雜度為O(1)。
    返回值:如果超時時間被移除,那么返回者為1;如果該key不存在或者沒有與之相關(guān)聯(lián)的超時時間,那么返回值將為0.

     

    該命令自2.1.2版本后可用。

    9.RANDOMKEY
    語法:RANDOMKEY
    說明:從當(dāng)前選擇的數(shù)據(jù)庫中返回一個隨機的key。該操作的時間復(fù)雜度為O(1)。
    返回值:返回隨機key;如果數(shù)據(jù)庫為空時,那么將返回nil。

     

    該命令的實例如下所示:


     
    該命令自0.0.7版本后可用。

     

    10.RENAME
    語法:RENAME key
    newkey
    說明:將指定的key命名為newkey。該操作的時間復(fù)雜度為O(1)。當(dāng)源和目標(biāo)的名稱相同或指定的key不存在時,將會返回一個錯誤。如果newkey已經(jīng)存在時,它將會被重寫。
    返回值:返回Redis定義的狀態(tài)碼。
    該命令自0.0.7版本后可用。

    11.RENAMENX
    語法:RENAMENX
    key
    newkey
    說明:在newkey不存在的情況下將key命名為newkey。如果源和目標(biāo)的名稱相同或者指定的key不存在時返回一個錯誤。該操作的時間復(fù)雜度為O(1)。

     

    返回值:如果key被命名為newkey,那么返回值為1;如果newkey已經(jīng)存在,那么返回值為0。
    該命令自0.0.7版本后可用。

    12.SORT
    語法:SORT
    key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC]
    [ALPHA] [STORE destination]
    說明:返回或按key存儲包含在列表(list)、集合(set)或者有序集合(sorted
    set)中的元素。該操作的時間復(fù)雜度為O(N+M*log(M)),此處N是將要排序的列表(list)或者集合(set)中元素的個數(shù),而M為將要返回的元素個數(shù)。在元素未被排序時,復(fù)雜度在現(xiàn)階段是O(N)。在下一個發(fā)行版本中,其中的拷貝這一步驟將會被避免。
    在默認情況下,排序是數(shù)字型的,并且元素通過他們的值進行比較,值被解釋為雙精度浮點數(shù)。
    假設(shè)mylist是一組數(shù)字的列表,最簡單的SORT命令形式如下所示:
    SORT
    mylist


    假設(shè)mylist中存儲有1-10這些值,使用該命令會有如下的輸出結(jié)果:

     

     

    如果你希望使用降序順序來排列元素,可以使用DESC修飾符,如下所示:
    SORT mylist
    DESC
    當(dāng)mylist中包含字符串并且你希望使用字母順序進行排列時,可以使用ALPHA修飾符,如下所示:
    SORT mylist
    ALPHA


    使用該命令后,會有以下輸出結(jié)果:

     


    返回元素的個數(shù)可以通過LIMIT修飾符進行限制。使用該修飾符時需要指定起始元素的偏移值和將要返回的元素的總數(shù)。如下所示:
    SORT mylist
    LIMIT 0
    5
    通過外部keys進行排序
    有時候你希望通過使用外部keys作為權(quán)值而并非比較列表(list)、集合(set)或者有序集合(sorted
    set)中的真實元素來進行排序。例如,假如
    列表mylist中包含元素1、2和3,分別表示存儲在object_1、object_2和object_3中對象的唯一ID。當(dāng)這些對象具有存儲在weight_1、weight_2和weight_3中的相關(guān)聯(lián)的權(quán)值時,SORT可以使用這些權(quán)值來排序mylist。如下所示:
    SORT
    mylist BY
    weight_*
    BY選項選用了一個模式(本例中為weight_*)來生成用來排序的keys。這些keys的名稱可以通過取代模式中的“*”符號來加以生成,用于取代“*”符號的值是mylist列表中能夠首次匹配模式中的“*”符號的真實值(在本例中為1、2、和3)。

     

    假設(shè)在mylist列表中存有值1、2和3,object_1上存儲有值object_1,object_2上存儲有值object_2,object_3上存儲有值object_3,weight_1上存儲有值0.87,weight_2上存儲有值3,weight_3上存儲有值-6.4。如下所示:


     


    使用SORT mylist BY weight_*可以得到如下輸出:

     

     

    (1)跳過排序元素
    可以給BY選項指定一個并不存在的key,這將會使得SORT命令跳過排序操作。這是一種在不進行排序的情況下取得外部keys的有效方式。如下所示:
    SORT
    mylist BY
    nosort
    (2)獲取外部keys
    在一些情況下,獲取真正的對象而非它們的ID更為有用(object_1、object_2和object_3)?;诹斜恚╨ist)、集合(set)或有序集合(sorted
    set)中的元素獲取外部keys可以通過使用如下命令來完成:
    SORT mylist BY weight_* GET object_*

     

    在使用上述命令后,可以得到如下輸出:

     


    GET選項可以被多次使用,從而對原有列表(list)、集合(set)或有序集合(sorted
    set)中的每個元素取得更多的keys。同樣,使用特殊的模式#,可以獲取元素本身。如下所示:
    SORT mylist BY weight_* GET
    object_* GET #


    使用上述命令后,可以得到如下輸出:

     


    (3)存儲排序操作的結(jié)果
    在默認情況下,SORT向客戶端返回排序后的元素。使用STORE選項,可以將結(jié)果存儲在一個列表中,用戶可以同時指定與列表相關(guān)聯(lián)的key。如下所示:
    SORT
    mylist BY weight_* SRORE
    resultkey
    (4)在BY和GET選項中使用hashes
    你可以對hash字段使用BY和GET選項,語法如下:
    SORT mylist
    BY weight_*->fieldname GET
    object_*->fieldname
    字符串“->”用來區(qū)分hash字段名稱和key名稱。
    返回值:排序元素的列表。
    該命令自0.0.7版本后可用。

    13.TTL
    語法:TTL
    key
    說明:如果指定的key有與之相關(guān)聯(lián)的超時時間,那么將會返回該key還能存活的時間。該操作的時間復(fù)雜度為O(1)。這一自省能力使得Redis客戶端能夠查看一個指定的key還能夠作為dataset的一部分存在多長時間。
    返回值:以秒為單位的TTL(Time
    To Live);如果指定的key不存在或者沒有與之相關(guān)聯(lián)的超時時間,那么便會返回-1。
    該命令自0.1000版本后可用。

    14.
    TYPE
    語法: TYPE
    key
    說明:返回存儲在指定key上的值所具有的數(shù)據(jù)類型的字符串描述。該操作的時間復(fù)雜度為O(1)。數(shù)據(jù)類型可以是:string、list、set、zset和hash。
    返回值:存儲在key上的值的數(shù)據(jù)類型,如果該key不存在,那么返回值為none。
    該命令自0.0.7版本后可用。

     

    posted on 2012-06-19 11:29 強強 閱讀(737) 評論(0)  編輯  收藏 所屬分類: Redis

    主站蜘蛛池模板: 在线看亚洲十八禁网站| 亚洲精品国产情侣av在线| 亚洲精华国产精华精华液网站| 4hu四虎最新免费地址| 亚洲熟妇无码爱v在线观看| 曰批全过程免费视频网址| 在线观看亚洲人成网站| 日韩在线永久免费播放| 亚洲无圣光一区二区| 1024免费福利永久观看网站| 亚洲中文无码线在线观看| 免费影院未满十八勿进网站| 亚洲色偷偷综合亚洲av78| 成人国产mv免费视频| 一级成人a做片免费| 亚洲精品国产品国语在线| 久久久久久久久久国产精品免费| 亚洲AV本道一区二区三区四区| 未满十八18禁止免费无码网站| 亚洲国产精品午夜电影| 免费高清av一区二区三区| 免费手机在线看片| 久久精品7亚洲午夜a| 亚洲一区在线免费观看| 亚洲国产aⅴ成人精品无吗| heyzo亚洲精品日韩| 国产高清不卡免费视频| 亚洲中文无码av永久| 免费大黄网站在线观| 18禁超污无遮挡无码免费网站| 亚洲日本香蕉视频| 国产在线19禁免费观看| 青青操免费在线视频| 亚洲av乱码一区二区三区| 免费在线观看你懂的| 久久aⅴ免费观看| 亚洲老熟女五十路老熟女bbw| 国产亚洲精品精品国产亚洲综合| 222www免费视频| 色屁屁www影院免费观看视频| 亚洲精品私拍国产福利在线|