redis
文章平均质量分 85
小猿修行记
修行中
展开
-
zookeeper实现分布式锁
前言zookeeper的设计初衷,就是为了协调分布式服务,因此利用zookeeper来解决分布式锁的问题也是一种较为简单的实现1 原理利用zookeeper的顺序临时节点的特性来实现1.1 获取锁首先,在zookeeper当中创建一个父节点 /testLock;当第一个客户端C1想要获取锁时,会先在父节点下创建一个临时顺序节点N1; 之后,C1会查找父节点下的所有的临时顺序节点并排序,判断自己所创建的节点N1是不是最小的(最靠前的); 如果是,则成功获得锁;这时候,如果再有一个客户端原创 2021-01-25 14:30:05 · 405 阅读 · 0 评论 -
Redis实现分布式锁
Redis实现分布式锁1 问题导入使用setnx来实现分布式锁?2 问题分析问题1:setnx命令在参数中不能设置过期时间,要执行expire才能进行过期时间设置,不是原子性的操作,可能会在执行setnx后服务器宕机,没有设置expire,从而造成死锁现象解决:在redis中可以使用set key value ex expireTime nx 命令来进行替换,在代码中可以使用redisTemplate.opsForValue().setIfAbsent(key, value, expireTi原创 2021-01-09 17:59:39 · 468 阅读 · 4 评论 -
Redis 三大缓存问题
Redis 三大缓存问题缓存穿透 缓存击穿 缓存雪崩1.缓存穿透1.1 什么是缓存穿透 缓存穿透,它就是指当用户在查询一条数据的时候,而此时数据库和缓存却没有关于这条数据的任何记录,而这条数据在缓存中没找到就会向数据库请求获取数据。它拿不到数据时,就会一直查询数据库,这样会对数据库的访问造成很大的压力。 举个栗子:用户查询一个 id = -1 的商品信息,一般数据库 id 值都是从 1 开始自增,很明显这条信息是不在数据库中,当没有信息返回时,会一直向数据库查询,给当前数据库的造成很大的原创 2020-10-09 14:40:51 · 208 阅读 · 0 评论