日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis 三种特殊数据类型

發(fā)布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis 三种特殊数据类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

三種特性數(shù)據(jù)類型

geospatial

定位,附近的人,打車距離計算。

redis的geo在redis3.2版本就推出了。可推算地理位置的信息,兩地之間的距離,方圓幾里的人。

6個命令。

GEOADD GEODIST GEOHASH GEOPOS GEORADIUS GEORADIUSBYMEMBERhttps://redis.io/commands/geoadd # geoadd china:city 經(jīng)度 緯度 城市 # 可通過程序?qū)⑿畔⒆x取到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 獲取城市所在的經(jīng)緯度 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# 需求:我附近的人?通過半徑來查詢。 # 獲取指定數(shù)量的人。 # georaduis 以給定的經(jīng)緯度為中心,找出某一半徑內(nèi)的元素 georadius china:city 110 30 1000 km # 當(dāng)前經(jīng)度110,維度30 獲取半徑1000km的城市georadius china:city 110 30 500 km withdis # 獲取到城市,距離georadius china:city 110 30 500 km withcoord # 獲取到城市,經(jīng)緯度georadius china:city 110 30 500 kim withdis withcoord count 1 # 獲取500千米內(nèi)一個城市,經(jīng)緯度,距離,# georadiusBymember 根據(jù)某個城市找到附近的城市 georadiusbymember china:city beijing 1000km # 找出北京附近1000km的城市# geohash 返回一個或者多個位置元素的geohash表示 # 返回11個字符的geohash字符串 geohash china:city bejing shanghai# geo的底層實現(xiàn)原理就是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 數(shù)據(jù)結(jié)構(gòu) redis hyperloglog 基數(shù)統(tǒng)計的算法 (不重復(fù)) 優(yōu)點:占用內(nèi)存是固定的。2^64不同的元素的基數(shù),只需要12kb內(nèi)存。 網(wǎng)頁的uv(一個人訪問一個網(wǎng)站多次,但是還是算作一個人。)傳統(tǒng)的方式,set保存用戶的id,然后就可以統(tǒng)計set中的元素數(shù)量作為標(biāo)準(zhǔn)判斷。 set的確定,用戶id太長,太多。是為了計數(shù)。 測試使用 # 一組數(shù) pfadd mykey a b c d e f g h i j # 獲取不重復(fù)長度 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的合并后不重復(fù)字符的長度 pfcount mykey3# demo# 第一組數(shù) 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 # 第二組數(shù) 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 # 合成一組基數(shù) 127.0.0.1:6379[1]> pfmerge key3 key1 key2 OK 127.0.0.1:6379[1]> pfcount key3 (integer) 11

如果允許容錯,可使用hyperloglog來進(jìn)行網(wǎng)站訪問統(tǒng)計。

不容錯,使用set,或者自定義。

bitmap

# 位存儲 # 統(tǒng)計疫情的感染人數(shù) 01 01 # 統(tǒng)計用戶信息 活躍,不活躍。登錄,未登錄。打卡。兩個狀態(tài)的都可使用bitMaps. # 位圖,也是一種數(shù)據(jù)庫的。都是操作二進(jìn)制位來進(jìn)行記錄。就只有0和1兩個狀態(tài)。# setbit sign offset value 設(shè)置值 # getbit sign offset 獲取值 # bitcount sign (start, end) 統(tǒng)計值為1的# 打開demo,假設(shè)已經(jīng)打開的為1,位打開的為0# 設(shè)置周一到周天打開信息 0未打開,1已經(jīng)打開 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 # 統(tǒng)計打卡的數(shù)量1 127.0.0.1:6379[1]> bitcount sign (integer) 4 127.0.0.1:6379[1]> bitcount sign 0 6 (integer) 4

總結(jié)

以上是生活随笔為你收集整理的redis 三种特殊数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。