redis五種資料型別及使用場景

2021-10-22 23:11:09 字數 2065 閱讀 1427

一、redis簡介

redis 是乙個開源的使用 c 語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、key-value 資料庫。它可以用作資料庫、快取和訊息中介軟體。

二、redis的資料型別 

redis 是一種高階的 key-value 的儲存系統,其中key值是二進位制安全的,這意味著可以用任何二進位制序列作為key值,從形如」foo」的簡單字串到乙個jpeg檔案的內容都可以。空字串也是有效key值。而redis的 value 支援五種資料型別,分別為string (字串型別),hash (表型別),list (列表型別),set(集合型別) 和zset (有序集合型別)。

string(字串)型別在 redis 中以二進位制儲存,沒有編碼和解碼的過程。無論存入的是字串、整數、浮點型別都會以字串寫入redis中,所有的key都是字串型別,其它幾種資料型別構成的元素也是字串。字串的長度不能超過512m。 常用命令: set,get,decr,incr,mget 等。

1.string (字串)

應用場景:普通的key/ value 儲存都可以歸為此類.即可以完全實現目前 memcached 的功能,並且效率更高。還可以享受redis的定時持久化,操作日誌及 replication ,常規計數:微博數,粉絲數等等功能。

2.hash (表型別) key是乙個字串型別,value是乙個鍵值對集合,每乙個 hash 可以儲存 40 億個鍵值對。 常用命令: hget,hset,hgetall 等。

應用場景:該型別非常適合於儲存物件的資訊。如乙個使用者有姓名,密碼,年齡等資訊。

3.list (列表型別)按插入順序排序。您可以向redis列表的頭部或尾部新增元素。在插入時,如果該鍵並不存在,redis 將為該鍵建立乙個新的鍊錶,如果這個鍵已經存在,則是向 list 新增元素。與此相反,如果鍊錶中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。list 中可以包含的最大元素數量是 40 億個。 常用命令:lpush,rpush,lpop,rpop,lrange,blpop(阻塞版)等。

應用場景:1.最新訊息排行。2.訊息佇列,可以利用lists的push操作,將任務存在lists中,然後工作執行緒再用pop操作將任務取出進行執行。

4.set(集合型別)string 型別的無序集合。集合成員是唯一的,不能出現重複的資料。redis 中集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是 o(1)。集合中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)。 常用操作:sadd,spop,smembers,sunion 等。

應用場景: 當你需要儲存乙個列表資料,又不希望出現重複資料時,set是乙個很好的選擇,並且set提供了判斷某個成員是否在乙個set集合內的重要介面,這個也是list所不能提供的。比如在微博應用中,可以將乙個使用者所有的關注人存在乙個集合中,將其所有粉絲存在乙個集合。redis還為集合提供了求交集、並集、差集等操作,可以非常方便的實現如共同關注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結果返回給客戶端還是存集到乙個新的集合中。

5.zset (有序集合型別) redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數(score)卻可以重複。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是o(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)。 常用命令:zadd,zrange,zrem,zcard等

應用場景:redis sorted set的使用場景與set類似,區別是set不是自動有序的,而sorted set可以通過使用者額外提供乙個優先順序(score)的引數來為成員排序,並且是插入有序的,即自動排序。當你需要乙個有序的並且不重複的集合列表,那麼可以選擇sorted set資料結構,比如twitter 的public timeline可以以發表時間作為score來儲存,這樣獲取時就是自動按時間排好序的。 另外還可以用sorted sets來做帶權重的佇列,比如普通資訊的score為1,重要訊息的score為2,然後工作執行緒可以選擇按score的倒序來獲取工作任務。讓重要的任務優先執行。(1.去重排序 2.優先順序佇列)

redis 五種資料型別的使用場景

這種為最常見的key value型別儲存於redis,通常可用作儲存token,在儲存是key值最好帶有 冒號方便查詢 常用命令 hget,hset,hgetall 等。應用場景 我們簡單舉個例項來描述下hash的應用場景,比如我們要儲存乙個使用者資訊物件資料,包含以下資訊 使用者id,為查詢的ke...

Redis五種資料型別及應用

redis常見的五種資料型別 string hash list set sorted set zset string是簡單的key value型別,效率高。常用命令 get set incr decr mget等 應用 常規的key value操作 常規計數 微博數 粉絲數 點讚數 hash其實也是...

Redis 五種資料型別

一 前言 上篇部落格已經對redis的一些基本知識做了一些簡介,這篇部落格,將簡單介紹一些redis的五種資料型別。分別為string 字串 hash 雜湊 list 鍊錶 set 集合 zset 有序集合 對這些型別可以執行很多原子性的操作 比如向乙個string型別的value後面追加字串 向l...