这才是 Redis 分布式锁的正确实现方式,网上很多都错了!!!

5 月 19 日
阅读 11 分钟
870
在单机部署的时候,我们可以使用 Java 中提供的 JUC 锁机制避免多线程同时操作一个共享变量产生的安全问题。 JUC 锁机制只能保证同一个 JVM 进程中的同一时刻只有一个线程操作共享资源。
封面图

Redis 7.0 源码环境搭建与阅读技巧

2023-10-26
阅读 4 分钟
659
我遵守 BSD 协议,由意大利人 Salvatore Sanfilippo 使用 C 语言编写的一个基于内存实现的键值型非关系(NoSQL)数据库。
封面图

redis.conf 7.0 配置和原理全解,生产王者必备

2023-05-30
阅读 22 分钟
4.7k
我是 Redis, 当程序员用指令 ./redis-server /path/to/redis.conf 把我启动的时候,第一个参数必须是redis.conf 文件的路径。
封面图

Redis 发布订阅模式:原理拆解并实现一个消息队列

2023-01-12
阅读 7 分钟
6.5k
“65 哥,如果你交了个漂亮小姐姐做女朋友,你会通过什么方式将这个消息广而告之给你的微信好友?““那不得拍点女朋友的美照 + 亲密照弄一个九宫格图文消息在朋友圈发布大肆宣传,暴击单身狗。”像这种 65 哥通过朋友圈发布消息,关注 65 哥的好友能收到通知的场景叫做「发布/订阅机制」。今天不聊小姐姐,深入了解下 「Red...
封面图

Redis的数据被删除,占用内存咋还那么大?

2022-12-09
阅读 4 分钟
2.1k
通过 CONFIG SET maxmemory 100mb 或者在 redis.conf 配置文件设置 maxmemory 100mb Redis 内存占用限制。当达到内存最大值值,会触发内存淘汰策略删除数据。
封面图

Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵

2022-10-25
阅读 3 分钟
3.4k
Redis Cluster 集群相关配置,使用集群方式的你必须重视和知晓。别嘴上原理说的头头是道,而集群有哪些配置?如何配置让集群快到飞起,实现真正的高可用却一头雾水,通过下面这些配置详解也让你对集群原理更加深刻。
封面图

Redis进阶篇:发布订阅模式原理与运用

2022-08-17
阅读 7 分钟
6.6k
“65 哥,如果你交了个漂亮小姐姐做女朋友,你会通过什么方式将这个消息广而告之给你的微信好友?““那不得拍点女朋友的美照 + 亲密照弄一个九宫格图文消息在朋友圈发布大肆宣传,暴击单身狗。”
封面图

Redis 内存优化神技,小内存保存大数据

2022-07-13
阅读 9 分钟
6.4k
大家好,我是「码哥」,大家可以叫我靓仔。这次码哥跟大家分享一些优化神技,当你面试或者工作中你遇到如下问题,那就使出今天学到的绝招,一招定乾坤!如何用更少的内存保存更多的数据?我们应该从 Redis 是如何保存数据的原理展开,分析键值对的存储结构和原理。从而继续延展出每种数据类型底层的数据结构,针对不同场...
封面图

掘地三尺搞定 Redis 与 MySQL 数据一致性问题

2022-06-17
阅读 8 分钟
10.6k
Redis 拥有高性能的数据读写功能,被我们广泛用在缓存场景,一是能提高业务系统的性能,二是为数据库抵挡了高并发的流量请求,点我 -> 解密 Redis 为什么这么快的秘密。把 Redis 作为缓存组件,需要防止出现以下的一些问题,否则可能会造成生产事故。Redis 缓存满了怎么办?缓存穿透、缓存击穿、缓存雪崩如何解决?Re...
封面图

Redis 的数据过期了就会马上删除么?

2022-05-16
阅读 2 分钟
3.4k
码哥,当 key 达到过期时间,Redis 就会马上删除么?先说结论,并不会立马删除,Redis 有两种删除过期数据的策略:定期选取部分数据删除;惰性删除;该命令在 Redis 2.4 版本,过期时间并不是很精确,它可能在零到一秒之间。从 Redis 2.6 开始,过期错误为 0 到 1 毫秒。EXPIRE key seconds [ NX | XX | GT | LT] 指令可...
封面图

Redis 为何使用近似 LRU 算法淘汰数据,而不是真实 LRU?

