redis 学习(14)-- HyperLogLog
HyperLogLog
什么是 HyperLogLog
HyperLogLog 是基于 HyperLogLog 算法的一种数据结构,该算法可以在极小空间完成独立数量统计。
在本质上还是字符串类型。
重要 API
命令 | 含义 |
---|---|
pfadd key element1 [element2...] | 向HyperLogLog中添加元素 |
pfcount key1 [key2...] | 计算HyperLogLog的独立总数 |
pfmerge destKey key1 [key2...] | 合并多个hyperLogLog到destKey中 |
演示
内存消耗
以百万独立用户为例
elements = ""
key = "2019_06_02:unique:ids"
for i in `seq 1 1000000`
do
elements = "${elements} uuid-"${i}
if [[$((i%1000)) == 0 ]]
then
redis-cli pfadd ${key}${elements}
elements = ""
fi
done
内存消耗 | |
---|---|
1 天 | 15 KB |
1 个月 | 450 KB |
1 年 | 15KB * 365 = 5 MB |
可以看到内存消耗是非常低的,比我们之前学过的 BitMap 还要低得多。
使用经验
Q:既然 HyperLogLog 那么好,那么是不是以后用这个来存储数据就行了呢?
A:这里要考虑两个因素:
- hyperloglog 的错误率为:0.81%,存储的数据不能百分百准确。
- hyperloglog 不能取出单条数据。api 中也没有相关操作。
如果你没有这两个方面的顾虑,那么用 HyperLogLog 来存储大规模数据,还是非常不错的。
redis 学习(14)-- HyperLogLog的更多相关文章
- Python操作redis学习系列之(集合)set,redis set详解 (六)
# -*- coding: utf-8 -*- import redis r = redis.Redis(host=") 1. Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合 ...
- redis学习 (key)键,Python操作redis 键 (二)
# -*- coding: utf-8 -*- import redis #这个redis 连接不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. delete ...
- Redis学习手册(目录)
为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...
- Redis——学习之路三(初识redis config配置)
我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
- Redis学习手册——转载
转载出处:http://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html 为什么自己当初要选择Redis作为数据存储解决方案中 ...
- (转)redis 学习笔记(1)-编译、启动、停止
redis 学习笔记(1)-编译.启动.停止 一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...
- Redis学习手册
为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...
- Redis学习笔记(2)——Redis的下载安装部署
一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...
- redis学习-集合set常用命令
redis学习-集合set常用命令 1.sadd:添加一个元素到集合中(集合中的元素无序的并且唯一) 2.smembers:查看集合中所有的元素(上图事例) 3.srem:删除结合中指定的元素 4 ...
- Spring Data Redis学习
本文是从为知笔记上复制过来的,懒得调整格式了,为知笔记版本是带格式的,内容也比这里全.点这里 为知笔记版本 Spring Data Redis 学习 Version 1.8.4.Release 前言 ...
随机推荐
- [洛谷P3942]:将军令(贪心)
题目传送门 题目背景 历史/落在/赢家/之手至少/我们/拥有/传说谁说/败者/无法/不朽拳头/只能/让人/低头念头/却能/让人/抬头抬头/去看/去爱/去追你心中的梦 题目描述 又想起了四月.如果不是省 ...
- 成员函数定义后面加 const 的意义
我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值.如果把不改变数据成员的函数都加上const关键字 ...
- Windows下设置U盘自动复制文件到本地
一.打开记事本,把下面的代码复制进去 set fso=createobject("scripting.filesystemobject") set ws=createobject( ...
- 关于colab的一些技巧
1.指定工作文件夹(运行可以相对路径!) # 指定当前的工作文件夹 import os # 此处为google drive中的文件路径,drive为之前指定的工作根目录,要加上 os.chdir(&q ...
- python:BeautifulSoup学习
上一篇说到用BeautifulSoup解析源代码,下面我们就来实战一下: from bs4 import BeautifulSoup html = urllib.request.urlopen('ht ...
- C代码输出日志
模板代码,在实际开发中可以使用: Android.mk文件增加(放到 include $(CLEAR_VARS)下面) LOCAL_LDLIBS += -llog C代码中增加 #include &l ...
- Mysql密码忘记,修改密码方法
1.set password for ‘root’@’localhost’ = password(‘czllss’); -- czllss为新密码
- ServletRequest与ServletResponse
http://lavasoft.blog.51cto.com/62575/275586/ 请求和相应是Web交互最基本的模式,在Servlet中,分别用HttpServletRequest与HttpS ...
- Xcode真机报错clang: error: linker command failed with exit code 1 (use -v to see invocation)
出现这种错误,如下图所示,搜索bitcode,置为NO即可.
- Nginx实现负载均衡的方式有哪几种呢?
什么是负载均衡 当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃.为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力. 我们 ...