redis鍵的基本操作

來源:互聯網
上載者:User

標籤:link   實現   好友   單位   構建   store   get   提升   數字   

redis是什嗎?
  redis開源的,構建於記憶體的資料結構的nosql資料庫。常被用於資料存放區,緩衝處理和訊息處理。


redis的優勢?
  1、極高的讀寫能力
  2、豐富的資料類型
  3、原子性操作
  4、支援主從熱備


redis的使用情境?
  1、登入之後的會話儲存,相較於使用memcached作為快取資料庫,資料更加安全
  2、熱門排行榜/計數器,比如一些秀場類的項目,常常會會有一些前多少名的主播排名,還有一些文章閱讀量的技術,或者新浪微博的點贊數等
  3、作為訊息佇列,比如celery就可以使用redis作為中間人
  4、好友關係,微博的好友關係使用redis實現


redis鍵的基本操作命令:
1、keys pattern
  功能:查詢所有符合匹配模式的所有的鍵名
  pattern匹配模式的用法:
    ?:任意一個字元
    *:任意個字元
    [ae]:a或e
    [^ae]:除了a和e
    [a-e]:a-e範圍內的一個字元
    [^a-e]:除了a-e的一個字元
    [1-11]:1-11範圍內的一個字元
    [^1-11]:除了1-11的一個字元
  傳回值:返回所有符合匹配模式的所有的鍵名
  exp:keys *

 

 

2、exists key [key...]
  功能:檢查redis中給定的key鍵(可以為一個或者多個)是否存在
  傳回值:因為key可以不存在也可以重複,返回這些key鍵在redis中存在的數量,key可以重複,傳回值統計數量不去重
  exp:exists key1 key2 ...

 

 

3、SCAN cursor [MATCH pattern] [COUNT count]
  功能:scan命令每次被調用是會返回新的遊標cursor和本次執行命令列出的所有key,使用者在下次迭代的時候可以使用新的遊標cursor作為scan命令的遊標參數,以此來延續之前的迭代過程,直到返回的新的cursor為0的時候,最終列出所有的符合pattern匹配模式的key。這種方式相較於使用keys pattern的方式查詢key麻煩許多,但是當你的key非常多的時候,使用scan方式效率上明顯會提升。
  pattern的用法:與keys pattern命令中的pattern用法一致
  count參數:代表本次掃描想要列出的key的個數,但是實際上會列出的key的個數並不一定會是count參數的值,這個參數是不精準的
  傳回值:遍曆符合pattern的所有key資料,這些key可能會有重複,需要在用戶端程式應用中進行判斷
  exp:sacn 0
      sacn 0 match key?
      scan 0 match key[1-8] count 5

 

 

4、randomkey
  功能:隨機返回redis資料庫中的一個key
  傳回值:一個鍵名
  exp:randomkey

 

 

5、type key
  功能:查詢一個key鍵的類型
  傳回值:如果key存在,返回儲存在該鍵上資料的資料類型的表現形式,不同的類型共有string,list,set,zset,hash五種。如果key不存在,則返回none。
  exp:type key1

 

 

6、object subcommand [arguments [arguments ...]]
  功能:從內部查看給定key的redis對象(key所對應的具體對象)
  subcommand子命令:
    object refcount key:返回當前key對應的對象的引用次數
    object idletime key:返回當前key對應的對象的空閑時間
    object encoding key:返回當前key對應的對象的資料類型,如‘int‘,‘quicklist‘,‘embstr‘等等
  傳回值:refcount/idletime返回數字,encoding返回redis對象的編碼類別型
  注意:如果某個對象的encoding為‘int‘,並且這個對象的值在0-9999之間,那麼他的refcount引用次數會一直為2147483647,而其他的類型或者不在該範圍內的資料則會返回具體的引用次數。
  exp: object refcount key1
     object encoding key1
     object idletime key1

 

 

7、rename key newkey
  功能:給key重新命名為newkey,如果newkey已經存在,則key所指向的資料會覆蓋已存在的newkey的資料
  傳回值:1、成功則返回OK
      2、如果被更名的key在redis中不存在,則會報錯。
  exp: rename username name

 

 

8、renamenx key newkey
  功能:若且唯若newkey不存在時給key重新命名為newkey
  傳回值:1、舊名稱key在redis中不存在,則會報錯
      2、重新命名成功則返回1

      3、新名稱newkey已經存在於redis中則返回0
  exp: renamenx username name

 

 

9、touch key [key...]
  功能:觸碰一下key(可以為多個),把key的最後訪問時間變為目前時間,當然這個對象的空閑時間就會變成0。
  傳回值:因為key可以不存在也可以重複,傳回值為實際touch到的key的數量(key存在且重複不回去重數量)
  exp:
    touch username
    object idletime username

 

 

10、del key [key...]
  功能:刪除key,可以是多個,屬於阻塞式刪除
  傳回值:如果key不存在,則返回零,如果多個key,則返回實際刪除的key的個數,這裡相較於exists和touch的傳回值,如果key重複,在傳回值計算數量時會去重返回
  exp:del username
      del key1 key2 username

 