2022-05-10
阅读 5 分钟
7.2k
在《Redis 数据缓存满了怎么办?》我们知道 Redis 缓存满了之后能通过淘汰策略删除数据腾出空间给新数据。淘汰策略如下所示:设置过期时间的 keyvolatile-ttl、volatile-random、volatile-lru、volatile-lfu 这四种策略淘汰的数据范围是设置了过期时间的数据。所有的 keyallkeys-lru、allkeys-random、allkeys-lfu 这三...
封面图

Redis 内存满了怎么办?这样设置才正确!

2022-04-24
阅读 2 分钟
7.2k
上回在《Redis 数据过期了会被立马删除么?》说到如果过期的数据太多,定时删除无法删除完全(每次删除完过期的 key 还是超过 25%),同时这些 key 再也不会被客户端请求,就无法走惰性删除,内存被打满会怎样?
封面图

Redis HyperLogLog 是什么?这些场景使用它,让我枪出如龙,一笑破苍穹

2022-04-13
阅读 7 分钟
6.8k
在移动互联网的业务场景中,数据量很大,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时对这个数据集合做统计。比如:统计一个 APP 的日活、月活数;统计一个页面的每天被多少个不同账户访问量(Unique Visitor,UV));统计用户每天搜索不同词条的个数;统计注册 IP 数。通常情况下,我们面临的用户数量...
封面图

硬核 | Redis 布隆(Bloom Filter)过滤器原理与实战

2022-04-11
阅读 7 分钟
5.4k
在Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?中我们说到可以使用布隆过滤器避免「缓存穿透」。码哥,布隆过滤器还能在哪些场景使用呀?比如我们使用「码哥跳动」开发的「明日头条」APP 看新闻,如何做到每次推荐给该用户的内容不会重复,过滤已经看过的内容呢?你会说我们只要记录了每个用户看过的历史记录...
封面图

Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?

2022-03-22
阅读 4 分钟
9k
用 Redis 作为缓存系统正好可以弥补 DB 的不足,「码哥」在自己的 MacBook Pro 2019 上执行 Redis 性能测试如下:
封面图

别再用 Redis List 实现消息队列了,Stream 专为队列而生

2022-03-03
阅读 6 分钟
10.1k
上回说到使用 Redis 的 List 实现消息队列有很多局限性,比如:没有良好的 ACK 机制;没有 ConsumerGroup 消费组概念;消息堆积。List 是线性结构,想要查询指定数据需要遍历整个列表;Stream 是 Redis 5.0 引入的一种专门为消息队列设计的数据类型,Stream 是一个包含 0 个或者多个元素的有序队列,这些元素根据 ID 的...
封面图

Redis 忽然变慢了如何排查并解决?

2022-02-23
阅读 8 分钟
12.8k
Redis 通常是我们业务系统中一个重要的组件,比如:缓存、账号登录信息、排行榜等。一旦 Redis 请求延迟增加,可能就会导致业务系统“雪崩”。我在单身红娘婚恋类型互联网公司工作,在双十一推出下单就送女朋友的活动。谁曾想,凌晨 12 点之后,用户量暴增,出现了一个技术故障,用户无法下单,当时老大火冒三丈!经过查找...
封面图

Redis 使用 List 实现消息队列能保证消息可靠么?

2022-02-10
阅读 5 分钟
8.8k
分布式系统中必备的一个中间件就是消息队列,通过消息队列我们能对服务间进行异步解耦、流量消峰、实现最终一致性。目前市面上已经有 RabbitMQ、RochetMQ、ActiveMQ、Kafka等,有人会问:“Redis 适合做消息队列么?”在回答这个问题之前,我们先从本质思考:消息队列提供了什么特性?Redis 如何实现消息队列?是否满足存...
封面图

Redis 事务支持 ACID 么?

2022-01-14
阅读 5 分钟
4.6k
腾讯面试官:「数据库事务机制了解么?」「内心独白:小意思,不就 ACID 嘛,转眼一想,我面试的可是技术专家,不会这么简单的问题吧」程许远:「balabala…… 极其自信且从容淡定的说了一通。」腾讯面试官:「Redis 的事务了解么?它的事务机制能实现 ACID 属性么?」程许远:「挠头,这个……我知道 lua 脚本能实现事务…」...
封面图

Redis 分布式锁的正确实现原理演化历程与 Redission 实战总结

2021-12-24
阅读 13 分钟
15.5k
Redis 分布式锁使用 SET 指令就可以实现了么?在分布式领域 CAP 理论一直存在。分布式锁的门道可没那么简单,我们在网上看到的分布式锁方案可能是有问题的。「码哥」一步步带你深入分布式锁是如何一步步完善,在高并发生产环境中如何正确使用分布式锁。在进入正文之前,我们先带着问题去思考:什么时候需要分布式锁?加...
封面图

