redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)。
string是redis最基本的型別,你可以理解成與memcached一模一樣的型別,乙個key對應乙個value。
string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg或者序列化的物件 。
string型別是redis最基本的資料型別,乙個鍵最大能儲存512mb。
1、o(1)時間複雜度獲取字串長度、未用長度、已用長度
2、預分配機制,減少記憶體再分配次數
3、惰性刪除機制,字串縮減長度後的空間不釋放,作為預分配保留
string在redis內部儲存預設就是乙個字串,被redisobject所引用,當遇到incr,decr等操作時會轉成數值型進行計算,此時redisobject的encoding欄位為int。
命令:get/set
業務場景:
string是最常用的一種資料型別,普通的key/ value 儲存都可以歸為此類.
redis hash 是乙個鍵值(key=>value)對集合。
redis hash是乙個string型別的field和value的對映表,hash特別適合用於儲存物件。
可以將資料庫一條記錄或程式中乙個物件轉換成hashmap存放在redis中。
業務場景:使用者有多個屬性,修改是存在修改乙個屬性序列化反序列化整個物件,採用hash時:key仍然是使用者id, value是乙個map,這個map的key是成員的屬性名,value是屬性值,這樣對資料的修改和訪問都可以直接通過其內部map的key(redis裡稱內部map的key為field),
命令:hget.hset
上面已經說到redis hash對應value內部實際就是乙個hashmap,實際這裡會有2種不同實現,這個hash的成員比較少時redis為了節省記憶體會採用類似一維陣列的方式來緊湊儲存,而不會採用真正的hashmap結構,對應的value redisobject的encoding為zipmap,當成員數量增大時會自動轉成真正的hashmap,此時encoding為ht。
redis 列表是簡單的字串列表,按照插入順序排序。你可以新增乙個元素到列表的頭部(左邊)或者尾部(右邊)。
業務場景:關注列表,粉絲列表。或者是一些常見的城市列表等
實現方式:redis list的實現為乙個雙向鍊錶,即可以支援反向查詢和遍歷,更方便操作,不過帶來了部分額外的記憶體開銷,redis內部的很多實現,包括傳送緩衝佇列等也都是用的這個資料結構。
命令:lpush,rpush,lpop,rpop,lrange等。
redis的set是string型別的無序集合。
集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是o(1)。
新增乙個string元素到,key對應的set集合中,成功返回1,如果元素已經在集合中返回0,key對應的set不存在返回錯誤。
業務場景:
set對外提供的功能與list類似,當需要儲存乙個列表資料,又不希望出現重複資料時,可選用set。比如共同好友等。
實現方式:
set 的內部實現是乙個 value永遠為null的hashmap,實際就是通過計算hash的方式來快速排重的,這也是set能提供判斷乙個成員是否在集合內的原因。
命令:zadd,zrange,zrem,zcard等
redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
zset的成員是唯一的,但分數(score)卻可以重複。
實現方式:edis sorted set的內部使用hashmap和跳躍表(skiplist)來保證資料的儲存和有序,hashmap裡放的是成員到score的對映,而跳躍表裡存放的是所有的成員,排序依據是hashmap裡存的score,使用跳躍表的結構可以獲得比較高的查詢效率,並且在實現上比較簡單。
Redis資料型別及使用場景
wqtech閱讀 2936 摘要 redis相比其它的kv資料庫,其一大特點是支援豐富的資料型別.它一共支援5種資料型別,下面逐一介紹這5種資料型別及其使用場景.redis相比其它的kv資料庫,其一大特點是支援豐富的資料型別。它一共支援5種資料型別,下面逐一介紹這5種資料型別及其使用場景和內部實現方...
Redis資料型別及使用場景
redis支援常見的資料型別,現在是被廣泛用在各大公司的內部,它可以做的東西很多,不過要先了解下他提供的基本資料型別與常見操作。接下來一起看看把。最基礎的資料型別,首先key是字串型別,其它的資料型別都是在字串的基礎之上構建的。set命令 批量設定和獲取命令,在操作多個key的時候可以節省網路傳輸時...
Redis資料型別及使用場景
redis 除了這 5 種資料型別之外,還有 bitmaps hyperloglogs streams 等。這是最簡單的型別,就是普通的 set 和 get,做簡單的 kv 快取。set college szu 複製 這個是類似 map 的一種結構,這個一般就是可以將結構化的資料,比如乙個物件 前提...