Redis五種基本資料型別

2021-08-10 04:34:47 字數 3678 閱讀 4286

1、常用命令

set key value [ex] [px] (setex aa 10 test)

getmset(批量設定)

mget

incr key

decr

incrby key increment 增多少

decrby

incrbyfloat 浮點數增加

2、 內部編碼

int:8個位元組的長整型

embstr:小於等於39個位元組的字串

raw:大於39個位元組的字串

object encording key 檢視編碼型別

3、 使用場景:快取、技術、共享session、限速等

1、常用命令

hsetnx

hget key field

hdel key field

hlen key 計算field個數

hmset key field value [field value ...] 批量設定

hmget key field [field ...] 批量獲取

hexists key field 判斷field是否存在

hkeys key 獲取所有field

hvals key 獲取所有值

hgetall 獲取所有field - value

hincrby key 將field自增

hincrbyfloat key

hstrlen key field 查詢value的字串長度【redis3.2】

在使用hgetall時,如果雜湊元素個數比較多,會存在阻塞redis的可能。

若只需獲取部分field,可使用hmget命令。

若獲取全部,可使用hscan命令。

2、內部編碼

ziplist 壓縮節省記憶體

hashtable ziplist不滿足時使用

3、對比hash和string

優勢:比通過序列化資料快取,hash更直觀。

減少序列化和反序列化的開銷。

序列化儲存需要做寫入的併發保護。(寫入和獲取是有可能丟失或者生成髒資料)

劣勢:要控制hash在ziplist和hashtable轉換,因為hashtable需要更多記憶體。

三、list(列表)

列表:有序,可以通過索引獲取下標元素,或某個範圍的元素。

可重複:與set和sorted set不同的地方

可充當棧和佇列的角色。

1、常用命令

新增:rpush key value [value ..] 從右邊插入元素

lpush

linsert key before|after prove value 找到prove元素,在其前面或者後面插入value

查詢:lrange key start end 獲取指定範圍內元素列表

lindex key index 獲取列表指定索引下標的元素

llen key 獲取列表長度

刪除:lpop key 從列表左側彈出元素

rpop

lrem key count value 刪除指定元素

count > 0 :從做到右,刪除最多count個元素

count < 0 :從右到左,刪除最多count絕對值個元素

count = 0 : 刪除所有

ltrim key start end 按照索引範圍裁剪列表、

修改:lset key index newvalue 修改指定下標元素

阻塞操作:

blpop key [key ...] timeout (非同步訊息佇列消費可以通過這個獲取資料)

brpop key [key ...] timeout

lpop 和rpop的阻塞版本,timeout為阻塞時間(秒)

列表為空:

若timeout = 3,那麼客戶端等到3秒後返回

若timeout = 0,那麼客戶端會一直阻塞下去。直到有元素進入列表

列表不為空:客戶端會立即返回。

注意:如果有多個鍵,那麼brpop會從左到右遍歷鍵,一旦有乙個能彈出元素,客戶端立即返回。

如果有過個客戶端對同乙個鍵執行brpop,最先執行brpop命令的客戶端可以獲取到彈出的元素。

2、內部編碼:

ziplist壓縮列表

linkedlist 鍊錶

3、應用場景

不允許有重複元素

無序無法通過索引下標獲取元素

集合內的增刪改查

多個集合的交集並集差集

1、常用命令

sadd key element [element ...]

srem

scard key 計算元素個數 0(1)

sismember key element 判讀元素是否在集合中。在1,不在0

srandmember key [count] 隨機從集合返回指定個數元素

spop key 從集合隨機彈出元素

smember key 獲取所有元素

集合間的操作:

sinter key [key] 交集

sunion 並集

sdiff 差集

sinterstore destination key [key ...] 將交集的結果保持

sunionstore destination key [key ...] 將並集的結果保持

sdiffstore destination key [key ...] 將差集的結果保持

2、內部編碼

intset整數集合(元素個數預設512)

hashtable

3、內部編碼

標籤、生成隨機數,比如**(spop、srandmember)、社交需求

不可重複性

可排序:通過給每個元素設定乙個分數(score)

1、常用命令

zadd key score member [score member ...] 新增成員

zcard key 計算成員個數 o(1)

zscore key member 計算成員分數

zrank key member 從低到高返回排名

zrevrank key member 從高到低返回排名

zrem key member [member ...] 刪除成員

zincrby key increment member 增加成員的分數

zrange key start end [withscores] 返回指定排名範圍的成員

zrevrange

withscore 選項,同時返回成員的分數

zrangebyscore key min max [withscores] [limit offset count]返回指定分數範圍的成員

zrevrangebyscore

2、應用場景

排行榜系統等。

redis五種基本資料型別

對redis來說,所有的key 鍵 都是字串。是redis中最基本的資料型別,乙個key對應乙個value。string型別是二進位制安全的,意思是 redis 的 string 可以包含任何資料。如數字,字串,jpg或者序列化的物件。使用 get set del incr decr 等 127.0...

redis五種基本資料型別

redis中所有的key的型別都是字串 常用操作 新增乙個key set key1 value1 新增乙個key,並設定自動過期時間 set name1 jack1 ex 3 批量設定多個key mset key1 value1 key2 value2 獲取乙個key的值 get key1 獲取ke...

Redis 五個基本資料型別

1.string型別 字串型別 string 是redis中最基本的型別。redis中的string 型別是二進位制安全的,也就是說在redis中string型別可以包含各種資料,比如一張jpeg或者是乙個序列化的ruby物件。乙個string型別的值最大長度可以是512m。在redis中strin...