
Redis案例分享与源码分析
文章平均质量分 93
Redis案例分享与源码分析
魔道不误砍柴功
我亦无它,唯手熟尔!
展开
-
分布式锁就该这么写!Redisson 实战 + 多场景详解
在分布式系统中,如何安全高效地实现并发控制是一个永恒的话题。本文将深入探讨分布式锁的核心概念,并重点介绍如何通过 Redisson 这个强大的 Redis Java 客户端实现各种分布式锁模式。从基础用法到高级特性,从单机场景到复杂分布式环境,我们将通过大量代码示例和实际场景分析,带你全面掌握分布式锁的最佳实践。Redisson 是一个在 Redis 基础上实现的 Java 驻内存数据网格(In-Memory Data Grid),提供了丰富的分布式 Java 对象和服务,其中就包括完善的分布式锁实现。原创 2025-04-09 23:04:26 · 539 阅读 · 0 评论 -
从秒杀系统到分布式锁:Redis+Redisson完美方案避坑指南
本文将从实际秒杀场景出发,逐步剖析分布式锁的技术演进,详细介绍Redis分布式锁的7大坑点及Redisson的最佳实践方案。包含10+个代码示例,覆盖单机锁到分布式锁的技术跃迁过程,最后给出生产环境中的性能优化建议。技术选型建议中小规模:Redisson单节点锁高可用场景:RedLock+至少3个主节点极端一致性:考虑Zookeeper方案与Spring Cloud整合的声明式锁基于RSocket的响应式锁实现Serverless环境下的无状态锁方案。原创 2025-04-06 17:35:02 · 279 阅读 · 0 评论 -
Redis IO 多路复用如何理解?一文带你轻松搞懂!
简单来说,IO 多路复用就是:一个线程同时管理多个 IO 操作(例如网络连接)。这意味着 Redis 可以用一个线程来处理来自多个客户端的请求,而不用为每个连接创建一个新的线程或进程。这样可以减少系统资源的浪费,同时大大提高效率。Redis 之所以能在高并发下依然保持优异的性能,很大一部分功劳归功于 IO 多路复用技术。它通过一个线程就能高效处理大量的客户端请求,避免了为每个连接创建线程的高开销。对于开发者来说,理解 Redis 的 IO 多路复用有助于更好地设计高性能的系统。原创 2024-10-24 22:29:26 · 804 阅读 · 0 评论 -
解密 Redis:如何通过 IO 多路复用征服高并发挑战!
IO 多路复用本质上是一种能够通过一个线程同时监控多个文件描述符(如 socket)的技术。它允许服务器在同一时间内处理多个客户端连接,而不需要为每个连接创建一个线程或进程。简而言之,IO 多路复用通过一个机制,可以让 Redis 同时处理成千上万的客户端连接,而不会因为阻塞在某个连接上浪费时间。Redis 的 IO 多路复用机制是其在高并发环境下表现出色的关键。通过一个线程管理大量的客户端连接,Redis 实现了高效的请求处理,而底层的epoll等机制则帮助它在 Linux 系统上进一步提升性能。原创 2024-10-22 21:31:37 · 1256 阅读 · 0 评论 -
Spring 整合 Redis 的三个简单步骤
导入 jar 包是需要注意,Redis 是属于 CS 架构模式,服务端需先启动,然后客户端主动去连它。但是客户端怎么去连接服务端呢?这里有两种方式:一种是Jedis客户端、另一种是Lettuce客户端可以 和 Redis 服务器通信。所以这里就需要导入客户端的 jar 包依赖。提示:Jedis、Lettuce 都是 Redis 的 Java 客户端,通过它可以对 Redis 服务端进行操作。这个就是 Redis、和 Jedis 之间的亲密关系。Redis 目前不能离开这两个客户端。原创 2023-01-13 16:21:48 · 2563 阅读 · 0 评论 -
缓存雪崩解决方案—同步代码块
上面 DoubleCacheServiceImpl 类中逻辑,由于 50 个线程同时执行,查询 Redis 中没有缓存,所以所有线程都去查询数据库,数据库压力就扛不住了,现在假设让一个线程去查询数据库,其他线程别去,这样数据库压力就下来了。一般情况下,为了防止并发请求打爆数据库,都会加上一层缓存拦截请求,降低数据库压力,但是有时候由于缓存命中率不稳定,导致还有大批量并发请求访问到数据库,造成数据库压力过大从而崩溃。在同步锁里面再去查询一次缓存,有点类似 DCL 的意思,如果缓存中有走缓存。原创 2023-01-12 19:05:05 · 315 阅读 · 0 评论 -
Redisson 实现分布式锁源码浅析
第二段自然就是表示锁没有人使用了呗,那么肯定就不用去做续命了,原创 2022-09-15 12:13:58 · 391 阅读 · 0 评论 -
Redis 分布式锁一步步优化过程
点击查看 Redis 中文官方文档列表模式 http://redis.cn/topics/高并发秒杀场景中,看一下一段代码,会发生哪些问题?肯定会发生超卖(重复卖同一件商品)问题,所以这里可以加锁保证数据安全性,可以使用 Synchornized、ReentantLock 锁,但是推荐使用 ReentantLock 锁,它有一个 tryLock() 方法可以尝试加锁,不会死等。从而可以做一些自己的业务操作,改进之后如下:测试效果如下:以上虽然能够解决单机在 Redis 上的安全行,但是如果是 Redi原创 2022-09-14 23:15:48 · 565 阅读 · 0 评论 -
Redis 缓存击穿简单版解决方案——双缓存/差异性失效时间
可以在添加一个缓存,继续拦截一层,并且这两个换成的失效时间是不一样的(错开),查询和更新的缓存顺序相反,如果先查询 A 缓存,后查询 B 缓存,那么更新就是先更新 B 缓存,后更新 A 缓存。这两行代码不是原子性的,如果先删除,但是还没来得及在将数据存入到缓存中,导致缓存失效,那么就会导致大批量请求直接到 MySQL 数据上去,发生缓存击穿,如何优化呢?实现某宝聚划算功能(热点访问功能),其实就是模仿一个页面的分页展示(每次只展示前5条),并且分页展示内容是在实时变化的一个功能。原创 2022-09-14 10:29:42 · 694 阅读 · 2 评论 -
为什么 Redis 集群中只使用 16384个slot 而不是 65535 个槽位?
1)如果槽位是 65536,发送心跳信息的消息头达到 8k,发送心跳包过于庞大,在消息中需要占据 【CLUSTER_SLOTOS/8】的大小,当槽位为 65538 时,这块消息大小为:65536/8/1024=8kb;3) 槽位越小,节点少的情况下,压缩比高,容易传输。Redis 主节点的配置信息中它负责的哈希槽是通过一张 BitMap 形式保存,在传输过程中会对 bitmap 进行压缩,但是如果 bitmap 的填重率 slots/N 很高的话,bitmap 压缩率就很低。原创 2022-09-13 19:47:04 · 728 阅读 · 0 评论 -
SkipList 跳表基本介绍
为什么选择跳表?目前经常使用的平衡数据结构有:B树,红黑树,AVL树, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。用跳表吧,跳表是一种随机化的数据结构,目前开源软件 Redis 、LevelDB 都有用到它,效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,只要你能熟练操作链表,就能轻松实现一个 SkipList。转载 2021-07-12 15:41:36 · 143 阅读 · 0 评论 -
Redis分布式锁的实现原理(Redission框架实现)
Redis分布式锁的实现原理开发了这么多年了,时候该了解清楚Redis底层是怎么实现分布式锁的机制了,在这样浑浑噩噩的下去估计快要被淘汰了Redis前奏其实Redis的锁机制完全依赖于它的开源框架Redission,这个框架提供了很好的方法支持Redis锁的实现RLock lock = redission.getLoock("myLock");lock.lock();lock.unlock();Redisson实现Redis分布式锁的底层原理好的,接下来就通过一张手绘图,给大家说说Re原创 2020-08-28 00:36:55 · 2547 阅读 · 1 评论 -
springboot使用shiro-整合redis作为缓存(十)
原文地址,转载请注明出处: https://blog.youkuaiyun.com/qq_34021712/article/details/80774649 ©王赛超 说在前面本来的整合过程是顺着博客的顺序来的,越往下,集成的越多,由于之前是使用ehcache缓存,现在改为redis,限制登录人数 以及 限制登录次数等 都需要改动,本篇为了简单,目前先将这两个功能下线,配置暂时是注销的,原类保存...转载 2018-12-27 14:21:05 · 1175 阅读 · 0 评论 -
redis总是报出could not get resource from the pool
问题:有个接缓存的数据比较大,使用用户也比较大,总是报出could not get resource from the pool,下面找到了一个比价好的解决办法,分享一下这个URLhttps://blog.youkuaiyun.com/qh_java/article/details/54669973...转载 2018-08-09 17:42:00 · 593 阅读 · 0 评论 -
安装redis
windows下载地址:https://github.com/MicrosoftArchive/redis/releaseswindows安装地址:http://www.cnblogs.com/M-LittleBird/p/5902850.htmlRedis命令文档:http://doc.redisfans.com/一、key操作:1、KEYS pattern查找所有符合给定模式 pattern ...原创 2018-03-12 21:46:33 · 259 阅读 · 0 评论