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

深圳卫健委最新发布seo首页排名优化

深圳卫健委最新发布,seo首页排名优化,做网站九州科技,深圳公司标牌制作目录 Redisson 整合Redisson RLock RReadWriteLock RSemaphore RCountDownLatch 优化三级分类缓存 缓存一致性问题 双写模式 失效模式 脏数据解决 Redisson 提供redis分布式锁(Distributed locks with Redis)的java客户端 整合Redisson 引入 …

目录

Redisson

整合Redisson

 RLock

RReadWriteLock

RSemaphore

RCountDownLatch

优化三级分类缓存

缓存一致性问题

双写模式

失效模式

脏数据解决


Redisson

提供redis分布式锁(Distributed locks with Redis)的java客户端

整合Redisson

引入

        <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.12.0</version></dependency>

程序化配置

@Configuration
public class RedissonConfig {@Value("${spring.redis.host}"+":"+"${spring.redis.port}")private String singleAddress;@Bean(destroyMethod = "shutdown")public RedissonClient redisson() throws IOException {Config config = new Config();/*SingleServer() 单节点模式redis:// redis 连接协议*/config.useSingleServer().setAddress("redis://"+singleAddress);return Redisson.create(config);}
}

 RLock

可重入锁(Reentrant Lock)它允许同一个线程多次获取同一把锁而不会产生死锁。

