wordpress软件网站模板下载失败,杭州建网站的公司,农业网站建设,东莞市十大广告公司Redis
redis是单线程#xff0c;基于内存操作#xff0c;所以执行很快。#xff0c;与网络延迟有关。
还是买早餐的例子#xff0c;从早餐店买一个包子#xff0c;首先早餐店得还有包子没有卖完#xff0c;然后卖出#xff0c;包子数量-1#xff0c;重新设定早餐店包…Redis
redis是单线程基于内存操作所以执行很快。与网络延迟有关。
还是买早餐的例子从早餐店买一个包子首先早餐店得还有包子没有卖完然后卖出包子数量-1重新设定早餐店包子的剩余数量。 假设现在早餐店只有一个包子了但是有两人都来买包子第一个人早一分钟询问了店家还有没有包子第二个人随后也询问了还有没有包子那么他们都会得到还有一个包子的回答。人和人之间没有交流的前提那么当第一个人买的包子以后库存变为了0造成第二个苦苦等待以后早餐店并没有给出他需要买的哪一个包子也就是程序卡住了没货了~
使用synchronized同一个JVM锁住可以理解为让买包子的人排队不排队就不让买。但一个早餐铺可能有两个窗口卖包子也就是说排队有两列排队那么卡住的可能还是很大。不同的JVM有自己的synchronized并不能同时处理两列排队也就是不能同时处理不同节点的线程。
这个时候就需要分布式锁。
分布式锁
其实就是设置一个卖包子询问员买包子的人排队排了无论多少列都要先来问一问询问员前面有人买包子吗没人我就要去排队了有人我就再等等。
也就是通过分布式锁获取一个线程该线程未结束之前不释放锁这样其他线程就是反复请求直到锁被释放。
setnx(set if not exists)
SET lock value NX EX 2其中NX指的是互斥锁EX为设置过期时间避免发生死锁问题利用releaseTime给锁续期看门狗但需要手动释放锁。
DEL keyDEL 释放锁删除的缩写。
集群方案
主从复制
集群中会有一个主节点有其他的从节点主节点写数据从节点读数据。
哨兵机制
检查主从节点监控如果有主节点宕机了那么会选取一个从节点重新作为主节点自动故障恢复会将最新的信息推送到redis的客户端通知。
主要是基于心跳机制检测服务的状态心跳短时间内跳动一次输送一次血液。那么哨兵就是每隔1s就会向集群中的每个实例发送ping命令也就是一直问你你在家吗在家我就走了不在家我就要找人来看房子了。
会存在一个问题脑裂。简单的理解就是裂开了因为网络分区的问题会使得主节点与从节点处于不同分支网络这就导致产生两个集合1.主节点 2.从节点。那么在2集合中由于没有感受到“心跳”哨兵会自动委任一个主节点这样就使得一个任务中存在两个主节点。 而解决办法就是把老的主节点干掉但是由于之前的程序任务主要面向老主节点写入数据干掉老主节点以后会导致数据丢失问题。或是配置减少节点数据。