Redis 很屌,不懂使用规范就糟蹋了

2021-12-02
阅读 5 分钟
2.9k
这可能是最中肯的 Redis 使用规范了码哥,昨天我被公司 Leader 批评了。我在单身红娘婚恋类型互联网公司工作,在双十一推出下单就送女朋友的活动。谁曾想,凌晨 12 点之后,用户量暴增,出现了一个技术故障,用户无法下单,当时老大火冒三丈!经过查找发现 Redis 报 Could not get a resource from the pool。获取不到连...
封面图

Redis 6.0 新特性篇:深度剖析客户端缓存(Client side caching)原理与性能

2021-11-08
阅读 4 分钟
8.5k
码老湿,上次你讲解了 Redis 多线程模型,这次我想知道客户端缓存(Client side caching)技术,他的英文名叫: Redis server-assisted client side caching ,可以说说么?我不是嫖客,看完我会点赞、再看、分享的。
封面图

Redis 新特性篇:100% 掌握多线程模型

2021-09-02
阅读 3 分钟
10.6k
Redis 官方在 2020 年 5 月正式推出 6.0 版本,提供很多振奋人心的新特性,所以备受关注。码老湿,提供了啥特性呀?知道了我能加薪么?主要特性如下:多线程处理网络 IO;客户端缓存;细粒度权限控制(ACL);RESP3 协议的使用;用于复制的 RDB 文件不在有用,将立刻被删除;RDB 文件加载速度更快;其中备受关注的就是「...
封面图

Redis 实战篇:巧用数据类型实现亿级数据统计

2021-08-08
阅读 8 分钟
5.7k
在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时还要对集合中的数据进行统计排序。常见的场景如下:给一个 userId ,判断用户登陆状态;两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数;统计每天的新增与第二天的留存用户数;统计网站的对访客(Unique Visitor,UV)...
封面图

Redis 6.0 新特性:带你 100% 掌握多线程模型

2021-07-21
阅读 3 分钟
21.9k
Redis 官方在 2020 年 5 月正式推出 6.0 版本,提供很多振奋人心的新特性,所以备受关注。码老湿,提供了啥特性呀?知道了我能加薪么?主要特性如下:多线程处理网络 IO;客户端缓存;细粒度权限控制(ACL);RESP3 协议的使用;用于复制的 RDB 文件不在有用,将立刻被删除;RDB 文件加载速度更快;其中备受关注的就是「...
封面图

Redis 实战篇:GEO助我邂逅附近女神

2021-07-09
阅读 7 分钟
3k
码老湿,阅读了你的巧用数据类型实现亿级数据统计之后,我学会了如何游刃有余的使用不同的数据类型(String、Hash、List、Set、Sorted Set、HyperLogLog、Bitmap)去解决不同场景的统计问题。产品经理说他有一个 idea,为广大少男少女提供一个连接彼此的机会让处于这最美的年龄的少男少女能在每一个十二时辰里能邂逅到那...
封面图

Redis 面霸篇:高频问题横扫核心知识点

2021-06-22
阅读 10 分钟
2.7k
「码哥字节」从高频面试问题跟大家一起横扫 Redis 核心知识点,从根本上理解 Redis ,不做八股文的工具人,做扭转乾坤的大神。码哥到如今已经写了 9 篇 Redis 连载,后台有小伙伴也让我写一些关于面试的文章,于是“面霸”系列便出道了。如果大家用心读完《Redis 系列》并理解,吊打面试官根本不是事。Redis 核心篇:唯快...
封面图

Redis 实战篇:巧用 Bitmap 实现亿级数据统计

2021-06-15
阅读 4 分钟
23.8k
在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。常见的场景如下:给一个 userId ,判断用户登陆状态;显示用户某个月的签到次数和首次签到时间;两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数;通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别...
封面图

Redis 高可用篇:Cluster 集群能支持的数据量有多大?

2021-05-13
阅读 9 分钟
8.4k
目的在于掌握什么是 Cluster ?Cluster 分片原理,客户端定位数据原理、故障切换,选主,什么场景使用 Cluster,如何部署集群 …...
封面图

Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理

2021-04-02
阅读 8 分钟
9.2k
所以主从复制架构面临一个严峻问题,主库挂了,无法执行「写操作」,无法自动选择一个 Slave 切换为 Master,也就是无法故障自动切换。
封面图