Redis 資料結構之string

2021-09-25 19:39:40 字數 4204 閱讀 6448

字串型別是 redis 中最為基礎的資料儲存型別,是乙個由位元組組成的序列,它可以接受任何格式的資料,如jpeg影象資料或json物件描述資訊等,是標準的key-value,一般用來存字串、整數和浮點數。value最多可容納的資料長度為512mb。

key定義的注意點:

set 賦值:

127.0.0.1:6379> set age 18

ok

get  取值:

127.0.0.1:6379> get age

"18"

getset  獲取並設定值

127.0.0.1:6379> getset age 19

"18"

127.0.0.1:6379> get age

"19"

setrange/getrange【命令格式】:setrange key offset valuegetrange key start end

setrange 用 value 引數覆寫給定 key 所儲存的字串值,從偏移量 offset 開始。不存在的 key 當作空白字串處理。

setrange 命令會確保字串足夠長以便將 value 設定在指定的偏移量上,如果給定key原來儲存的字串長度比偏移量小,那麼原字元和偏移量之間的空白將用零位元組(zerobytes, "\x00" )來填充

getrange 返回 key 中字串值的子字串,字串的擷取範圍由 start 和 end 兩個偏移量決定(包括 start 和 end 在內)。負數偏移量表示從字串最後開始計數,-1 表示最後乙個字元,-2 表示倒數第二個,以此類推。

getrange 通過保證子字串的值域(range)不超過實際字串的值域來處理超出範圍的值域請求。不支援迴繞操作。

127.0.0.1:6379> set hello "hello world!"

ok127.0.0.1:6379> setrange hello 6 "redis"

(integer) 12

127.0.0.1:6379> get hello

"hello redis!"

127.0.0.1:6379> setrange hello 13 ^_^

(integer) 16

127.0.0.1:6379> get hello

"hello redis!\x00^_^"

127.0.0.1:6379>

127.0.0.1:6379> set hello "hello world"

ok127.0.0.1:6379> getrange hello 0 -1

"hello world"

127.0.0.1:6379> getrange hello 0 3

"hell"

127.0.0.1:6379> getrange hello -1 -5

""127.0.0.1:6379> getrange hello -5 -1

"world"

msetnx key value [key value ...]

同時設定乙個或多個 key-value 對,當且僅當所有給定 key 都不存在。

即使只有乙個給定 key 已存在, msetnx 也會拒絕執行所有給定 key 的設定操作。

msetnx 是原子性的,因此它可以用作設定多個不同 key 表示不同字段(field)的唯一性邏輯物件(unique logic object),所有字段要麼全被設定,要麼全不被設定。

del 刪除

127.0.0.1:6379> del name

(integer) 1

127.0.0.1:6379> get name

(nil)

incr 自增

127.0.0.1:6379> incr n

(integer) 1

127.0.0.1:6379> get n

"1"127.0.0.1:6379> 

127.0.0.1:6379> incr age

(integer) 20

decr 自減

127.0.0.1:6379> decr i

(integer) -1

127.0.0.1:6379> decr age

(integer) 19

incrby 指定增量值

127.0.0.1:6379> get age

"19"

127.0.0.1:6379> incrby age 4

(integer) 23

decrby 指定減量值

127.0.0.1:6379> decrby age 6

(integer) 17

假如沒定義 直接賦值

(integer) 5

(integer) 9

127.0.0.1:6379> get str

"helloword"

bitop operation destkey key [key ...]

對乙個或多個儲存二進位制位的字串 key 進行位元操作,並將結果儲存到 destkey 上。

operation 可以是 and 、 or 、 not 、 xor 這四種操作中的任意一種

除了 not 操作之外,其他操作都可以接受乙個或多個 key 作為輸入。

當 bitop 處理不同長度的字串時,較短的那個字串所缺少的部分會被看作 0 。

127.0.0.1:6379> setbit bit1 2 1  # bit1  001

(integer) 0

127.0.0.1:6379> setbit bit2 1 1 # bit2 011

(integer) 0

127.0.0.1:6379> setbit bit2 2 1

(integer) 0

127.0.0.1:6379> bitop and result bit1 bit2

(integer) 1

127.0.0.1:6379> getbit result 0

(integer) 0

127.0.0.1:6379> getbit result 1

(integer) 0

127.0.0.1:6379> getbit result 2

(integer) 1

bitcount key [start] [end]

計算給定字串中,被設定為 1 的位元位的數量。

一般情況下,給定的整個字串都會被進行計數,通過指定額外的 start 或 end 引數,可以讓計數只在特定的位上進行。start 和 end 引數的設定可以使用負數值

不存在的 key 被當成是空字串來處理,因此對乙個不存在的 key 進行 bitcount 操作,結果為 0 。

127.0.0.1:6379> bitcount bit2

(integer) 2

127.0.0.1:6379> bitcount empty

(integer) 0

redis之資料結構 上

1.redis之key value對 key 在儲存redis記憶體中的資料起的變數名字 value value 的型別可以是string,list,set,sort set,hash.一般情況 key的命名規則是 鍵盤除了空格 換行外其他的大部分字元都可以使用。建議key不要太長,佔記憶體,也不要...

redis資料結構之字典

字典 dictionary 其實和符號表 symbol table 關聯陣列 associative array 對映 map 是乙個東東,都是為了儲存鍵值對 k v pair 的資料結構,屌屌噠。php中因為能很方便的用關聯陣列,因此能寫出很多實用高效的 有空一定要去好好了解下php的關聯陣列是如...

redis資料結構之List

在redis中,list型別是按照插入順序排序的字串鍊錶。和資料結構中的普通鍊錶一樣,我們可以在其頭部 left 和尾部 right 新增新的元素。在插入時,如果該鍵並不存在,redis將為該鍵建立乙個新的鍊錶。與此相反,如果鍊錶中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。list中可以包...