Redis HyperLogLog Redis 在 2.8.9 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。 在 Redis
布隆过滤器 BloomFilter是一种空间效率的概率型数据结构,由Burton Howard Bloom 1970年提出的。通常用来判断一个元素是否在集合中。具有极高的空间效率,但是会带来假阳性(False positive)的错误。 False positive && Fal
Redis缓存穿透:查询Redis,为了防止他人恶意使用不存在的key访问redis,造成大批量的出现缓存穿透现象(直接查询数据库,导致数据库扛不住) Maven依赖 添加 Redis & BloomFilter 的核心依赖包: <!--使用Redis--> <depen
原理 布隆过滤器的巨大用处就是,能够迅速判断一个元素是否在一个集合中。因此他有如下三个使用场景: 网页爬虫对URL的去重,避免爬取相同的URL地址 反垃圾邮件,从数十亿个垃圾邮件列表中判断某邮箱是否垃圾邮箱(同理,垃圾短信) 缓存穿透,将所有可能存在的数据缓存放到布隆过滤器中,当黑客访问不存在的缓
Redis概述 Redis是一个开源的Key-Value存储系统,其中Value支持string、list、set、hash、zset五种数据结构,这些数据都支持push/pop、add/remove、取交集并集、排序等丰富的操作,并且这些操作都是原子性的。 与同为NoSQL型缓存数据库的memc
概述 本文将模拟生产环境,构造大量测试数据,并完成高效安全的数据导入、数据导出、数据删除。 众所周知,Redis是单线程的,一旦一个命令发生长时间阻塞,极易导致大量命令阻塞,从而导致生产环境雪崩,所以本文着重强调 【生产环境、安全高效】 操作。 Redis生产环境安全高效导入大量数据 使用shel
背景 公司某业务使用的Redis集群是自建的,前段时间计划将自建Redis集群迁移到购买的阿里云集群。 老集群共有 350W key,占用内存 8.8 G,DTS迁移前分析发现有近两百万的key无需迁移,于是提前删除了这两百万key。 删除key后发现redis内存竟然几乎无变化,350W key删
业务背景 最近,因为增加了一些风控措施,导致新人拼团订单接口的 QPS、TPS 下降了约 5%~10%,这还了得! 首先,快速解释一下【新人拼团】活动: 业务简介 :顾名思义,新人拼团是由新用户发起的拼团,如果拼团成功,系统会自动奖励新用户一张满 15.1 元减 15 的平台优惠券。这相当于是无门
前段时间,在网上看到一道面试题:如何使用Redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。 觉得很有意思,就仔细想了下。并做了一系列实验,自己模拟了下。还是有点收获的,现整理下来。和大家一起分享。 问题分析 Redis是一个内存数据库,采用单线程和事件驱动的机制来处
Redis 虽好,却是个吃内存兽,因此在写入 Redis 数据时,应该避免写入无用的数据,浪费内存 如果我们要分析哪些 key 占用了大量的存储空间,就需要有工具辅助对所有的 value 所点空间进行排序,如此才能有的放矢进行优化 redis-rdb-tools 可以将所有 key 对应的 valu
作为一台服务器来说,内存并不是无限的,所以总会存在内存耗尽的情况,那么当 Redis 服务器的内存耗尽后,如果继续执行请求命令,Redis 会如何处理呢? 设置有效期 使用Redis 服务时,很多情况下某些键值对只会在特定的时间内有效,为了防止这种类型的数据一直占有内存,我们可以给键值对设置有效期。
其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问。 缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000
我经常听到很多人讨论,关于「把 Redis 当作队列来用是否合适」的问题。 有些人表示赞成,他们认为 Redis 很轻量,用作队列很方便。 也些人则反对,认为 Redis 会「丢」数据,最好还是用「专业」的队列中间件更稳妥。 究竟哪种方案更好呢? 这篇文章,我就和你聊一聊把 Redis 当作队列,究
上文《玩转Redis-HyperLogLog统计微博日活月活》介绍了牛逼哄哄的HyperLogLog,传入元素数量或体积非常大时,HLL所需空间固定且很小。12kb内存可计算接近 2^64 个不同元素的基数。如此厉害,怎能不继续深入探索呢? PS:看完这篇文章,你会发现HyperLogLog能统计的
名词解释 DAU(Daily Active User)日活跃用户数量 常用于反映网站、互联网应用或网络游戏的运营情况。DAU通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户) 月活跃用户数量(Monthly Active User,MAU) 月活跃用户数量通常统计一个月