redis高級數據類型

reids高級數據類型是基於五種基本數據類型的,是爲了針對某些特定的業務而衍生出來的數據類型。

一、Bitmaps

bitmaps事實上並不是一種新的數據類型,而是基於字符串位操作的集合,由於字符串是二進制安全的,並且最長可支持512M,所以它們可以用來存儲2的32次方(512 * 1024 * 1024 * 8 )不同位的數據。

bitmaps的位操作分成兩組:1.固定時間的單個位操作,比如把字符串的某個位設置爲1或者0,或者獲取某個位上的值 2.對於一組位的操作,對給定的比特範圍內,統計設定值爲1的數目。

bitmaps最大的優勢在存儲數據時可以極大的節省空間,比如在一個項目中採用自增長的id來標識用戶,就可以僅用512M的內存來記錄4億用戶的信息(比如用戶是否希望收到新的通知,用1和0標識)

如:11100001  偏移量爲0-7,順序爲從右到左

getbit key offset  獲取指定key對應偏移量上的bit值 

setbit key offset value  設置指定key對應偏移量上的bit值,value只能是1或0 

bitop op destKey key1 [key2...]  對指定key按位進行交、並、非、異或操作,並將結果保存到destKey中 

op:and 交 or 並 not 非 xor 異或

bitcount key [start end]  統計指定key中1的數量 

適用場景:信息狀態統計

二、HyperLoglog

HyperLogLog 是用來做基數(去重後元素個數)統計的,運用了LogLog的算法 。

HyperLogLog 用於進行基數統計,不是集合,不保存數據,只記錄數量而不是具體數據 。

核心是基數估算算法,最終數值存在一定誤差 。誤差範圍:基數估計的結果是一個帶有 0.81% 標準錯誤的近似值

耗空間極小,每個hyperloglog key佔用了12K的內存用於標記基數

pfadd命令不是一次性分配12K內存使用,會隨着基數的增加內存逐漸增大

Pfmerge命令合併後佔用的存儲空間爲12K,無論合併之前數據量多少 

pfadd key element  添加數據

pfcount key  統計數據 

pfmerge destkey sourcekey  合併數據 

適用場景:獨立IP統計

三、GEO

GEO爲地理位置的支持。

georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]   添加座標點 

georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]   獲取座標點 

geohash key member [member ...]  計算經緯度 

適用場景:地理位置信息處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章