redis 資料型別的使用場景

2022-05-13 22:45:12 字數 1370 閱讀 2194

value為對應的資料型別。

string

應用場景:

string是最常用的一種資料型別,普通的key/value儲存都可以歸為此類,value其實不僅是string,也可以是數字。

hash

應用場景:

我們簡單舉個例項來描述下hash的應用場景,比如我們要儲存乙個使用者資訊物件資料,包含以下資訊:

使用者id,為查詢的key,

儲存的value使用者物件包含姓名name,年齡age,生日birthday 等資訊,

如果用普通的key/value結構來儲存,主要有以下2種儲存方式:

第一種方式將使用者id作為查詢key,把其他資訊封裝成乙個物件以序列化的方式儲存,

如:set u001 "李三,18,20010101"

這種方式的缺點是,增加了序列化/反序列化的開銷,並且在需要修改其中一項資訊時,需要把整個物件取回,並且修改操作需要對併發進行保護,引入cas等複雜問題。

第二種方法是這個使用者資訊物件有多少成員就存成多少個key-value對兒,用使用者id+對應屬性的名稱作為唯一標識來取得對應屬性的值,

如:mset user:001:name "李三 "user:001:age18 user:001:birthday "20010101"

雖然省去了序列化開銷和併發問題,但是使用者id為重複儲存,如果存在大量這樣的資料,記憶體浪費還是非常可觀的。

那麼redis提供的hash很好的解決了這個問題,redis的hash實際是內部儲存的value為乙個hashmap

並提供了直接訪問這個map成員的介面,

如:hmset user:001 name "李三" age 18 birthday "20010101"

也就是說,key仍然是使用者id,value是乙個map,這個map的key是成員的屬性名,value是屬性值,

這樣對資料的修改和訪問都可以直接通過其內部map的key(redis裡稱內部map的key為field), 也就是通過

key(使用者id) + field(屬性標籤) 操作對應屬性資料了,既不需要重複儲存資料,也不會帶來序列化和併發修改控制的問題。很好的解決了問題。

list

set實現方式:

set 的內部實現是乙個 value永遠為null的hashmap,實際就是通過計算hash的方式來快速排重的,這也是set能提供判斷乙個成員是否在集合內的原因。

redis中,並不是所有的資料都一直儲存在記憶體中的,這是和memcached相比乙個最大的區別
redis不僅僅支援簡單的k/v型別的資料,同時還提供list,set,hash等資料結構的儲存

redis 資料型別使用場景

redis各個資料型別的使用場景redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 redis列表命令 參考 使用場景string string資料結構是簡單的key value型別,value其實不僅可以是str...

redis 資料型別使用場景

redis各個資料型別的使用場景 redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 redis列表命令 參考 使用場景string string資料結構是簡單的key value型別,value其實不僅可以是st...

Redis 資料型別 使用場景

string 一般做一些複雜的計數功能的快取 list 做簡單的訊息佇列的功能 hash 單點登入 set 做全域性去重的功能 sortedset 做排行榜應用,取topn操作 延時任務 做範圍查詢 簡介特性 場景string 字串 redis的字串是動態字串,是可以修改的字串,它的內部表示就是乙個...