REDIS學習筆記 之 STRING資料類型

來源:互聯網
上載者:User

標籤:style   blog   http   io   使用   ar   strong   資料   sp   

  • 鄒祁峰
  • 郵箱:[email protected]
  • 部落格:http://blog.csdn.net/qifengzou
  • 日期:2014.10.11
  • 轉載請註明來自"祁峰"的CSDN部落格


1 簡單概述

    String資料類型是Redis中最簡單、最基礎的資料類型,Redis中所有的KEY和VALUE都是String類型,且其他更為複雜的資料類型(LISTS、SETS、SORTED-SETS、HASHES)也均基於String資料類型來儲存的。String資料類型是二進位安全的,也就是說String可以包含任何格式的資料,比如:JPG圖片、序列化的對象等。


2 操作命令

表1 String類型操作命令

01 APPEND  key value
  功能描述:將KEY對應的VALUE值減1
返回結果:APPEND操作之後,KEY對應VALUE的最終長度
注意事項:
    1)時間複雜度:O(1)
    2)當KEY存在,且為STRING類型時,將會將value追加到原有值末尾;
    3)如果KEY不存在,將會建立KEY/VALUE。
02 DECR  key
  功能描述:將KEY對應的VALUE原子性的減1
返回結果:返回執行減1操作後KEY對應的VALUE值
注意事項:
    1)時間複雜度:O(1)
    2)如果KEY對應VALUE能轉化為數字,則執行減1操作;
    3)如果KEY對應VALUE不能轉化為數字,則返回錯誤資訊;
    4)該操作是原子性的。假設:當前KEY對應的VALUE值為100,當3個用戶端同時執行該操作時,最終結果將會是97。
03 INCR  key
  功能描述:將KEY對應的VALUE原子性的加1
返回結果:返回執行加1操作後KEY對應的VALUE值
注意事項:
    1)時間複雜度:O(1)
    2)如果KEY對應VALUE能轉化為數字,則執行加1操作;
    3)如果KEY對應VALUE不能轉化為數字,則返回錯誤資訊;
    4)該操作是原子性的。假設:當前KEY對應的VALUE值為100,當3個用戶端同時執行該操作時,最終結果將會是103。
04
DECRBY  key decremen
  功能描述:將KEY對應的VALUE原子性的減decrement
返回結果:返回執行減操作後KEY對應的VALUE值
注意事項:
    1)時間複雜度:O(1)
    2)如果KEY對應VALUE能轉化為數字,則執行減操作;
    3)如果KEY對應VALUE不能轉化為數字,則返回錯誤資訊;
    4)參數decrement不能為浮點數,只能為整數;
    5)該操作是原子性的。
05 INCRBY  key increment
  功能描述:將KEY對應的VALUE原子性的加increment
返回結果:返回執行加操作後KEY對應的VALUE值
注意事項:
    1)時間複雜度:O(1)
    2)如果KEY對應VALUE能轉化為數字,則執行加操作;
    3)如果KEY對應VALUE不能轉化為數字,則返回錯誤資訊;
    4)參數increment不能為浮點數,只能為整數;
    5)該操作是原子性的。
06 INCRBYFLOAT  key increment
  功能描述:將KEY對應的VALUE原子性的加increment
返回結果:返回執行加操作後KEY對應的VALUE值
注意事項:
    1)時間複雜度:O(1)
    2)如果KEY對應VALUE能轉化為數字,則執行加操作;
    3)如果KEY對應VALUE不能轉化為數字,則返回錯誤資訊;
    4)此命令的參數increment可以為浮點數,但是請注意此命令的計算精度;
    5)暫時沒有命令DECRBYFLOAT,如果想進行浮點數的減操作,可以模仿:INCRBYFLOAT key -5.9;
    6)該操作是原子性的。
07 SET  key value [EX seconds] [PX milliseconds] [NX|XX]
  功能描述:設定KEY對應的VALUE
