登录社区云,与社区用户共同成长
邀请您加入社区
本文介绍了SpringCache框架的核心功能与使用方法。主要内容包括: 核心缓存注解详解:@Cacheable(缓存查询)、@CachePut(缓存更新)、@CacheEvict(缓存清除)和@Caching(组合操作)的使用场景与语法示例。 类级别配置:通过@CacheConfig实现缓存配置复用。 实际案例:演示了基于用户管理系统的完整实现,包含实体类、配置类、服务层(应用缓存注解)和控制器
openJiuwen v0.1.7的可插拔会话存储机制是一个设计精良、生产就绪的特性:维度评分说明功能完整性⭐⭐⭐⭐⭐覆盖内存/本地/分布式三种场景架构设计⭐⭐⭐⭐⭐分层清晰,双接口设计优雅易用性⭐⭐⭐⭐⭐一行配置切换,零代码侵入性能⭐⭐⭐⭐Redis性能优秀,SQLite有待优化可观测性⭐⭐⭐⭐生命周期钩子便于监控。
本文介绍了Redis执行Lua脚本的方法,重点讲解了分布式锁的实现方案。主要内容包括:1)单机版Redis安装指南;2)Lua脚本编写示例,通过SETNX和PEXPIRE实现原子性加锁;3)Lua脚本的三种执行方式(EVAL、EVALSHA和文件加载);4)KEYS与ARGV参数的区别及规范要求;5)脚本预加载和SHA1校验机制。文档基于Redis 7.0.0和Spring Boot 3.2.0版
Redis 与 MySQL 双写一致性:延迟双删 / 读写锁 / 异步通知 / Canal,一文全解》
Redis主从同步包含完全同步和增量同步两种方式。完全同步发生在初次连接、数据丢失或长时间未同步时,主节点将全量数据通过RDB快照传输给从节点,并补充期间的新写命令。增量同步则用于短暂断线重连后,主节点通过环形缓冲区(repl_backlog_buffer)和偏移量比对,仅发送从节点缺失的写命令。若偏移量差距过大超出缓冲区范围,仍需完全同步。合理设置缓冲区大小可减少完全同步频率,提高性能。
想要学会ARP协议及ICMP协议和内网穿透?看这一篇文章就够了,万字硬核详解!
摘要:本文介绍了Redis实现全局唯一ID的方案,采用时间戳+序列号的组合方式,通过位运算拼接生成64位ID。在秒杀场景下,使用MyBatis-Plus操作数据库时出现超卖问题,解决方案包括乐观锁(CAS法)和悲观锁。针对一人一单需求,通过加锁解决线程安全问题,并处理了集群环境下的并发问题。最后指出集群环境下锁失效的原因是由于多个JVM各自维护独立的锁监视器所致。
Redis 字符串是 Redis 基础数据结构(其他结构均基于其构建,所有键也为字符串类型),支持 SET(含 NX/XX/PX/EX 参数)、MGET/MSET、INCR/DECR 系列(支持浮点)及 APPEND/GETRANGE 等操作,可存储数字 / 文本,需注意大键操作的性能问题。
在 Java Web 开发中,Redis 是高频使用的缓存中间件,它能极大提升系统性能、减轻数据库压力。今天这篇学习日记,我会带着大家从 0 到 1 实现 SpringBoot 整合 Redis,不仅会讲基础的配置和 API 使用,还会结合实战场景讲解缓存的核心用法,新手也能跟着敲完就用。
用户要求对 Redis 实例 redis-147885f8 进行性能优化,启用 Redis 7.2 的 I/O 多线程功能,并验证优化效果。单线程模式 (传统):│ 主线程: 接收 → 解析 → 执行 → 响应 ││ (全部串行执行) │多线程模式 (Redis 7.2):│ 主线程: 接收 → 解析 → 执行 ││ ↓ ││ I/O 线程池: 并行读取/写入响应 │。
本文介绍了Redis分布式锁的实现原理及最佳实践。首先分析了本地锁在分布式系统中的局限性,提出基于Redis的解决方案。从基础的SETNX命令实现出发,逐步解决死锁、误删等问题,并引入原子操作、唯一标识和看门狗机制进行优化。重点推荐生产环境使用Redisson客户端,详细讲解了其可重入锁、自动续期、RedLock算法等核心特性。通过对比手写实现与Redisson的差异,总结出分布式锁的关键点:基础
本文详解Redis三种持久化方式(RDB、AOF、混合持久化)的机制、触发方式、优缺点
实时搜索:SpringCloud + Elasticsearch + Redis + Kafka
本文介绍了基于Java+Redis Cluster构建分布式缓存系统的实战经验与一致性保障方案。文章从Redis Cluster核心原理入手,详细解析了哈希槽分片、无中心节点等特性及其生产环境中的常见问题。针对分布式缓存一致性挑战,总结了缓存穿透、击穿、雪崩等场景的解决方案,并提出了先更DB再更缓存等核心原则。随后,文章提供了生产级Redis Cluster部署指南,包括服务器规格、编译安装步骤及
Redis与MySQL内存占用差异深度解析:Redis采用轻量级键值对结构,内存占用仅为MySQL的1/3。本文通过数据结构对比、实际案例(8GB服务器优化后Redis仅占2.8GB)和高级技巧(Redis+MySQL混合缓存方案),揭示300%内存差距原因。提供3个最佳实践:1)Redis缓存热点数据;2)合理配置InnoDB Buffer Pool;3)设置Redis内存策略。同时警示常见错误
本文介绍了一套基于Redis+Redisson的高性能分布式编码生成方案,解决了传统数据库自增ID的性能瓶颈和分布式唯一性问题。该系统支持自定义编码规则,包含时间、流水号、随机字符等多种占位符,通过Redis自增保证分布式唯一性,并采用Redisson分布式锁防止并发冲突。系统实现了多级缓存、异步持久化等优化策略,支持定时重置流水号,具备数据库兜底机制确保数据安全。该方案已在实际生产环境中验证,兼
2025年度报告以及我的思考
当你想"限制用户在N秒内不能操作"时,用带过期时间的标记;当你想"确保只有一个线程能操作"时,才用分布式锁。防重复点击和分布式锁是两种完全不同的语义,但开发者常因"都用到Redis"而混用。防重复点击 = 冷却计时器:用SET NX EX,自动过期,无需释放分布式锁 = 互斥信号:用,手动释放,保护资源选错工具不仅代码复杂,还会引入死锁、性能下降、用户体验差等隐患。希望这篇文章能帮你避开这个90%
主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:海量数据存储问题高并发写的问题使用分片集群可以解决上述问题,如图:分片集群特征:集群中有多个 master,每个 master 保存不同数据每个 master 都可以有多个 slave 节点master 之间通过 ping 监测彼此健康状态客户端请求可以访问集群任意节点,最终都会被转发到正确节点。
Spring使用Redis
本文分享了Redis核心原理与分布式架构设计的实践经验。首先解析Redis高性能的底层逻辑,包括单线程模型、高效数据结构和IO多路复用机制。重点总结了缓存穿透、击穿、雪崩三大问题的解决方案,以及Redis集群的分片与主从同步机制。在分布式架构方面,分析了垂直与水平拆分的策略,并探讨了数据一致性、服务可用性和分布式锁等核心问题。最后强调架构设计需要权衡成本与性能,指出技术方案的本质是解决性能、可用性
摘要:本文介绍了一个为本地生活服务商家打造的自主可控的数字化平台解决方案。该系统包含用户端、商户端、骑手端和管理后台四大模块,支持商家建立个性化店铺、智能商品管理、全流程订单追踪等功能。用户可获得流畅的消费体验,商家能实现一站式智慧经营,骑手则拥有智能配送工具。平台运营商可通过数据化后台实现多站点管理、骑手团队管理等精细化运营。系统技术架构基于云服务器,支持PHP7.2+MySQL5.6环境,具备
选谁?核心判断依据MySQL数据结构化、需要事务、复杂查询Redis追求极致性能、临时数据、缓存 / 锁MongoDB数据非结构化、字段灵活、海量存储。
在当前云原生架构蓬勃发展的背景下,中间件的性能表现直接关系到整个应用系统的服务质量和用户体验。本文基于openEuler 22.03 LTS SP3环境,通过对Redis和Nginx这两款主流中间件进行全面的性能对比测试,旨在验证openEuler在云原生中间件支持方面的技术实力和优化效果。测试将聚焦于安装便捷性、性能表现、资源使用效率等关键维度,全面评估openEuler作为云原生基础设施的成熟
成功在 Spring Boot 项目中整合了 Redis 并配置了连接池。我们使用连接池可以显著提高 Redis 操作的性能和资源管理效率。了解了这些基础知识后,接下来将详细介绍如何在Spring Boot项目中整合Redis,包括依赖配置、连接设置、基本操作和应用案例。启动应用程序后,可以选中通过 Postman 或浏览器访问以下 URL,验证 Redis 操作是否成功。将Spring Boot
本文探讨Redis在金融行业的两大核心应用:交易流水缓存和风控规则存储。金融系统要求高并发、低延迟和强一致性,Redis的内存操作和丰富数据结构完美契合这些需求。 文章首先分析金融交易流水的业务特点,提出使用Redis Sorted Set(ZSet)缓存流水的解决方案,通过时间戳作为Score实现高效的时间窗口查询。并给出Java实现代码,包括交易缓存、最近N天交易查询等功能。 第二部分将重点讨
构建高可靠微服务,事件丢失和延迟任务一直是难题?本文带你从实战角度掌握 Outbox模式、延迟队列 及 Watermill+Redis Stream 集成方案,教你用Go打造可靠、可观测、毫秒级响应的事件驱动系统。
缓存穿透是指查询一个数据库中根本不存在的数据。由于缓存中也不会有这个数据,所以每次请求都会穿过缓存,直接去查询数据库。如果有人恶意地大量发起这种请求,就会导致数据库压力过大甚至崩溃。简单比喻你去图书馆(缓存)借一本《如何成为亿万富翁》。图书馆没有,你就去总书库(数据库)找,总书库也没有。第二天你又来借同一本书,流程又重复一遍... 如果有成千上万的人每天都来借这本根本不存在的书,总书库的管理员就累
当前和计划中的用途:短信验证码缓存key:value: 6 位数字验证码,字符串TTL: 60 秒用途: 注册、短信登录、找回密码用户信息缓存key 示例→→用途登录时快速根据用户名 / 手机号查到用户 id减少 MySQLSELECT压力统一思想:Redis 只是加速访问的「缓存层」真正的权威数据存储在 MySQL写操作必须以 MySQL 为准,Redis 可以删、可以重新写。
本文介绍了多线程的基本概念及其在Java中的应用。多线程通过将进程的资源分配与调度执行分离,提高了服务器处理并发请求的效率。线程作为轻量级进程,创建和销毁开销小,共享进程资源但容易引发冲突。Java通过Thread类实现多线程编程,提供了继承Thread类和实现Runnable接口两种方式创建线程,并通过start()方法启动线程执行。代码示例展示了多线程的并发执行效果,强调线程间执行顺序的不确定
数据类型RedisTemplate 方法说明String字符串操作Hash哈希表操作List列表操作Set集合操作Sorted Set有序集合操作// K: Key 的类型// V: Value 的类型可以不配置,但会用 JDK 序列化,导致数据不可读配置的目的:改用 JSON 序列化,让数据可读、节省空间、跨语言兼容:Key 用字符串,Value 用 Object 更灵活推荐做法:写配置类,统一
本文介绍了在 Ubuntu 系统中结合 Docker 和 CPolar 实现远程访问 Redis 服务的方法。首先讲解了 Docker 的安装步骤,包括添加源、安装包及验证;接着说明拉取 Redis 镜像、修改配置文件并启动容器的过程,还提及本地通过 Redis Desktop Manager 进行连接测试。之后重点阐述利用 CPolar 内网穿透工具实现公网远程访问,涵盖工具安装、创建随机和固定
在进行查找的时候还是需要先获取锁,要是获取到了去数据库中查找,要是没有获取到的话就是睡眠,然后递归获取,直到获取到锁,获取到锁之后化石需要再次检测redis当中是不是还是存在redis缓存,要是存在的话直接进行返回就行,要是不存在的话需要去数据库里面查找,找到的话存到redis中然后返回。这里需要的也是去redis1里面查找,不过需要注意的是,在进行插入的时候是去遍历集合,从第一个开始,最左插入法
这周在对终端网络聊天室项目进行实现异步消息队列功能的时候,要利用到redis来实现消息持久化。针对实现消息对列功能redis提供的类型有列表List,发布订阅PubSub以及stream流, 其中List结构也可以作为一个消息队列来实现数据持久化,但是存在消息丢失,只支持单消费者模式等缺陷;而PubSub虽然采用发布订阅模式,支持多生产多消费模型,却不支持数据持久化,同时也无法避免消息丢失和队列溢
本文介绍了使用Lettuce客户端在Java中实现Redis存储PB3协议数据的方案,包括连接配置、序列化/反序列化操作,并提供了Python替代方案。同时给出了常见问题处理方法,如依赖安装、连接排查和性能优化建议。文中强调生产环境应启用SSL加密、配置白名单和监控内存使用。配套提供了Protobuf编解码和序列化原理的参考链接,帮助开发者快速实现安全可靠的Redis-PB3存储方案。
维度ARPRARP功能方向IP → MACMAC → IP主要用途实时通信寻址设备启动初始化响应方式单播回复广播回复现代地位不可替代已被淘汰✨历史意义ARP仍是现代网络基石,而RARP作为DHCP的前身,完成了其历史使命!📚 扩展阅读RFC 826:ARP协议标准RFC 903:RARP协议标准动手任务:用Wireshark捕获你上网时的ARP请求!掌握网络通信的底层奥秘!关注我,获取更多网络协
文章摘要 本文系统介绍了缓存的核心概念、Redis的应用优势及常见缓存策略。主要内容包括: 缓存基础知识:缓存是一种高频数据快速访问策略,通过将热点数据存入更快存储介质(如内存)提升性能。Redis因其高速、多数据结构支持和高可用性成为主流缓存方案。 缓存更新策略: 定期生成:固定周期更新缓存(如每日同步热词),实现简单但时效性差。 实时生成:结合淘汰策略(如LRU、LFU)动态管理缓存,需注意缓
Redis 提供的哨兵用于在主从复制中,自动地实现故障转移,此时无需开发者手动进行主从切换。展开来说,Sentinel 负责监控所有 Redis 节点的工作状态,如果它发现 Master 出现故障(通常由多个 Sentinel 节点协同判断)则自动化地将一个 Slave 提升为 Master,并让其他 Slave 连接该新 Master。故障转移后,Sentinal 还会将新的主从拓扑结构告知客户
这是一个关键设计点!
Redis有序集合是string类型元素的集合,且不允许有重复成员。有序集合(sorted set / zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素。列表(list):按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList。Redis的默认端口为6379,按ctrl+c可以中断(结束)此次Redis的服务。集合(set):无序集合,没有重复
Wiz研究团队在Redis中发现高危远程代码执行漏洞CVE-2025-49844(#RediShell),CVSS评分10.0。该漏洞源于存在13年的UAF内存损坏问题,攻击者可利用恶意Lua脚本突破沙箱执行任意代码,完全控制主机。全球约33万Redis实例暴露在互联网,57%云环境存在不安全配置。Redis官方已发布补丁,建议立即升级并启用身份验证等防护措施。漏洞影响范围广,需优先处理暴露实例。
普通的redis交互(非pipeline):(1)客户端发送一条命令(2)redis服务器执行命令并返回结果(3)客户端收到结果后发送下一条命令pipeline:允许客户端将多条命令一次性发送给服务器,而不是一条一条,redis会依次执行这些命令并将结果一次性返回:pipeline不具备事务性。
【代码】SpringBoot MySQL。