Redis 集合统计(HyperLogLog)】的更多相关文章

统计功能是一类极为常见的需求,比如下面这个场景: 为了决定某个功能是否在下个迭代版本中保留,产品会要求统计页面在上新前后的 UV 作为决策依据. 简单来说就是统计一天内,某个页面的访问用户量,如果相同的用户再次访问,也只算记为一次访问. 下面我们将从这个场景出发,讨论如何选择的合适的 Redis 数据结构实现统计功能. Redis与统计 聚合统计 要完成这个统计任务,最直观的方式是使用一个SET保存页面在某天的访问用户 ID,然后通过对集合求差SDIFF和求交SINTER完成统计: # 2020…
前提 未来一段时间开发的项目或者需求会大量使用到Redis,趁着这段时间业务并不太繁忙,抽点时间预习和复习Redis的相关内容.刚好看到博客下面的UV和PV统计,想到了最近看书里面提到的HyperLogLog数据类型,于是花点时间分析一下它的使用方式和使用场景(暂时不探究HyperLogLog的实现原理).Redis中HyperLogLog数据类型是Redid 2.8.9引入的,使用的时候确保Redis版本>= 2.8.9. HyperLogLog简介 基数计数(cardinality coun…
Redis集合的常用操作指令 Sets常用操作指令 SADD 将指定的元素添加到集合.如果集合中存在该元素,则忽略. 如果集合不存在,会先创建一个集合然后在添加元素. 127.0.0.1:6379> SADD myset name age city (integer) 3 127.0.0.1:6379> SADD myset name (integer) 0 SMEMBERS # 查看集合 127.0.0.1:6379> SMEMBERS myset 1) "name"…
  Redis的Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1). 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员). 实例 redis 127.0.0.1:6379> SADD w3ckey redis (integer) 1 redis 127.0.0.1:6379> SADD w3ckey mongodb (intege…
14. Redis配置统计字典14.1 info系统状态说明14.1.1 命令说明14.1.2 详细说明14.2 standalone配置说明和分析14.2.1 总体配置14.2.2 最大内存及策略14.2.3 AOF相关配置14.2.4 RDB相关配置14.2.5 慢查询配置14.2.6 数据结构优化配置14.2.7 复制相关配置14.2.8 客户端相关配置14.2.9 安全相关配置14.3 Sentinel配置说明和分析14.4 Cluster配置说明和分析…
Redis 集合(Set) Redis 的 Set 是 String 类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1). 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员). 实例 redis 127.0.0.1:6379> SADD runoobkey redis (integer) 1 redis 127.0.0.1:6379> SADD ru…
本章将对Redis的系统状态信息(info命令结果)和Redis的所有配置(包括Standalone.Sentinel.Cluster三种模式)做一个全面的梳理,希望本章能够成为Redis配置统计字典,协助大家分析和解决日常开发和运维中遇到的问题,主要内容如下: □ info系统状态说明. □ Sentinel配置说明. □ Cluster配置说明. 1.info系统状态说明 1.1 命令说明 info命令的使用方法有以下三种 : □ info: 部分Redis系统状态统计信息. □ info…
Redis集合:集合是什么,就是一堆确定的数据放在一起,数学上集合有交集.并集的概念,这个就可以用来做大数据的筛选功能. 以商品为例,假如商品有颜色和分类.价格区间等属性. 给所有统一颜色的商品放一个集合,分类.价格也同样. 那么想要一个红色的沙发,就应该是红色的商品和沙发的分类的交集,而想要既是红色又是绿色的沙发,就应该是红色与绿色的合集再与沙发取交集. 代码上,以php为例 php操作redis 连接 $redis = new Redis(); $redis->connect('127.0.…
1.HyperLoglog简介 HyperLoglog是redis新支持的两种类型中的另外一种(上一种是位图类型Bitmaps).主要适用场景是海量数据的计算.特点是速度快.占用空间小. 同样是用于计算,HyperLoglog在适用场景方面与Bitmaps方面有什么不同呢.我个人的理解是,Bitmaps更适合用于验证的大数据,比如签到, 记录某用户是不是当天进行了签到,签到了多少天的时候.也就是说,你不光需要记录数据,还需要对数据进行验证的时候使用Bitmaps. HyperLoglog则用于只…
前言 不知你大规模的用过Redis吗?还是仅仅作为缓存的工具了?在Redis中使用最多的就是集合了,举个例子,如下场景: 签到系统中,一天对应一系列的用户签到记录. 电商系统中,一个商品对应一系列的评论. 交友系统中,某个用户的一系列的好友. Redis中集合的特点无非是一个Key对应一系列的数据, 但是数据的作用往往是为了统计的,比如: 交友系统中,需要统计每天的新增好友,以及双方的共同好友. 电商系统中,需要统计评论列表中的最新评论. 签到系统中,需要统计连续一个月的签到的用户数量. 大型互…