在redis的特殊資料型別中選出三種資料型別進行分析:
geo只有六個命令:
geoadd 《經度》 《緯度》 《名稱》... #將指定的地理空間位置(經度、緯度、名稱)新增到指定的key中
#例:geoadd china:city 116.4 39.9 beijing 121.47 31.23 shanghai
geopos 《名稱》... #獲取key中指定名稱的經緯度
#例:geopos china:city beijing shanghai
geodist 《名稱1> 《名稱2> [unit] #獲取key中指定兩位置的直線距離,[unit]選項為長度單位(m公尺、km千公尺、mi英里、ft英呎)
#例:geodist china:city beijing shanghai km (預設單位為m,可不寫)
georadius 《經度》 《緯度》 《半徑》 [unit] [withcoord] [withdist] [withhash] [count count]
#獲取給定的經緯度位置為中心,方圓半徑內的key中的所有位置元素
#withcoord選項為返回位置元素的經緯度
#withdist選項為返回位置元素與中心位置的距離,長度單位與半徑單位一致
#withhash選項為位置元素經過原始 geohash 編碼的有序集合分值,一般不會用到
#[count count]選項為設定返回幾個位置元素(在查詢時依然會對key中的匹配元素全部做處理,所以大範圍內查詢依然很慢,但會減少頻寬)
georadiusbymember 《名稱》 《半徑》 [unit] [withcoord] [withdist] [withhash] [count count]
#獲取以給定位置元素為中心,方圓半徑內的key中的所有位置元素
geohash 《名稱》... #獲取由二維經緯度轉換成的11個字元的geohash字串
geo的底層是由zset(有序集合)實現的,所以可以用zset的命令來操作geo。
例如geo中沒有刪除位置元素的命令,就可以用zrem命令:
zrange china:city 0 -1 #獲取全部位置元素
zrem china:city beijing #移除位置元素
基數是集合中不重複的元素個數。
應用場景:統計乙個**的訪問人數,即乙個人多次訪問也只算一人。
傳統的方式:將訪問的使用者id儲存到set集合中,統計set集合中元素個數。
問題:當有大量的使用者訪問**時,會導致記憶體占用資源過多。
而hyperloglog存放2^64個元素只需12kb的記憶體,所以做基數統計應首選hyperloglog!
hyperloglog只有三個命令:
pfadd ... #將引數value存放到名為key的hyperloglog結構中
pfcount ... #當引數為乙個時:統計key中的近似基數;當有多個引數時:統計多個hyperloglog結構並集的近似基數
pfmerge ... #將多個hyperloglog合併到key中,合併後的key的基數接近於所有輸入hyperloglog的並集
hyperloglog允許0.81%的容錯率,如果統計功能不允許容錯的話還是老老實實地用set統計吧~
bitmaps本身並不是一種資料型別,而是乙個字串,可以對字串的二進位制位進行操作來記錄0和1兩種狀態。
應用場景可以是記錄使用者是否登入,員工是否打卡等。
命令:
setbit #設定key的下標i位置上的值為value,value值只能是0或1
getbit #獲取key的下標i位置上的值
bitcount [start end] #統計key中值為1的位元組數,[start end]選項與getrange命令類似
bitop [operation] ... #對乙個或多個儲存二進位制位的字串 key 進行位元操作,並將結果儲存到dekey上
#[operation] 選項為位元操作and(與)、or(或)、xor(異或)、not(非)。非的引數只能有乙個,其他都可多個引數
#例:key1 = 1001;key2 = 1101;
#bitop and dekey key1 key2 ==> dekey=1001
#bitop or dekey key1 key2 ==> dekey=1101
#bitop xor dekey key1 key2 ==> dekey=0010
#bitop not dekey key1 ==> dekey=0110
redis學習筆記之二 Redis的資料型別
n redis的key redis的key是字串型別,如果中間有空格或者轉義字元等,要用 1 命名建議 物件型別 物件id 物件屬性 2 多個單詞之間以 來分隔 3 key的命名,應該在可讀的情況下,盡量簡短 n redis的value支援五種型別 1 string 字串,可以儲存string in...
類 Python學習筆記(七)
2 建立例項 二 繼承 class dog 一次模擬小狗的簡單嘗試 def init self,name,age 初始化屬性name和age self.name name self.age age defsit self 模擬小狗被命令式蹲下 print self.name.title 蹲下 def...
Redis教程 七 HyperLogLog型別
redis教程 七 hyperloglog型別 redis 的鍵值可以支援資料型別 字串,列表,散表,集合,有序集合 hyperloglog 通過選用不同的資料結構,使用者可以使用 redis 解決各式各樣的問題。在2.8.9 版本新增了 hyperloglog 結構。基數 集合中不同元素的數量。比...