Redis之String 字串型別

2021-07-24 07:26:29 字數 3291 閱讀 7451

字串型別是redis中最為基礎的資料儲存型別,它在redis中是二進位制安全的,這便意味著該型別可以接受任何格式的資料,如jpeg影象資料或json物件描述資訊等。在redis中字串型別的value最多可以容納的資料長度是512m。

命令原型

時間複雜度

命令描述

返回值o(1)

追加後value的長度。

decr key

o(1)

將指定key的value原子性的遞減1。如果該key不存在,其初始值為0,在decr之後其值為-1。如果value的值不能轉換為整型值,如hello,該操作將執行失敗並返回相應的錯誤資訊。注意:該操作的取值範圍是64位有符號整型。

遞減後的value值。

incr key

o(1)

將指定key的value原子性的遞增1。如果該key不存在,其初始值為0,在incr之後其值為1。如果value的值不能轉換為整型值,如hello,該操作將執行失敗並返回相應的錯誤資訊。注意:該操作的取值範圍是64位有符號整型。

遞增後的value值。

decrby key decrement

o(1)

將指定key的value原子性的減少decrement。如果該key不存在,其初始值為0,在decrby之後其值為-decrement。如果 value的值不能轉換為整型值,如hello,該操作將執行失敗並返回相應的錯誤資訊。注意:該操作的取值範圍是64位有符號整型。

減少後的value值。

incrby key increment

o(1)

將指定key的value原子性的增加increment。如果該key不存在,其初始值為0,在incrby之後其值為increment。如果 value的值不能轉換為整型值,如hello,該操作將執行失敗並返回相應的錯誤資訊。注意:該操作的取值範圍是64位有符號整型。

增加後的value值。

get key

o(1)

獲取指定key的value。如果與該key關聯的value不是string型別,redis將返回錯誤資訊,因為get命令只能用於獲取string value。

與該key相關的value,如果該key不存在,返回nil。

set key value

o(1)

設定該key持有指定的字串value,如果該key已經存在,則覆蓋其原有值。

總是返回"ok"。

getset key value

o(1)

原子性的設定該key為指定的value,同時返回該key的原有值。和get命令一樣,該命令也只能處理string value,否則redis將給出相關的錯誤資訊。

返回該key的原有值,如果該key之前並不存在,則返回nil。

strlen key

o(1)

返回指定key的字元值長度,如果value不是string型別,redis將執行失敗並給出相關的錯誤資訊。

返回指定key的value字元長度,如果該key不存在,返回0。

setex key seconds value

o(1)

原子性完成兩個操作,一是設定該key的值為指定字串,同時設定該key在redis伺服器中的存活時間(秒數)。該命令主要應用於redis被當做cache伺服器使用時。

setnx key value

o(1)

如果指定的key不存在,則設定該key持有指定字串value,此時其效果等價於set命令。相反,如果該key已經存在,該命令將不做任何操作並返回。

1表示設定成功,否則0。

setrange key offset value

o(1)

替換指定key的部分字串值。從offset開始,替換的長度為該命令第三個引數value的字串長度,其中如果offset的值大於該key的原有 值value的字串長度,redis將會在value的後面補齊(offset - strlen(value))數量的0x00,之後再追加新值。如果該鍵不存在,該命令會將其原值的長度假設為0,並在其後添補offset個0x00後 再追加新值。鑑於字串value的最大長度為512m,因此offset的最大值為536870911。最後需要注意的是,如果該命令在執行時致使指定 key的原有值長度增加,這將會導致redis重新分配足夠的記憶體以容納替換後的全部字串,因此就會帶來一定的效能折損。

修改後的字串value長度。

getrange key start end

o(1)

如果擷取的字串長度很短,我們可以該命令的時間複雜度視為o(1),否則就是o(n),這裡n表示擷取的子字串長度。該命令在擷取子字串時,將以閉 區間的方式同時包含start(0表示第乙個字元)和end所在的字元,如果end值超過value的字元長度,該命令將只是擷取從start開始之後所 有的字元資料。

子字串

setbit key offset value

o(1)

設定在指定offset上bit的值,該值只能為1或0,在設定後該命令返回該offset上原有的bit值。如果指定key不存在,該命令將建立乙個新 值,並在指定的offset上設定引數中的bit值。如果offset大於value的字元長度,redis將拉長value值並在指定offset上設 置引數中的bit值,中間新增的bit值為0。最後需要說明的是offset值必須大於0。

在指定offset上的bit原有值。

getbit key offset

o(1)

返回在指定offset上bit的值,0或1。如果offset超過string value的長度,該命令將返回0,所以對於空字串始終返回0。

在指定offset上的bit值。

mget key [key ...]

o(n)

n表示獲取key的數量。返回所有指定keys的values,如果其中某個key不存在,或者其值不為string型別,該key的value將返回nil。

返回一組指定keys的values的列表。

mset key value [key value ...]

o(n)

n表示指定key的數量。該命令原子性的完成引數中所有key/value的設定操作,其具體行為可以看成是多次迭代執行set命令。

該命令不會失敗,始終返回ok。

msetnx key value

[key value ...]

o(n)

n表示指定key的數量。該命令原子性的完成引數中所有key/value的設定操作,其具體行為可以看成是多次迭代執行setnx命令。然而這裡需要明確說明的是,如果在這一批keys中有任意乙個key已經存在了,那麼該操作將全部回滾,即所有的修改都不會生效。

1表示所有keys都設定成功,0則表示沒有任何key被修改。

Redis系列 字串 String (六)

redis 字串資料型別的相關命令用於管理 redis 字串值,基本語法如下 redis 127.0 0.1 6379 command key nameredis 127.0 0.1 6379 set runoobkey redis okredis 127.0 0.1 6379 get runoob...

Redis的字串型別 String

string是redis最基本的型別,你可以理解成與memcached一模一樣的型別,乙個key對應乙個value。string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg或者序列化的物件 string型別是redis最基本的資料型別,乙個鍵最大能儲存512mb。...

Redis 命令(字串 String )

redis 127.0 0.1 6379 command key nameredis 127.0 0.1 6379 set runoobkey redis okredis 127.0 0.1 6379 get runoobkey redis 在以上例項中我們使用了set和get命令,鍵為runoob...