redis有哪些資料結構?
基本的是有5種:字串string、列表list、集合set、字典hash、有序集合sortedset。
如果是redis中高階使用者,還需要加上下面幾種資料結構hyperloglog、geo、pub/sub以及redis module,像bloomfilter,redissearch,redis-ml。
(1)redis hyperloglog 是用來做基數統計的演算法。hyperloglog 的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定 的、並且是很小的。因為 hyperloglog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以 hyperloglog 不能像集合那樣,返回輸入的各個元素。
什麼是基數?
比如資料集 , 那麼這個資料集的基數集為 , 基數(不重複元素)為5。 基數估計就是在誤差可接受的範圍內,快速計算基數。
redis hyperloglog 的基本命令: pfadd 新增 / pfcount 統計/ pfmerge 將多個hyperloglog 合併成乙個hyperloglog。
(2)pub/sub發布訂閱。redis 發布訂閱(pub/sub)是一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。
redis 發布訂閱常用命令:
subscribe channel [channel ...] 訂閱給定的乙個或多個頻道的資訊。
publish channel message 將資訊傳送到指定的頻道。
psubscribe pattern [pattern ...] 訂閱乙個或多個符合給定模式的頻道。
(3)geo: redis目前已經到了3.2版本,3.2版本裡面新增的乙個功能就是對geo(地理位置)的支援。
地理位置大概提供了6個命令,分別為:
geoadd
geodist
geohash
geopos
georadius
georadiusbymember
(4)bloomfilter 去重。原理:
簡單的說就是:通過將乙個key的hash值分布到乙個大的bit陣列上面,判斷乙個key是否存在時只需判斷該的hash對應的bit位是否都是1,如果全是1則表示存在,否則不存在。
優點:效能很高主要在hash演算法上面,空間占用小,能夠極大的縮小儲存空間。
缺點:存在誤判。既對應的bit位剛好被其他的key置為1了。
(5)redissearch。redis-search4j是一款基於redis的搜尋元件。
(6) redis-ml 模組。
Redis資料結構
字典 dict 是redis裡最核心的資料結構,正如其全稱remote dictionary service所說,redis其實就是乙個字典服務,字典以key value的形式呈現給使用者,key是簡單的字串,而value可以是各種資料結構,比如字串 string 鍊錶 list 集合 set 排序...
Redis 資料結構
最近接觸到了redis的使用,借這個機會深入的了解一下redis的實現和設計原理。下面先介紹一下redis底層所用到的資料結構。redis的實現幾乎都是基於下面的幾個資料結構之上的。struct sdshdr struct listnode struct list struct dictentry ...
redis 資料結構
今天學習了redis的列表型別 lpush ltrim lrange lpush mylist content ltrim 0,99 lrange 0,1 lrange 兩個引數 分別代表第乙個元素和最後乙個元素 redis的列表型別,可以用來做訊息佇列 使用乙個程序 用lpush命名作為生產者 使...