RLock lock = redisson.getLock("myLock");// 尝试获取锁,最多等待10秒,锁有效期30秒
boolean res = lock.tryLock(10, 30, TimeUnit.SECONDS);
if (res) {try {// 业务代码} finally {lock.unlock();}
}
  1. 可重入性:同一线程可多次获取同一把锁

  2. 锁续期:内置看门狗机制自动续期

  3. 公平锁:支持公平锁和非公平锁

  4. 锁释放:确保只有锁持有者能释放锁


RReadWriteLock

读写锁,它允许多个读操作同时进行,但写操作是排他的。

RReadWriteLock rwLock = redisson.getReadWriteLock("myReadWriteLock");
RLock readLock = rwLock.readLock();  // 获取读锁
RLock writeLock = rwLock.writeLock(); // 获取写锁
writeLock.lock();  // 先获取写锁
try {// 写操作...// 保持写锁的同时获取读锁(锁降级)readLock.lock();try {// 读操作...} finally {// 注意:这里不能释放写锁}// 可以继续持有写锁做其他操作
} finally {writeLock.unlock();  // 最后释放写锁// 此时仍持有读锁
}
  1. 读写分离

    • 多个线程可以同时持有读锁

    • 写锁是排他的,有写锁时不能有读锁或其他写锁

  2. 可重入性

    • 读锁和写锁都支持可重入

    • 同一线程可以多次获取同一把读锁或写锁

  3. 锁降级

    • 支持将写锁降级为读锁

    • 但不支持读锁升级为写锁(会死锁)

  4. 公平性选择

    • 支持公平和非公平两种模式


RSemaphore

 信号量,它允许多个线程/进程在分布式环境中协调对共享资源的访问

// 获取信号量实例(初始许可数为5)
RSemaphore semaphore = redisson.getSemaphore("mySemaphore");
semaphore.trySetPermits(5);  // 初始化许可数量// 获取1个许可(阻塞直到可用)
semaphore.acquire();try {// 访问受限资源accessLimitedResource();
} finally {// 释放许可semaphore.release();
}
  1. 资源限制:控制同时访问特定资源的线程/进程数量

  2. 分布式支持:跨JVM、跨服务器的协调能力

  3. 公平性选择:支持公平和非公平两种模式

  4. 可重入:支持同一线程多次获取许可

  5. 超时机制:支持尝试获取许可的超时设置

典型应用场景

  1. 限流控制:限制系统并发请求数

  2. 资源池管理:如数据库连接池控制

  3. 任务调度:限制同时执行的任务数量

  4. API访问限制:控制第三方API调用频率


RCountDownLatch

闭锁,它允许一个或多个线程等待其他线程完成操作后再继续执行。

RCountDownLatch latch = redisson.getCountDownLatch("myLatch");// 初始化计数器为5
latch.trySetCount(5);// 减少计数器(每个工作线程完成后调用)
latch.countDown();//获取当前计数
long remaining = latch.getCount();// 等待计数器归零(阻塞)
latch.await();// 带超时的等待
boolean reached = latch.await(10, TimeUnit.SECONDS);

  1. 一次性使用:计数器归零后不能重置(与JDK的CountDownLatch一致)

  2. 等待/通知机制:线程可以等待计数器归零

  3. 可视化监控:可通过Redis直接查看当前计数状态

典型应用场景

  1. 分布式任务同步:等待多个分布式任务完成

  2. 系统初始化:等待所有服务初始化完成

  3. 批量处理:等待所有子任务处理完成

  4. 测试协调:分布式测试中的线程协调


优化三级分类缓存

    @Overridepublic Map<String, List<Level2CategoryVo>> getLevel2AndLevel3Category() {//1.先从缓存中获取 catalogJsonValueOperations<String,String> valueOperations = redisTemplate.opsForValue();String catalogJson = valueOperations.get("catalogJson");Map<String, List<Level2CategoryVo>> res = null;if(StringUtils.isEmpty(catalogJson)){//缓存中无对应数据,查询数据库res = getCatalogJsonFromDBWithRedissonLock();}else{res = JSON.parseObject(catalogJson,new TypeReference<Map<String, List<Level2CategoryVo>> >(){});}return res;}/*** 获取 Redisson 分布式锁,查询数据库* @return*/private Map<String, List<Level2CategoryVo>> getCatalogJsonFromDBWithRedissonLock(){Map<String, List<Level2CategoryVo>> res = null;RLock lock = redisson.getLock("CatalogJson-Lock");lock.lock();//成功获取到锁try {res = getCatalogJsonFromDB();}finally {lock.unlock();}return res;}

缓存一致性问题

双写模式

修改数据库,并修改缓存。

    失效模式

    修改数据库后,删除缓存,下一次查询时缓存数据。

    脏数据解决

    俩种模式都会产生暂时的脏数据,解决方案:

    1. 读写锁
    2. 过期时间,保证最终一致性
    3. 一致性要求高的数据,不存入缓存,应直接查询数据库

    http://www.dtcms.com/wzjs/198299.html

    相关文章:

  1. 网站制作实例教程网站建设报价单模板
  2. 谷歌seo搜索引擎下载广州百度seo代理
  3. 电子购物网站的设计与实现百度保障中心人工电话
  4. 做五金生意什么网站做比较好企业培训师资格证报考2022
  5. 收费图片网站seo优化标题
  6. 网站制作的评价it培训机构哪个好一点
  7. 学院网站板块百度快照怎么删除
  8. 手机端h5网站模板下载上海最近三天的新闻
  9. PHP 5 MySQL动态网站开发指南百度店铺
  10. 怎么做淘宝返利网站网络推广公司哪家做得好
  11. 太仓家政保洁公司seo免费
  12. 北京网站设计制作百度推广公司怎么代理到的
  13. 网站建设com网页设计与制作步骤
  14. 网站上传网站手机优化
  15. 郑州做网站建设公司哪家好今天最近的新闻
  16. 山西做网站的企业360手机优化大师安卓版
  17. 百度做的网站后台怎么建设最好的网络推广方式
  18. 办公厅政府网站建设3d建模培训班一般多少钱
  19. 网站建设 开发的团队需要几个人百度客服在线咨询人工服务
  20. 网站建设实验结论最新足球消息
  21. 做网站怎么开发客户源保定关键词排名推广
  22. 红色网站建设福州短视频seo方法
  23. 网站降权该怎么做百度账号购买网站
  24. 广告公司招聘哪些职位网站排名优化
  25. c2c代表性企业网站热点新闻事件今日最新
  26. 做跨境电商需要哪些条件廊坊seo优化
  27. 天津葛沽 网站建设公司进入百度
  28. 如何做单页网站视频网站的开发流程
  29. 述建设一个网站的具体步骤最新域名查询
  30. 微网站 pc端网站开发网站排名优化培训