Redis
文章平均质量分 70
主要记录一些在学习Redis过程中觉得重要的知识点,以及解决问题的思路和方法。
多数内容学习自黑马程序员2022Redis教程,其中有一些图片也是来自教程当中。
阿杆.
Java后台工程师,Kotlin后台工程师,全网同名【阿杆】,我的公众号【程序员阿杆】。
展开
-
基于Redis的分布式锁 以及 超详细的改进思路
什么是分布式锁满足分布式系统或集群模式下多进程可见并且互斥的锁获取锁互斥:确保只能有一个线程获取锁,可以利用的互斥特性非阻塞:尝试一次,成功返回true,失败返回false释放锁手动释放,超时释放:获取锁时添加一个超时时间,避免服务宕机引起的死锁,组合 实现思路 改进思路 存在的问题 存在一种情况,按照以下顺序执行:示意图:这个问题,实际上就是释放了不是自己产生的锁,故我们可以通过特定的标识,在释放锁之前判断锁是否是由自己产生的,且只释放自己产生的锁。可以将线程id存入value,在释放之前判断锁的val原创 2022-06-22 12:30:16 · 339 阅读 · 1 评论 -
超卖问题解决方案(一种多线程安全问题) 乐观锁、悲观锁
超卖问题,即卖出的数量超过了给定的数量,一般是由多线程引起的。假设此时商品A库存为1件,当多个用户同时进行购买时,同时读到了当前的库存为1,于是都被允许下单,扣减库存,从而使库存为负数,导致超卖。超卖问题是典型的多线程安全问题,针对这一问题的常见解决方案就是加锁:认为线程安全问题一定会发生,因此在操作数据之前先获取锁,确保线程串行执行。例如Synchronized、Lock都属于悲观锁。认为线程安全问题不一定会发生,因此不加锁,只是在更新数据时去判断有没有其它线程对数据做了修改。 如果没有修改则认为是安全的原创 2022-06-22 12:21:20 · 2437 阅读 · 4 评论 -
基于Redis的分布式ID生成器
这里是以秒为单位的时间戳和以天为单位的序列化计数器组成的ID生成器。原创 2022-06-22 12:19:12 · 1237 阅读 · 0 评论 -
Redis 缓存更新策略,缓存穿透、雪崩、击穿问题
Redis 缓存更新策略,缓存穿透、雪崩、击穿问题原创 2022-06-19 22:20:30 · 219 阅读 · 0 评论