redis知識盤點 捌 redis新特性

2021-09-19 23:31:17 字數 1600 閱讀 5492

這個月終於有了一些時間,看了幾本書。歸。繼續更新。這次還是先分享幾個redis之前沒寫的新特性。

2.8版本引入,可用於巨量去重統計,比如統計uv。有點是需要空間很小,只有12kb;缺點是平均會有0.81%的誤差。不過當統計量級特別大的時候,hyperloglog的價效比還是很高的。

主要有三個指令:

pfadd:增加成員

pfcount:統計成員數

pfmerge:將多個pf計數值累加一起

4.0版本引入,可以在快速巨量資料裡去判斷某一成員是否存在。優點是相比其他實現方式節省空間,缺點是有一定的誤判概率。

bf.add  key  sub-key:增加成員

bf.madd  key   sub-key1  sub-key2:批量增加成員

bf.exists  key   sub-key:判斷成員是否存在

可以通過bf.reverse指令來自定義布隆過濾器引數:

key:名稱

error_rate:容錯率,預設0.01。這個值越低需要的空間越大

initial_size:預計放入的元素數量,預設100。當實際數量大於這個值後,誤判率會上公升

布隆過濾器的實現原理大概是這樣的:

向過濾器增加key的時候,會有多個hash演算法對該key計算,基於計算結果按陣列長度取模將對應陣列位置置為1。當判斷乙個key是否存在時,則同樣用多個hash演算法對該key計算,然後判斷計算結果對應陣列位置是否都為1,若是則認為該key存在。

這裡有個問題,有可能其他key計算的結果落在了同樣的陣列位置上,導致本不存在的key誤判為存在。這就是布隆過濾器誤差原因所在。也就是說,當布隆過濾器返回這個key存在時,那麼這個key可能不存在;但是如果返回這個key不存在,那麼這個key一定不存在。

在3.2版本引入。可用於實現類似附近的人的功能。

geoadd  key  longitude   latitude   subkey:增加

geoadd  key  longitude-1   latitude-1   subkey-1  longitude-2   latitude-2   subkey-2:批量增加

geodist  key  subkey1   subkey2  km:計算距離

geopos  key  subkey:獲取元素位置

geohash   key    subkey:獲取元素hash值

georadiusbymember    key   subkey      km   count   :獲取元素length千公尺內最近的num個元素,注意元素本身也返回,如果加上withcoord返回元素經緯度,withdist返回距離,withhash返回hash值

georadius   key   longitude   latitude       km   count   :獲取座標length千公尺內最近的num個元素,同樣可使用上面三個引數

使用的是業界比較通用的geohash演算法。就是將二維的經緯度對映到一維的整數,這樣大家都相當於在一條線上,只要比較點之間的距離即可。redis是使用zset儲存元素,key為元素的健值,value是乙個52位的整數。

Redis知識總結

什麼是關係型的資料庫 以關係模型來組織資料的資料庫,以行與列的方式來儲存資料。什麼是nosql資料庫 泛指非關係型資料庫,以鍵值對的方式來儲存資料,大大增加了業務擴充套件能力 常用的nosql資料庫 1 memcached 2 redis 3 mongodb 什麼是redis redis是乙個鍵值對...

redis知識總結

本人小白乙個,不能保證部落格中內容都準確,如果部落格中有錯誤的地方,望各位多多指教,請指正。歡迎找我一起討論 redis 是用 c語言編寫的乙個非關係型資料庫 redis可以用來做快取,分布式鎖 redis適合儲存 高頻的熱點資料 廣告 使用者經常訪問的資料 redis是基於記憶體的,絕大部分請求都...

redis 相關知識

mysql關係型資料庫資料儲存的問題 1,效能瓶頸 磁碟io效能低下 2,擴充套件瓶頸 資料關係複雜,擴充套件性差,不利於搭建集群維護 3,資料增多會讓查詢速度變慢 所以為了減少磁碟io次數,和資料之間的關係,就有了乙個新的概念 nosql nosql not only sql 非關係型資料庫 基於...