11、unlink key [key...]
  功能:刪除key,可以是多個,屬於非阻塞式刪除,用法與del相同,但相對於del,效率更高
  傳回值:如果key不存在,則返回零,如果多個key,則返回實際刪除的key的個數,這裡相較於exists和touch的傳回值,如果key重複,在傳回值計算數量時會去重返回
  exp:unlink username
      unlink key1 key2 username

 

12、expire key seconds
  功能:為給定的key設定多少秒後到期(如果該給定的key已經設定了到期時間,則為更改到期時間操作)。如果設定的seconds小於0等於0,則該鍵key立刻會被刪除。
  傳回值:1、設定成功返回1
      2、否則key不存在或者設定失敗返回0
  exp:expire age 60

 

13、expireat key timestamp
  功能:為key設定具體的到期時間點,時間點為Unix時間戳記
  傳回值:1、成功則返回1
      2、當key不存在或者沒辦法設定到期時間則返回0
  exp:expireat username 1600000000

 

14、pexpire key milliseconds
  功能:與expire一致,只不過是值得數值為毫秒
  傳回值:1、設定成功返回1
      2、當key不存在或者沒辦法設定到期時間則返回0
  exp:pexpire age 60000

 

15、pexpireat key milliseconds-timestamp
  功能:與pexpire功能一致,只不過設定的時間戳記為毫秒層級
  傳回值:1、成功則返回1
      2、當key不存在或者沒辦法設定到期時間則返回0
  exp:pexpireat username 1600000000000

 

16、ttl key
  功能:返回以秒為單位的key的剩餘到期時間
  傳回值:1、當key不存在的時候,返回-2
      2、當key存在但是沒有設定到期時間,返回-1
      3、否則,以秒為單位,返回key的剩餘到期時間
  exp:ttl username

 

17、pttl key
  功能:與ttl一樣,只不過返回的剩餘到期時間是以毫秒為單位的值

 

18、persist key
  功能:移除給定的key的存留時間,將這個key轉換成持久的
  傳回值:1、移除成功返回1
      2、key不存在或者未設定到期時間返回0
  exp:persist age

 

19、dump key
  功能:序列化給定的key並返回序列化的結果,便於傳輸等操作,序列化的結果不包含任何到期時間相關資訊
  傳回值:1、如果成功則返回被序列化的結果(特殊格式的字串)
      2、如果key不存在則返回nil
  exp: dump username

 

20、restore key ttl serialized-value [REPLACE]
  功能:還原序列化給定的序列化字串,將得到的結果和給定的key關聯,並且設定到期時間長度為以毫秒為單位的ttl(如果ttl為0則代表新產生的key永久有效)。如果key已經存在,此時如果使用replace則會覆蓋原來的key,如果未使用replace,則會報錯
  傳回值:1、如果成功則返回OK
      2、給定的key已經存在,但是未使用replace參數,會報錯

 

21、sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
  功能:返回或者儲存給定的列表,集合,有序集合中經過排序的結果。排序預設以數字為對象,值被解釋為雙精確度浮點數,然後進行比較
  傳回值:1、未使用store參數,則返回排序過後的列表形式的結果
      2、如果使用了store參數,則把排序結果儲存到給定的destination鍵裡,並返回結果元素數量。如果destination為已經存在的key,則原來的key的內容將會被覆蓋
  exp:lpush nums 1 4 21 3 21 43 20
      sort nums store newkey
      sort nums desc store newkey limit 2 3

 

 

22、move key db
  功能:相同執行個體之間的不同庫之間的資料移轉,將當前資料庫的key移動到指定資料庫db當中。如果目標資料庫存在該key,或者當前資料庫不存在該key,那麼move沒有任何效果。注意這個操作是移動不是複製。
傳回值:如果移動成功,則返回1。如果沒有move效果,則返回0
  exp:move username 1

 

23、migrate host port key| destination-db timeout [COPY] [REPLACE] [KEYS key]
  功能:多個執行個體之間的資料移轉,將key原子性的從當前執行個體移動到目標執行個體的指定資料庫上,一旦傳送成功,則會保證key出現在目標執行個體指定的資料庫上,而當前庫中的key將被刪除。timeout參數為以毫秒為單位的時間逾時時間,如果逾時則會傳送失敗。如果目標執行個體的指定庫裡面有該key,此時如果使用replace,目標執行個體上的該key將會被覆蓋,否則將會傳送失敗。因為該操作是原子性的,他在執行的時候會阻塞正在遷移的兩個執行個體直到發生以下時間,遷移成功,遷移失敗,遷移逾時。注意如果使用copy參數,則會是複製,原執行個體中的key將會被保留。如果沒使用copy,則就是移動。
如果想要移動多個key,那麼key參數可以傳遞一個‘ ‘佔位,然後添加keys參數即可

  exp:migrate 192.168.12.133 6379 username 0 2000 copy replace

      migrate 192.168.12.133 6379 "" 0 3000 copy replace key1 key2 key3

 

redis鍵的基本操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.