
Redis学习
文章平均质量分 66
记录Redis学习
~努力努力再努力k
物来顺应,未来不迎,当时不杂,既过不恋
展开
-
Redis学习之消息队列
存放消息的队列。一种开发中常用的中间件消息队列:存储和管理消息,也被称为消息代理(Message Broker)生产者:发送消息到消息队列消费者:从消息队列获取消息并处理消息使用消息队列的优点可以保证我们消息的安全、不会丢失(快递柜上锁)可以解耦生产者和消费者(不用立刻去取快递)独立组件,不影响 JVM可以保证消息一定被接受,避免线程处理错误后订单丢失的问题消息是有序的。原创 2023-10-20 16:30:39 · 70 阅读 · 0 评论 -
Redis学习之秒杀业务优化
当用户下单之后,判断库存是否充足只需要导redis中去根据key找对应的value是否大于0即可,如果不充足,则直接结束,如果充足,继续在redis中判断用户是否可以下单,如果set集合中没有这条数据,说明他可以下单,如果set集合中没有这条记录,则将userId和优惠卷存入到redis中,并且返回0,整个过程需要保证是原子性的,我们可以使用lua来操作。阻塞队列可以用 JDK 原生的 BlockingQueue 实现,记得指定队列容量。这样一来,性能得到大大提高。原创 2023-10-13 16:17:49 · 47 阅读 · 0 评论 -
Redis学习之Redisson实现可重入锁
解决思路:在锁的 value 中额外保存当前线程获取锁的次数,每次获取锁 +1、释放锁 -1,当次数为 0 时才真正删除 key。目的:保证同一个线程可以多次获取同一把锁。原创 2023-10-11 21:36:48 · 118 阅读 · 0 评论 -
Redis学习之共享session(单点登录)
为什么需要共享session?防止多个后端服务器的数据存储不一致,导致用户访问时出现未登录的情况。如何实现共享session?使用独立的内存存储来存放session。原创 2023-09-18 14:57:31 · 164 阅读 · 1 评论 -
Redis学习之分布式全局id生成
为什么需要分布式全局 ID 生成器?对于订单这种数据,数据库自增的规律性太明显,会暴露一些信息(比如根据昨日和今日的订单号差值看出销量)数据量过大时,不同表的 id 分别自增,容易出现 id 冲突分布式全局 ID 生成应满足的特点:唯一:整个系统每个 id 都是唯一的递增:虽然不连续,但整体 ID 保持递增,有利于数据库创建索引(也符合自然规律)安全:不能通过 id 看出敏感业务信息高可用:作为核心服务,不能挂掉,否则会影响新数据的生成高性能:作为频繁调用的服务,性能一定要高。原创 2023-10-06 16:13:55 · 359 阅读 · 1 评论 -
Redis学习之缓存雪崩、缓存击穿及封装Redis工具类
2.逻辑过期:key 设置为永不过期,在 value 中记录过期时间,业务中根据这个过期时间来判断缓存是否有效;如果缓存已过期,只有一个线程能抢到锁(然后需要再次判断是否存在缓存),开启独立线程去更新缓存,然后立即返回过期数据;方法3:根据指定的key查询缓存,并反序列化为指定类型,利用缓存空值的方式解决缓存穿透问题。方法4:根据指定的key查询缓存,并反序列化为指定类型,需要利用逻辑过期解决缓存击穿问题。// 6.3.成功,开启独立线程,实现缓存重建。// 4.4.获取锁成功,根据id查询数据库。原创 2023-10-06 14:23:18 · 141 阅读 · 1 评论 -
Redis学习之缓存实现及缓存更新
什么是缓存?缓存就是数据交换的缓冲区(称作Cache [ kæʃ ] ),是存贮数据的临时地方,一般读写性能较高。为什么需要缓存?提前准备好数据,便于更快地读写。缓存是把双刃剑,要权衡利弊。优点:降低后端负载提高读写效率,降低响应时间缺点:数据一致性成本 代码维护成本 运维成本。原创 2023-09-20 16:48:59 · 184 阅读 · 1 评论