Redis的資料結構

2021-08-28 02:15:22 字數 1278 閱讀 2533

一.redis有哪些資料型別?

①.字串string

②.字典hash

③.列表list

④.集合set

⑤.有序集合sortedset

⑥.hyperloglog (redis在2.8.9加入的hyperloglog結構,是用來做基數統計的演算法,其優點是在輸入元素的數量或者體積非常大的時候,計算基數所需的空間總是固定的並且很小,在redis中每個 hyperloglog 鍵只需要花費 12 kb 記憶體,就可以計算接近 2^64 個不同元素的基數.但是,因為hyperloglog只會根據輸入的資料進行計算,而不會儲存輸入的資料,所以hyperloglog不會像集合那樣返回輸入的每個元素)

什麼是基數?

比如資料集 , 那麼這個資料集的基數集為 , 基數(不重複元素)的個數是5個

⑦.geo(是redis3.2版本新增的結構,這個結構能夠將使用者提供的位置資訊記錄下來,並對這些資訊進行操作)

⑧.pub/sub(redis 通過 publish 、 subscribe 等命令實現了訂閱與發布模式, 這個功能提供兩種資訊機制, 分別是訂閱/發布到頻道和訂閱/發布到模式)

⑨.bloomfilter(bloomfilter是利用類似位圖或者位集合資料結構來儲存資料,利用位陣列來簡潔的表示乙個集合,並且能夠快速的判斷乙個元素是不是已經存在於這個集合,這種資料結構能夠利用較少的記憶體來儲存海量的資料.bloomfilter正是它的高效(使用hash)帶來了它的判斷不一定是正確的,也就是說準確率不是100%。因為再好的hash都是存在衝突的,這樣的話同乙個位置可能被多次置1。這樣再判斷的時候,有可能乙個不存在的資料就會誤判成存在。但是判斷存在的資料一定是存在的。這裡需要注意的是這裡的hash和hashmap不同,hashmap可以使用開放定址法、鏈位址法來解決衝突,因為hashmap是有key-value結構的,是可逆的,可以定位。但是hash是不可逆的,所以不能夠解決衝突。雖然bloomfilter不是100%準確,但是可以通過調節引數,使用hash函式的個數,位陣列的大小來降低失誤率。這樣調節完全可以把失誤率降低到接近於0)

⑩.redissearch(是乙個高效能的全文搜尋引擎),redis-ml(用於機器學習)等

二.分布式鎖需滿足的條件

分布式鎖一般有三種實現方式,分別是資料庫樂觀鎖,redis分不是鎖,基於zookeeper的分布式鎖.

實現分布式鎖一般要保證其可靠性,所以應該至少保證以下四個條件

①.互斥性.在任意時刻只能有乙個客戶端能持有鎖

②.不能發生死鎖.

③.具有容錯性

④.加鎖和解鎖必須是同乙個客戶端

redis內部資料結構的資料結構

redis對外的公眾的資料結構有五種string,list,set,hash,zset 編碼常量 編碼所對應的底層資料結構 redis encoding int long 型別的整數 redis encoding embstr embstr 編碼的簡單動態字串 redis encoding raw ...

Redis 的資料結構

redis是乙個先進的key value鍵值儲存資料庫,通常作為資料結構伺服器。支援strings,hashes,lists,sets,sorted sets,bitmaps 和hyperloglogs redis的字串為sds dynamic string 可以儲存任何東西,最大長度可達515兆。...

redis的資料結構

table of contents前言 準備工作 1.字串 string 操作命令 具體展示 2.字串列表 list 操作命令 具體展示 3.集合 set 鍵是唯一的,可用於共同關注,共同喜好,二度好友 操作命令 具體展示 4.有序集合 zset 操作命令 具體展示 5.雜湊 hash key va...