Bootstrap

《Redis 核心技术与实战》学习笔记 07

学习极客时间《Redis 核心技术与实战》专栏过程中的一些学习笔记,部分已经作为留言发布,但是留言太多,排在后面的一般很难被大家看到,所以集中发布在这里,欢迎讨论。

题图来自极客时间《Redis 核心技术与实战》专栏

12 | 有一亿个keys要统计,应该用哪种集合?      

作为吃瓜群众,课后题没法回答了,因为没有遇到过其他需要用到 Redis 的统计场景。感觉上,Redis 适合哪种需要实时统计的场景,如果是晚上统计,第二天出结果,甚至是月度或者年度统计,似乎 Redis 就不适用了。

另外,专栏设想的是“一亿个keys”,估计大部分读者也只能是看客了。当然,其中的一些思路,以及对于集中集合类型的应用,是很有启发的。

聚合统计,统计手机 App 每天新增用户数和第二天留存用户数

SUNIONSTORE user:id user:id user:id:20200803
SDIFFSTORE user:new user:id:20200804 user:id
SINTERSTORE user:id:rem user:id:20200803 user:id:20200804

课代表说,以上三个命令会在 Redis 上生成新 key,只能在主库使用;如果想在从库上操作,那么考虑 SUNION、SDIFF、SINTER 命令。

排序统计,电商网站商品评论列表

ZADD comments 1 "one"
ZADD comments 1 "uno"
ZADD comments 2 "two" 3 "three"
ZRANGEBYSCORE comments -inf +inf
ZRANGEBYSCORE comments 1 2

二值状态统计,用户签到

SETBIT uid:sign:3000:202008 2 1
GETBIT uid:sign:3000:202008 2
BITCOUNT uid:sign:3000:202008

基数统计,网页独立访客数量

PFADD page1:uv user1 user2 user3 user4 user5
PFCOUNT page1:uv

HyperLogLog is an algorithm for the count-distinct problem, approximating the number of distinct elements in a multiset.

最后记录一下课代表的提醒:

  • 集群模式多个 key 聚合计算要慎重,有可能报错或者结果错误

  • 数据量大的时候,建议把统计数据和在线业务数据拆分,单独部署

这一节课老师(作者回复)没有出现在留言里面,我很怀念他。