![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 79
美式加冰
Camellia!
展开
-
Redis集群(哨兵集群)
Sentinel会不断监控master和slave是否按预期工作.:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也会以新的master为主。:Sentinel充当redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送到Redis的客户端。原创 2024-03-05 14:57:44 · 470 阅读 · 0 评论 -
Redis集群(主从)
slave完成同步时也会记录当前同步的offset,如果slave的offset小于master的offset,说明slave数据落后master,需要更新。:简称replid,是数据集的标记,id一致表示是同一数据集,每一个master都有唯一的replid,slave会继承master节点的replid。因此slave做数据同步,必须向master声明自己的replication id和offset,master才可以判断到底需要同步那些数据。连接7002与7003端口,并与7001做连接。原创 2024-03-04 22:59:25 · 1036 阅读 · 0 评论 -
Redis持久化(RDB,AOF)
因为是记录命令,AOF文件会比RDB文件大的多。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。都是对num的操作,第二次会覆盖第一次的值,因此第一个命令记录下来没有意义。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。当主进程执行写操作时,则会拷贝一份数据,执行写操作。原创 2024-03-04 11:10:55 · 449 阅读 · 0 评论 -
分布式锁-Redisson
是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?:使用这把锁咱们就不使用主从了,每个节点的地位都是一样的, 这把锁加锁的逻辑需要写入到每一个主丛节点上,只有所有的服务器都写入成功,此时才是加锁成功,假设现在某个节点挂了,那么他去获得锁的时候,只要有一个节点拿不到,都不能算是加锁成功,就保证了加锁的可靠性。原创 2024-03-03 21:39:31 · 988 阅读 · 0 评论 -
redis分布式锁
每个线程释放锁的时候,去判断一下当前这把锁是否属于自己,如不属于自己,则不进行锁的删除,假设还是上边的情况,线程1卡顿,锁自动释放,线程2进入到锁的内部执行逻辑,此时线程1反应过来,然后删除锁,但是线程1,一看当前这把锁不是属于自己,于是不进行删除锁逻辑,当线程2走到删除锁逻辑时,如果没有卡过自动释放锁的时间点,则判断当前这把锁是属于自己的,于是删除这把锁。如若不是,则不释放锁。:大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路。原创 2024-03-03 09:14:54 · 922 阅读 · 0 评论 -
redis 缓存击穿问题(互斥锁,逻辑过期)
由于保证了互斥性,所以数据一致,且实现简单,因为仅仅只需要加一把锁而已,也没其他的事情需要操心,所以没有额外的内存消耗,缺点在于有锁就有死锁问题的发生,且只能串行执行性能肯定受到影响线程读取过程中不需要等待,性能好,有一个额外的线程持有锁去进行重构数据,但是在重构数据完成前,其他的线程只能返回之前的数据,且实现起来麻烦。原创 2024-03-01 21:48:00 · 1765 阅读 · 1 评论 -
redis缓存数据(异步操作,缓存穿透,缓存雪崩)
利用redis缓存数据可以减少减少用户访问并发量带来的服务器读写压力,提高读写效率,降低响应时间。原创 2024-03-01 01:24:34 · 481 阅读 · 0 评论 -
Redis代替session实现登录业务
第一层拦截器:拦截所有请求,用于判断且存入用户信息。第二层拦截器:用于拦截需要具有用户信息的请求.拦截器注册1.用户登录时,通过生成的token为key存入redis中,并将token返回给前端。2.第一层拦截器:验证前端的请求头是否有token,如果有,通过token拿到redis中的用户信息,并存入ThreadLocal中。3.第二层拦截器:验证ThreadLocal中是否具有用户信息,来验证是否用户登录。原创 2024-03-01 01:03:58 · 541 阅读 · 0 评论