2.1 geospatial 地理位置
geospatial 地理位置 這個(gè)功能可以推算地理位置的信息,兩地之間的距離,方圓幾里的人
geoadd [key] [經(jīng)度] [維度] [地點(diǎn)名稱] 添加位置
注意經(jīng)緯度不可以超過取值范圍 ,否則會報(bào)錯(cuò)
geopos [key] [value] 查詢value的經(jīng)緯度
geodist [key] [pos1] [pos2] 查詢pos1和pos2之間的直線距離,默認(rèn)距離是米,可以改成km,mi,ft
georadius 以給定的經(jīng)緯度為中心,找出某一半徑以內(nèi)的元素
georadius [key] [longitude] [latitude]
[radius] [m/km/ft/mi] [withcoord 可選] [withdist可選] [count 數(shù)字 可選] [asc/desc可選]
以某個(gè)經(jīng)度緯度為中心,查找radius范圍內(nèi)的元素,同時(shí)輸出坐標(biāo)、顯示到中心的直線距離,篩選出幾個(gè)結(jié)果,升序或者降序
georadiusbymember [key] [member] [radius]
[m/km/ft/mi] [withcoord 可選] [withdist可選] [count 數(shù)字 可選] [asc/desc可選]
以某個(gè)指定元素為中心,查找radius范圍內(nèi)的元素,同時(shí)輸出坐標(biāo)、顯示到中心的直線距離,篩選出幾個(gè)結(jié)果,升序或者降序
geohash 返回一個(gè)或多個(gè)位置元素的11個(gè)字符的Geohash字符串
geohash [key] [member]
geo的底層實(shí)現(xiàn)原理就是zset!我們可以使用zset命令來操作geo
zrange 查看地圖中全部的元素
zrem 移除地圖中的某個(gè)元素
2.2 hyperloglog基數(shù)統(tǒng)計(jì)
hyperloglog 如果允許容錯(cuò),就使用該方法。不允許容錯(cuò)就使用set
什么是基數(shù)?A{1,3,5,7,8,7} B{1,3,5,7,8} 基數(shù)(表示不重復(fù)的元素)=5,可以接受誤差
hyperloglog 基數(shù)統(tǒng)計(jì)的算法
優(yōu)點(diǎn):占用的內(nèi)存是固定的,只要12KB內(nèi)存,如果從內(nèi)存角度來比較的話,首選hyperloglog
網(wǎng)頁UV(一個(gè)人訪問一個(gè)網(wǎng)站多次,但是還是算作一個(gè)人)
傳統(tǒng)的方式,用set保存用戶id,然后就可以統(tǒng)計(jì)set中的元素?cái)?shù)量作為評判標(biāo)準(zhǔn)
這個(gè)方式如果保存大量的用戶id,就會比較麻煩,我們的目的是為了計(jì)數(shù),不是保存用戶id
0.81的錯(cuò)誤率,統(tǒng)計(jì)UV任務(wù),可以忽略不計(jì)
pfadd [key]?[element....]創(chuàng)建元素
pfcount [key] 統(tǒng)計(jì)元素的基數(shù)數(shù)量
pfmerge [destination] [src1] [src2].. 合并數(shù)據(jù)1,數(shù)據(jù)2 到目的數(shù)組中
2.3 bitmap位存儲
統(tǒng)計(jì)用戶信息,活躍/不活躍, 打卡/未打卡,等等兩個(gè)狀態(tài)的
bitmap是位圖,數(shù)據(jù)結(jié)構(gòu),都是操作二進(jìn)制位進(jìn)行記錄的,就只有0 和 1 兩個(gè)狀態(tài)
365天 = 365bit 1Byte
= 8bit 46個(gè)字節(jié)左右
setbit [key] [offset] [0/1] 設(shè)置某個(gè)元素為0/1
getbit [key] [name] 獲取某個(gè)元素的值
bitcount [key] [start] [end] 獲取某個(gè)區(qū)間為1的個(gè)數(shù),不包括start 和 end 在內(nèi)