1970-01-01

22 优秀的基数统计算法——HyperLogLog为什么要使用 HyperLogLog?在我们实际开发的过程中,可能会遇到这样一个问题,当我们需要统计一个大型网站的独立访问次数时,该用什么的类型来统计? 如果我们使用 Redis 中的集合来统计,当它...

1970-01-01

21 游标迭代器(过滤器)——Scan一个问题引发的「血案」曾经发生过这样一件事,我们的 Redis 服务器存储了海量的数据,其中登录用户信息是以 user_token_id 的形式存储的。运营人员想要当前所有的用户登录信息,然后悲剧就发生了:因为我...

1970-01-01

23 内存淘汰机制与算法在本文开始之前,我们先要明白:在 Redis 中,过期策略和内存淘汰策略两个完全不同的概念,但很多人会把两者搞混。 首先,Redis 过期策略指的是 Redis 使用那种策略,来删除已经过期的键值对;而 Redis 内存淘汰机...

1970-01-01

24 消息队列——发布订阅模式在 Redis 中提供了专门的类型:Publisher(发布者)和 Subscriber(订阅者)来实现消息队列。 在文章开始之前,先来介绍消息队列中有几个基础概念,以便大家更好的理解本文的内容。 首先,发布消息的叫做发...

1970-01-01

25 消息队列的其他实现方式在 Redis 5.0 之前消息队列的实现方式有很多种,比较常见的除了我们上文介绍的发布订阅模式,还有两种:List 和 ZSet 的实现方式。 List 和 ZSet 的方式解决了发布订阅模式不能持久化的问题,但这两种方...

1970-01-01

26 消息队列终极解决方案——Stream(上)在 Redis 5.0 Stream 没出来之前,消息队列的实现方式都有着各自的缺陷,例如: 发布订阅模式 PubSub,不能持久化也就无法可靠的保存消息,并且对于离线重连的客户端不能读取历史消息的缺...

1970-01-01

27 消息队列终极解决方案——Stream(下)在开始使用消息分组之前,我们必须手动创建分组才行,以下是几个和 Stream 分组有关的命令,我们先来学习一下它的使用。 消息分组命令创建消费者群组127.0.0.1:6379> xgroup c...

1970-01-01

28 实战:分布式锁详解与代码什么是锁?锁是一种常用的并发控制机制,用于保证一项资源在任何时候只能被一个线程使用,如果其他线程也要使用同样的资源,必须排队等待上一个线程使用完。 锁的示意图,如下所示: 什么是分布式锁?上面说的锁指的是程序级别的锁,例...

1970-01-01

19 Redis 管道技术——Pipeline管道技术(Pipeline)是客户端提供的一种批处理技术,用于一次处理多个 Redis 命令,从而提高整个交互的性能。 通常情况下 Redis 是单行执行的,客户端先向服务器发送请求,服务端接收并处理请求...

1970-01-01

18 Redis 过期策略与源码分析在 Redis 中我们可以给一些元素设置过期时间,那当它过期之后 Redis 是如何处理这些过期键呢? 过期键执行流程Redis 之所以能知道那些键值过期,是因为在 Redis 中维护了一个字典,存储了所有设置了过...

15678966