Redis字符串類型

  • 2019 年 10 月 7 日
  • 筆記

從今天開始我將重點分享一下Redis中的5種數據結構,今天我們學習一下第一種數據結構字符串。字符串是Redis中的最基礎的數據結構。我們保存到Redis中的key,也就是鍵,就是字符串結構的,除此之外,我們以後學習的其它數據結構,也是在字符串的基礎上設計的,可見字符串結構對於Redis是多麼的重要。字符串中的值雖然是字符串但是可以保存很多種類型的如:簡單的字符串、JSON、XML、二進制等等。但有一點要特別注意,就是在Redis中字符串類型的值最大只能保存512MB。



  • 命令
  1. 設置值
set key value [EX seconds] [PX milliseconds] [NX|XX]

set命令有幾個非必須的選項,下面我們看一下它們具體的說明

  • EX seconds:為鍵設置秒級過期時間
  • PX milliseconds:為鍵設置毫秒級過期時間
  • NX:鍵必須不存在,才可以設置成功,用於添加
  • XX:鍵必須存在,才可以設置成功,用於更新

下面我們看一下setnx和setxx命令在實際的開發中,有什麼作用呢?我們知道setnx命令只有當然key不存在的時候才能設置成功,換句話說,也就是同一個key在執行setnx命令時,只能成功一次,並且由於Redis的單線程命令處理機制,即使多個客戶端同時執行setnx命令,也只人有一個客戶端執行成功。所以,正是基於setnx命令的這種特性,所以setnx命令可以作為分佈式鎖的一種解決方案。

2.獲取值

get key

3.批量設置值

mset key value

4.批量獲取值

mget key

如果有些鍵不存在,那麼它的值將為nil也就是空,並且返回的結果,就是按照傳入鍵的順序返回的。


5.計數

incr key

incr命令用於對值做自增操作,返回的結果分為3種情況:

  • 如果值不是整數,那麼返回的一定是錯誤
  • 如果值是整數,那麼返回自增後的結果
  • 如果鍵不存在,那麼就會創建此鍵,然後按照值為0自增, 就是返回1 除此之外,在Redis中除了有incr自增命令外,還提供了很多其它的有關對數字處理的命令。例如:
decr key 自減  incrby kek increment 自增指定數字  decrby key decrement 自減指定數字  incrbyfloat key increment 自增浮點數

6.追加值

append key value

append命令可以向字符串尾部追加值。


7.字符串長度

strlen key

由於每個中文佔用3個位元組,所以jilinwula這個鍵,返回是字符串長度為12,而不是4。


8.設置並返回原值

getset key value

9.設置指定位置的字符

setrange key offeset value

10.獲取部分字符串

getrange key start end
  • 時間複雜度 在Redis中執行任何命令時,都有相應的時間複雜度的,複雜度越高也就越費時間,所以在執行Redis中的命令時,如果要執行的命令複雜度越高,就越要慎重。

下面是字符串命令時間複雜度類型表:

  • 內部編碼 在Redis中字符串類型的內部編碼有3種。
  • int:8個位元組的長整型
  • embstr:小於等於39個位元組的字符串
  • raw:大於39個位元組的字符串