redis string型別的設計與實現

2021-07-10 19:03:55 字數 1682 閱讀 9306

redis的

string

redis string,無字首,對於不存在的key

都會建立指定的

key

命令效果

備註set key value

設定對應的key

和value

set name lzj

get key

獲取對應key

的value

get name

setnx key value

如果key

已經存在,則不執行並返回0

set if not exists

setex key time value

設定鍵值對並且設定有效期,單位為s

setex name 10 lzj

setrange index str

從指定下標開始替換字元(6

則從第七個字元開始替換),

剩餘的字串不會被刪除

setrange name 0 l

把首字母大寫

mset key1 value1 key2 value2

一次設定多個key

的值,1√0

×,會覆蓋已經存在的

key

mset name lzj *** man

mget key1 key2

一次獲取多個key的值

mget name ***

getset

設定key

的值,返回

key的舊值

gettest name

getrange key start end

獲取子字串

getrange name 0 2

incr key

對key

的值做加加操作,並返回新的值

可以通過負數來實現減法

incr age

incrby

新增指定的值 

incrb key 2

decr decrby

給指定key

的字串追加

value

,返回新字串值的長度

strlen key

取指定key

的value

值的長度

strlen name

redis自己構建了一種名為簡單動態字串(sds , ****** dunamic string)的抽象型別

將其作為redis的預設字串表示

例: 客戶端設定字串時

set name lzj

鍵值對的鍵是乙個字串物件,底層是儲存著字串"name"的sds

鍵值對的值也是sds,儲存著"lzj"

每個sds.h/sdshdr結構表示乙個sds值:

sds遵循c字串以空字元結尾的慣例,儲存空字元('\0')的1位元組空間不包含在len裡面

sds的空間分配規則:

1.如果sds修改後len小於1mb,則free變為修改後的len長度

即原來len==5,修改後len==10,則修改後 sds = len(10) + free(10) + 1

2.如果sds修改後len>=1mb,則每次擴充套件1mb

Redis string型別的操作

設定key的值 set key value 設定多個key mset key1 value1 key2 value2 keyx valuex 獲取key get key 獲取多個key mget key1 key2.keyx 指定key的字串追加value 擷取key的字串 包括開始位置和結束位置 ...

redis String資料型別

1 set 設定乙個key value 2 get 根據key獲得對應的value 127.0.0.1 6379 set name hello ok127.0.0.1 6379 get name hello 127.0.0.1 6379 3 mset 一次設定多個key value 4 mget 一...

Redis string型別常用操作

redis 有 string list set zset hash資料型別。string型別是最基礎的,其他型別都是在string型別上去建立的,所以了解熟悉string型別的常用操作對於學習redis非常必要。127.0.0.1 6379 7 get hello world integer 141...