這個月終於有了一些時間,看了幾本書。歸。繼續更新。這次還是先分享幾個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 非關係型資料庫 基於...