參數說明:
    從 Redis 2.6.12 版本開始, SET 命令的行為可以通過一系列參數來修改:
    1)EX second:設定鍵的到期時間為second秒
         SET key value EX second 效果等同於 SETEX key second value。
    2)PX millisecond:設定鍵的到期時間為millisecond毫秒
         SET key value PX millisecond 效果等同於 PSETEX key millisecond value。
    3)NX :只在鍵不存在時,才對鍵進行設定作業
         SET key value NX 效果等同於 SETNX key value
    4)XX :只在鍵已經存在時,才對鍵進行設定作業。
返回結果:
    1)在2.6.12版本之前,總是返回OK;
    2)在2.6.12版本開始,SET操作完成時才返回OK;
    3)如果設定了 NX 或者 XX ,但因為條件沒達到而造成設定作業未執行,那麼命令返回空批量回複(NULL Bulk Reply)。
注意事項:
    1)時間複雜度:O(1)
    2)如果KEY已經存在,此操作將直接覆蓋舊值,且無視類型;
    3)對於某個原本帶有存留時間(TTL)的鍵來說, 當 SET 命令成功在這個鍵上執行時, 這個鍵原有的 TTL 將被清除。
08 GET key
  功能描述:擷取指定KEY的VALUE
返回結果:指定KEY的VALUE
注意事項:
    1)時間複雜度:O(1)
    2)如果該KEY不存在,返回NIL;
    3)如果該KEY不是String類型,將返回錯誤資訊。
09 GETSET  key value
  功能描述:原子性的設定KEY的VALUE,同時擷取該KEY的原VALUE
返回結果:該KEY的原VALUE
注意事項:
    1)時間複雜度:O(1)
    2)如果該KEY不存在,將建立KEY,並返回NIL;
    3)如果該KEY不是String類型,將返回錯誤資訊。
10 STRLEN  key
  功能描述:擷取該KEY的VALUE長度
返回結果:該KEY的VALUE長度
注意事項:
    1)時間複雜度:O(1)
    2)如果該KEY不存在,將返回0;
    3)如果該KEY不是String類型,將返回錯誤資訊。
11 SETEX  key seconds value
  功能描述:設定KEY對應值為VALUE,同時設定該KEY的存留時間為SECONDS秒
返回結果:操作完成時才返回OK
注意事項:
    1)時間複雜度:O(1)
    2)如果KEY已經存在,此操作將直接覆蓋舊值;
    3)該命令類似如下兩條命令:
          SET key value
          EXPIRE key seconds
          不同的是,SETEX是原子性的。關聯值和設定存留時間兩個動作會在同一時間內完成,該命令在 Redis 用作緩衝時,非常實用;
    4)當 seconds 參數不合法時,返回錯誤。
12 SETNX  key value
  功能描述:當前僅當KEY不存在時,設定KEY對應值為VALUE
返回結果:設定成功返回1,設定失敗返回0
注意事項:
    1)時間複雜度:O(1)
    2)將 key 的值設為 value ,若且唯若 key 不存在;
    3)若給定的 key 已經存在,則 SETNX 不做任何動作;
    4)SETNX 是"SET if Not eXists"(如果不存在,則 SET)的簡寫。
13 SETBIT  key offset value
  功能描述:對KEY所儲存的字串值,設定或清除指定位移量上的位(bit)
返回結果:指定位移量原來儲存的位
注意事項:
    1)時間複雜度:O(1)
    2)位的設定或清除取決於 value 參數,可以是 0 也可以是 1;
    3)當 key 不存在時,自動產生一個新的字串值;
    4)字串會進行伸展(grown)以確保它可以將 value 儲存在指定的位移量上。當字串值進行伸展時,空白位置以 0 填充;
    5)offset 參數必須大於或等於 0 ,小於 2^32 (bit 映射被限制在 512 MB 之內);
    6)對使用大的 offset 的SETBIT操作來說,記憶體配置可能造成 Redis 伺服器被阻塞。具體參考SETRANGE 命令,warning(警告)部分。
14 GETBIT  key offset
  功能描述:對 key 所儲存的字串值,擷取指定位移量上的位(bit)
返回結果:指定位移量上的位
注意事項:
    1)時間複雜度:O(1)
    2)當 offset 比字串值的長度大,或者 key 不存在時,返回 0 ;
    3)當KEY不存在時,進行GETBIT操作將返回0。
