logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【黑马点评】基于 Redis 实现分布式 Session 登录:从原理到实战的深度复盘

在存储用户信息时,我们选择了 Redis 的Hash结构(类似于 Java 的理由如下:结构直观:Hash 天生适合存储对象。Key 是 token,Field 是属性名(如 nickName),Value 是属性值。支持细粒度修改:相比于 String(存储 JSON 字符串),Hash 可以单独修改某个字段(比如只修改昵称),而不需要把整个对象取出来反序列化再存回去,原子性更高。内存占用少:H

#redis#数据库#缓存
【黑马点评】Redis 缓存一致性实战:基于 Cache Aside Pattern 的深度复盘

摘要:本文基于黑马点评项目,探讨商铺数据更新时Redis缓存与数据库的一致性问题。采用CacheAsidePattern模式,通过删除而非更新缓存来优化性能,并选择先改数据库再删缓存的顺序降低数据不一致风险。同时利用Spring事务机制确保操作原子性,在数据库更新失败时自动中断后续操作,保证最终一致性。该方案在读写性能与数据可靠性间取得了平衡,为高并发场景下的缓存处理提供了实践参考。

#spring#java#后端 +3
【黑马点评】Redis 缓存穿透深度解析:从布隆过滤器到缓存空对象

缓存穿透 (Cache Penetration)是指客户端请求的数据在缓存中不存在,同时在数据库中也不存在。由于数据库中没有数据,所以我们无法将数据写入缓存。这就导致了每次针对该 Key 的请求,都会绕过 Redis,直接打到数据库。击穿:Key 对应的数据存在,只是突然过期了(点)。雪崩:大量的 Key 同时过期(面)。穿透:数据根本就不存在(空)。通过“缓存空对象”配合“TTL 过期策略”,我

#缓存#redis#数据库
深入剖析 Redis 缓存三大杀手:穿透、击穿与雪崩

摘要:本文从架构视角剖析Redis在高并发系统中的三大经典问题。缓存穿透指查询不存在数据导致请求穿透到数据库,可通过空对象缓存或布隆过滤器解决;缓存击穿是热点key失效瞬间引发流量冲击,需在强一致(互斥锁)与高可用(逻辑过期)间权衡;缓存雪崩因大量key同时失效或服务宕机,需采用TTL随机化、多级缓存等高可用架构。文章强调缓存设计本质是权衡艺术,需根据业务场景在数据一致性和系统可用性间做出选择。

#缓存#redis#数据库 +1
【黑马点评】- Redis 分布式锁进化史:从 SETNX 到 Lua 脚本

本文探讨了分布式锁的演进过程,从单体应用转向分布式系统时面临的核心挑战。首先分析了分布式锁的基本原理和要素(可见性、互斥性、高可用等),对比了MySQL、Redis和Zookeeper三种实现方案。重点展示了基于Redis的实现过程:1)基础SETNX方案;2)通过UUID+线程ID解决误删问题;3)使用Lua脚本确保原子操作。最后指出当前方案的不足(锁超时问题)和后续优化方向(Redisson的

#redis#分布式#lua +4
【黑马点评】Redisson 分布式锁核心原理剖析

本文探讨了高并发秒杀场景下分布式锁的优化方案。针对JVM本地锁和简易Redis锁的缺陷,项目引入Redisson框架实现分布式锁,解决了可重入性、自动续期和阻塞机制等核心问题。通过Hash结构存储锁状态、看门狗机制实现自动续期,以及Pub/Sub机制优化等待逻辑,Redisson提供了高性能的分布式锁方案。文章还分析了Lua脚本的原子性、公平锁实现及集群部署限制等关键技术点,并指出锁范围必须包裹事

#分布式#缓存#数据库 +3
【黑马点评】异步秒杀优化:从 Redisson 到 Lua + 阻塞队列

本文介绍了一种基于Redis和异步处理的秒杀系统优化方案。针对传统同步模式下数据库性能瓶颈问题,采用"Redis+Lua脚本+阻塞队列+独立线程池"的三层架构:1)利用Redis原子性Lua脚本快速完成库存校验;2)通过JVM内存队列实现流量削峰;3)使用独立线程异步处理数据库写入。该方案通过解耦业务校验与数据落库,将QPS提升一个数量级,同时解决了跨线程事务失效等关键技术问题

#lua#开发语言#缓存 +4
【黑马点评】Redis Stream 消息队列:异步秒杀的终极优化

本文讲述秒杀系统从同步到可靠异步的优化过程:最初所有校验与落库在主线程完成,数据库成为瓶颈;随后改为 JVM 阻塞队列异步写库,性能提升但存在内存溢出和宕机丢单问题。最终采用 Redis Stream 作为消息队列,在 Lua 中同时完成扣库存与写入队列,保证原子性;消费者读取后落库并 ACK,Pending List 可在异常后恢复处理。相比 List 和 Pub/Sub,Stream 提供持久

#redis#数据库#缓存 +2
【黑马点评】Redis 高级数据结构在社交与统计场景的降维打击

摘要:本文复盘《黑马点评》项目中Redis在社交网络和大数据统计场景的应用实践。通过Set实现好友关注和共同关注查询,利用ZSet实现Feed流推送,使用GEO处理附近商户搜索,并采用BitMap和HyperLogLog分别解决海量用户签到和UV统计问题。这些方案展示了Redis丰富数据结构如何优雅解决传统数据库难以处理的高并发场景,从社交关系到空间搜索再到大数据统计,体现了选择合适数据结构对系统

#redis#分布式#java +1
「JVM」 深入剖析 JVM 内存结构:从底层原理到线上排查

本文深入剖析了JVM内存结构及其在Java开发中的关键作用。文章首先将JVM内存划分为线程私有(程序计数器、虚拟机栈、本地方法栈)和线程共享(堆、方法区)区域,详细解析了各区域的功能特性及常见问题。重点探讨了堆内存泄漏排查方法、方法区演进历程、字符串常量池优化等核心知识点,并揭示了NIO直接内存的底层机制。通过实际案例展示了CPU飙升、内存溢出等线上问题的诊断方法,强调掌握JVM内存原理对构建高并

#jvm#java
    共 24 条
  • 1
  • 2
  • 3
  • 请选择