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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[Redis6]新数据类型_HyperLogLog

發布時間:2023/12/4 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Redis6]新数据类型_HyperLogLog 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HyperLogLog

簡介

在工作當中,我們經常會遇到與統計相關的功能需求,比如統計網站PV(PageView頁面訪問量),可以使用Redis的incr、incrby輕松實現。

但像UV(UniqueVisitor,獨立訪客)、獨立IP數、搜索記錄數等需要去重和計數的問題如何解決?這種求集合中不重復元素個數的問題稱為基數問題。

解決基數問題有很多種方案:

(1)數據存儲在MySQL表中,使用distinct count計算不重復個數

(2)使用Redis提供的hash、set、bitmaps等數據結構來處理

以上的方案結果精確,但隨著數據不斷增加,導致占用空間越來越大,對于非常大的數據集是不切實際的。

能否能夠降低一定的精度來平衡存儲空間?Redis推出了HyperLogLog
Redis HyperLogLog 是用來做基數統計的算法,HyperLogLog 的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定的、并且是很小的。

在 Redis 里面,每個 HyperLogLog 鍵只需要花費 12 KB 內存,就可以計算接近 2^64 個不同元素的基數。這和計算基數時,元素越多耗費內存就越多的集合形成鮮明對比。

但是,因為 HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以 HyperLogLog 不能像集合那樣,返回輸入的各個元素。

什么是基數?

比如數據集 {1, 3, 5, 7, 5, 7, 8}, 那么這個數據集的基數集為 {1, 3, 5 ,7, 8}, 基數(不重復元素)為5。 基數估計就是在誤差可接受的范圍內,快速計算基數。

命令

pfadd

(1)格式
pfadd [key][element] [element …] 添加指定元素到 HyperLogLog 中


pfcount

(1)格式
pfcount[key] [key …] 計算HLL的近似基數,可以計算多個HLL,比如用HLL存儲每天的UV,計算一周的UV可以使用7天的UV合并計算即可

pfmerge

(1)格式
pfmerge [sourcekey …] 將一個或多個HLL合并后的結果存儲在另一個HLL中,比如每月活躍用戶可以使用每天的活躍用戶來合并計算可得


總結

以上是生活随笔為你收集整理的[Redis6]新数据类型_HyperLogLog的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。