15 SETRANGE  key offset value
  功能描述:用 value 參數覆寫(overwrite)給定 key 所儲存的字串值,從位移量 offset 開始
返回結果:修改後的字串長度
注意事項:
    1)時間複雜度:對小的字串,平攤複雜度O(1)。(關於什麼字串是”小”的,請參考 APPEND 命令) 否則為O(M), M 為 value 參數的長度
    2)不存在的 key,則將其原值當作空白字串處理;
    3)SETRANGE 命令會確保字串足夠長以便將 value 設定在指定的位移量上,如果給定 key 原來儲存的字串長度比位移量小(比如字串只有 5 個字元長,但你設定的 offset 是 10 ),那麼原字元和位移量之間的空白將用零位元組(zerobytes, "\x00" )來填充;
    4)注意你能使用的最大位移量是 2^29-1(536870911) ,因為 Redis 字串的大小被限制在 512 兆(megabytes)以內。如果你需要使用比這更大的空間,你可以使用多個 key ;
    5)當產生一個很長的字串時,Redis 需要分配記憶體空間,該操作有時候可能會造成伺服器阻塞(block)。在2010年的Macbook Pro上,設定位移量為 536870911(512MB 記憶體配置)耗費約 300 毫秒, 設定位移量為 134217728(128MB 記憶體配置),耗費約 80 毫秒,設定位移量 33554432(32MB 記憶體配置),耗費約 30 毫秒,設定位移量為 8388608(8MB 記憶體配置),耗費約 8 毫秒。 注意若首次記憶體配置成功之後,再對同一個 key 調用 SETRANGE 操作,無須再重新記憶體。
16 GETRANGE  key start end
  功能描述:截取 key 對應字串值的子串
返回結果:截取得出的子串
注意事項:
    1)時間複雜度:O(N)(N表示要返回的字串長度)
    2)字串的截取範圍由 start 和 end 兩個位移量決定(包括 start 和 end 在內);
    3)負數位移量表示從字串最後開始計數, -1 表示最後一個字元, -2 表示倒數第二個,以此類推;
    4)GETRANGE 通過保證子字串的值域(range)不超過實際字串的值域來處理超出範圍的值域請求;
    5)在 <= 2.0 的版本裡,GETRANGE 被叫作 SUBSTR。
17 MSET  key value [key value ...]
  功能描述:同時設定1個或多個KEY-VALUE對
返回結果:總是返回 OK (因為 MSET 不可能失敗)
注意事項:
    1)時間複雜度:O(N)(N表示 key-value對的數量)
    2)如果某個給定 key 已經存在,那麼 MSET 會用新值覆蓋原來的舊值,如果這不是你所希望的效果,請考慮使用 MSETNX 命令:它只會在所有給定 key 都不存在的情況下進行設定作業;
    3)MSET 是一個原子性(atomic)操作,所有給定 key 都會在同一時間內被設定,某些給定 key 被更新而另一些給定 key 沒有改變的情況,不可能發生。
18 MSETNX  key value [key value ...]
  功能描述:同時設定一個或多個 key-value 對,若且唯若所有給定 key 都不存在
返回結果:成功返回1,失敗返回0
注意事項:
    1)時間複雜度:O(N)(N表示 key-value對的數量)
    2)即使只有一個給定 key 已存在, MSETNX 也會拒絕執行所有給定 key 的設定作業;
    3)MSETNX 是原子性的,因此它可以用作設定多個不同 key 表示不同欄位(field)的唯一性邏輯對象(unique logic object),所有欄位要麼全被設定,要麼全不被設定。
19 MGET  key [key ...]
  功能描述:返回所有(一個或多個)給定 key 的值
返回結果:一個包含所有給定 key 的值的列表
注意事項:
    1)時間複雜度:O(N)(N表示 key-value對的數量)
    2)如果給定的 key 裡面,有某個 key 不存在,那麼這個 key 返回特殊值 nil 。因此,該命令永不失敗。

REDIS學習筆記 之 STRING資料類型

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.