redis 三种特殊数据类型
生活随笔
收集整理的這篇文章主要介紹了
redis 三种特殊数据类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
三種特性數據類型
geospatial
定位,附近的人,打車距離計算。
redis的geo在redis3.2版本就推出了??赏扑愕乩砦恢玫男畔?#xff0c;兩地之間的距離,方圓幾里的人。
6個命令。
GEOADD GEODIST GEOHASH GEOPOS GEORADIUS GEORADIUSBYMEMBERhttps://redis.io/commands/geoadd # geoadd china:city 經度 緯度 城市 # 可通過程序將信息讀取到redis中..geoadd china 116.40 39.90 beijing geoadd china:city 121.47 31.23 shanghai geoadd china:city 120.16 30.24 hangzhou# geopos 獲取城市所在的經緯度 getpos china:city beijing getpos china:city hangzhou beijing # geodist 獲取兩個位置之間的距離 # m 米, km 千米, mi 英里, ft 英尺geodist china:city beijing shanghai km geodist china:city beijing hangzhou km# 需求:我附近的人?通過半徑來查詢。 # 獲取指定數量的人。 # georaduis 以給定的經緯度為中心,找出某一半徑內的元素 georadius china:city 110 30 1000 km # 當前經度110,維度30 獲取半徑1000km的城市georadius china:city 110 30 500 km withdis # 獲取到城市,距離georadius china:city 110 30 500 km withcoord # 獲取到城市,經緯度georadius china:city 110 30 500 kim withdis withcoord count 1 # 獲取500千米內一個城市,經緯度,距離,# georadiusBymember 根據某個城市找到附近的城市 georadiusbymember china:city beijing 1000km # 找出北京附近1000km的城市# geohash 返回一個或者多個位置元素的geohash表示 # 返回11個字符的geohash字符串 geohash china:city bejing shanghai# geo的底層實現原理就是zset,可以使用zset來操作geo # 具體見zset操作有序集合,127.0.0.1:6379[1]> zrem china:city hangzhou (integer) 1 127.0.0.1:6379[1]> zrange china:city 0 -1 1) "shanghai" 2) "beijing"hyperloglogs
2.8.9 hyperloglog 數據結構 redis hyperloglog 基數統計的算法 (不重復) 優點:占用內存是固定的。2^64不同的元素的基數,只需要12kb內存。 網頁的uv(一個人訪問一個網站多次,但是還是算作一個人。)傳統的方式,set保存用戶的id,然后就可以統計set中的元素數量作為標準判斷。 set的確定,用戶id太長,太多。是為了計數。 測試使用 # 一組數 pfadd mykey a b c d e f g h i j # 獲取不重復長度 pfcount mykey # new pfadd mykey2 i j z x c v b n m # get len pfcount mykey2 # 合成新的key pfmerge mykey 3 mykey my key2 # 兩組key的合并后不重復字符的長度 pfcount mykey3# demo# 第一組數 127.0.0.1:6379[1]> pfadd key1 a b c d e f g (integer) 1 127.0.0.1:6379[1]> pfcount key1 (integer) 7 # 第二組數 127.0.0.1:6379[1]> pfadd key2 e f g h i j k (integer) 1 127.0.0.1:6379[1]> pfcount key2 (integer) 7 # 合成一組基數 127.0.0.1:6379[1]> pfmerge key3 key1 key2 OK 127.0.0.1:6379[1]> pfcount key3 (integer) 11如果允許容錯,可使用hyperloglog來進行網站訪問統計。
不容錯,使用set,或者自定義。
bitmap
# 位存儲 # 統計疫情的感染人數 01 01 # 統計用戶信息 活躍,不活躍。登錄,未登錄。打卡。兩個狀態的都可使用bitMaps. # 位圖,也是一種數據庫的。都是操作二進制位來進行記錄。就只有0和1兩個狀態。# setbit sign offset value 設置值 # getbit sign offset 獲取值 # bitcount sign (start, end) 統計值為1的# 打開demo,假設已經打開的為1,位打開的為0# 設置周一到周天打開信息 0未打開,1已經打開 127.0.0.1:6379[1]> setbit sign 0 1 (integer) 0 127.0.0.1:6379[1]> setbit sign 1 0 (integer) 0 127.0.0.1:6379[1]> setbit sign 2 0 (integer) 0 127.0.0.1:6379[1]> setbit sign 3 1 (integer) 0 127.0.0.1:6379[1]> setbit sign 4 1 (integer) 0 127.0.0.1:6379[1]> setbit sign 5 0 (integer) 0 127.0.0.1:6379[1]> setbit sign 6 1 (integer) 0 # 獲取打開信息 周六 127.0.0.1:6379[1]> getbit sign 5 (integer) 0 # 獲取打卡信息 周末 127.0.0.1:6379[1]> getbit sign 6 (integer) 1 # 統計打卡的數量1 127.0.0.1:6379[1]> bitcount sign (integer) 4 127.0.0.1:6379[1]> bitcount sign 0 6 (integer) 4總結
以上是生活随笔為你收集整理的redis 三种特殊数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uniapp 获取到js文件var一个变
- 下一篇: 列表页——基于Django框架的天天生鲜