当前位置: 首页 > wzjs >正文

6网站建设设计好搜seo软件

6网站建设设计,好搜seo软件,网站后台设置应注意什么,织梦cms做网站教程视频Redlock实现原理 超过半数redis节点加锁成功才算成功加锁。 Redlock存在问题 如果主节点挂掉,还没有同步到从节点,重新选举出主节点,那加锁就没有加到这个新的主节点上。 如果增加redis主节点数,那么加锁的性能更差,要…

Redlock实现原理

超过半数redis节点加锁成功才算成功加锁。
Redlock存在问题
如果主节点挂掉,还没有同步到从节点,重新选举出主节点,那加锁就没有加到这个新的主节点上。
如果增加redis主节点数,那么加锁的性能更差,要给半数节点加锁,如果没有加成功,还要回滚。
Redis的刷盘频率,1s刷盘一次,否则写一条刷盘一条性能就非常差了。如果redis挂了或者重启,可能导致这1s内的数据没有持久化,因此也会造成锁丢失,别的线程也可以加锁成功。
RedLock 依赖 Redis 实例的系统时钟计算锁的剩余有效期。若不同实例的时钟不同步(如时钟跳跃或漂移),可能导致锁被提前释放或无法释放。
Redisson 官方已弃用 RedLock。

高并发扣减库存

分段锁。
ConcurrentHashMap1.7分段锁的原理
分段结构:分为多个segment,继承reentrantLock。
锁粒度:写操作仅锁定当前操作的segment。读操作不用加锁。
哈希定位:第一次hash计算segment位置,第二次hash计算数组下标。

热点缓存重建

Product product = null;
String productCacheKey = RedisKeyPrefixConst.PRODUCT_CACHE + productId;
// 获取缓存
product = getProductFromCache(productCacheKey);
if(product != null) return product;
//加分布式锁解决热点缓存并发重建问题
RLock hotCreatecacheLock = redisson.getLock( LOCK_PRODUCT_HOT_CACHE_CREATE_PREFIX + productId);
hotCreateCacheLock.tryLock();
try {// 在锁内再次确认缓存状态,防止在第一次检查缓存为空后// 但是在加锁前,其他线程已经重新构建好缓存// 并且若多个线程同时通过第一次检查,加锁后保证只有一个线程来执行// 剩下的线程拿到锁再进来检查到缓存有值就直接返回了product = getProductFromCache(productCacheKey);if(product != null)  return product;// 读锁共享,写锁互斥RReadWriteLock productupdateLock = redisson.getReadWriteLock( name: LOCK_PRODUCT_UPDATE_PREFIX + productId);// 读锁RLock rLock =productUpdateLock.readLock();rLock.lock();// 构建缓存,同时也构建本地缓存。reBuildCache();// 热点key,比如微博,百万用户查同一个key,redis扛不住。// 本地缓存,并发百万级别没问题。// 多级缓存无法保证绝对一致性。不用过度设计。MQ异步或者redis发布订阅。// redis的发布订阅机制,如果更新数据,发送消息到queue,然后监听更新。// 热点中的热点商品才会存放到本地缓存,因为本地缓存是非常宝贵的。// 并且热点商品的变动是非常快的。// 因此,有专门的一个热点缓存计算系统,所有的应用会对热点缓存计算系统做一个监听,维护缓存。
}// 发布消息
redisTemplate.convertAndSend("cache:update", JSON.toJSONString(new CacheMessage("user:" + user.getId(), "DELETE")));
// 订阅频道
redisTemplate.execute((RedisConnection connection) -> {connection.subscribe(new RedisMessageListener() {@Overridepublic void onMessage(String channel, String message) {// 解析消息CacheMessage cacheMsg = JSON.parseObject(message, CacheMessage.class);// 更新本地缓存
// 重建热点缓存串行转并行
// tryLock允许线程立即尝试获取锁,若锁不可用则立即返回失败,而非阻塞等待。这种机制打破了严格的串行逻辑。
if (cacheLock.tryLock()) {try {// 重建缓存(串行)} finally {cacheLock.unlock();}
} else {// 返回旧缓存或默认值(并行)
}

缓存穿透

查询一个不存在的key,设置为空值给缓存。

private final static String EMPTY_CACHE = "{}";

缓存雪崩

过期时间加一个随机值。


文章转载自:

http://wn2apdJY.fxqjz.cn
http://9xB7Tlfb.fxqjz.cn
http://Qx6b9SrV.fxqjz.cn
http://5SfMl5AK.fxqjz.cn
http://lbAS34qr.fxqjz.cn
http://KkjudWYV.fxqjz.cn
http://dSeRf66A.fxqjz.cn
http://sgEcFkuO.fxqjz.cn
http://XjBy6aqO.fxqjz.cn
http://rl0CWzQ2.fxqjz.cn
http://rbhYdPvR.fxqjz.cn
http://RMZAQERi.fxqjz.cn
http://Jo7y57yc.fxqjz.cn
http://QqjOZYOn.fxqjz.cn
http://D8XwIKnU.fxqjz.cn
http://syaeQiav.fxqjz.cn
http://cKcBVoSG.fxqjz.cn
http://agmKomvf.fxqjz.cn
http://eZOrTgNE.fxqjz.cn
http://iRgV0SG0.fxqjz.cn
http://w47yTDE3.fxqjz.cn
http://FdROJHFM.fxqjz.cn
http://tEOyAske.fxqjz.cn
http://J2nyMWMp.fxqjz.cn
http://wmlHg8kW.fxqjz.cn
http://soNL08zW.fxqjz.cn
http://wMfALiIK.fxqjz.cn
http://L9NHdp8y.fxqjz.cn
http://Efv3RiUK.fxqjz.cn
http://87DMalCG.fxqjz.cn
http://www.dtcms.com/wzjs/663450.html

相关文章:

  • 工具类网站设计网上开店铺
  • 教育类门户网站软件下载类型网站怎么做
  • 关于网站运营的问题小程序商城一般哪家好
  • 秦皇岛网站制作公司十堰秦楚网主页
  • 网站建设发展历程网站建设制作模板
  • 合肥网站建站推广如何申请自己的网站
  • 印度网站开发成本网页设计用到什么软件
  • 优化网站有哪些方法聊城网站推广怎么做
  • 怎么样免费做公司网站线上销售怎么做
  • 网站建设的博客wordpress目录怎么制作
  • 长沙一站式网站建设什么是淘宝seo
  • 建设信用交通网站 省西宁市住房和城乡建设局网站
  • 株洲做网站那家好深入浅出wordpress 中文
  • 上国外网站哪个dns快精准营销定义
  • 网站开发对算法有要求么网上银行建设银行
  • 做网站网上怎么挂公告设计公司包装
  • 怎样做jsp网站高端网吧
  • 乌尔禾区做网站哪里好郑州网站推广信息
  • 网站的建设和编程福建省住房建设厅网站6
  • 建设银行网站首页打微信公众平台官网电话
  • 杭州个人做网站装饰公司营销型网站设计
  • 做一个什么样的网站广告图片
  • 臭臭猫网站建设教育机构logo
  • 网站开发公司+重庆阿里网站域名要购卖吗
  • 广州建站费用特色个人网页设计
  • 十堰做网站中国交建平台
  • 制作公司网站 价格湛江网站建设技术托管
  • 学习网页制作的网站福州市建设管理处网站
  • 企业建站系统 哪个好aspcms网站地图模板
  • 企业网站怎么注册有没有做网站的公司