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

门户网站建设工作的自查报告5g国产天天5g天天

门户网站建设工作的自查报告,5g国产天天5g天天,网站费用标准,上网出现危险网站1、提前设置热点数据永不过期 2、分布式中用redis分布式锁(锁可以在多个 JVM 实例之间协调)、单体中用synchronized(锁只在同一个 JVM 内有效) 编写服务类 import com.redisson.api.RLock; import com.redisson.api.RedissonCli…

1、提前设置热点数据永不过期

2、分布式中用redis分布式锁(锁可以在多个 JVM 实例之间协调)、单体中用synchronized(锁只在同一个 JVM 内有效)

 编写服务类
import com.redisson.api.RLock;
import com.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;@Service
public class CacheService {@Autowiredprivate StringRedisTemplate redisTemplate;@Autowiredprivate RedissonClient redissonClient;private static final String HOT_DATA_KEY = "hotData";private static final String LOCK_KEY = "hotDataLock";public String getHotData() {// 尝试从 Redis 中获取热点数据String hotData = redisTemplate.opsForValue().get(HOT_DATA_KEY);if (hotData == null) {// 获取分布式锁RLock lock = redissonClient.getLock(LOCK_KEY);try {// 尝试加锁,最多等待100ms,锁的过期时间为30秒if (lock.tryLock(100, 30, TimeUnit.SECONDS)) {try {// 再次检查缓存是否过期(双重检查)hotData = redisTemplate.opsForValue().get(HOT_DATA_KEY);if (hotData == null) {// 缓存确实过期,从数据库加载数据hotData = loadHotDataFromDatabase();// 将数据存入 Redis,设置过期时间为10分钟redisTemplate.opsForValue().set(HOT_DATA_KEY, hotData, 10, TimeUnit.MINUTES);}} finally {// 释放锁lock.unlock();}}} catch (InterruptedException e) {Thread.currentThread().interrupt();}}return hotData;}private String loadHotDataFromDatabase() {// 模拟从数据库加载数据return "Hot Data from Database";}
}
模拟多个请求
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;@Component
public class CacheTestRunner implements CommandLineRunner {@Autowiredprivate CacheService cacheService;@Overridepublic void run(String... args) throws Exception {// 模拟 10 个请求同时访问热点数据ExecutorService executorService = Executors.newFixedThreadPool(10);for (int i = 0; i < 10; i++) {executorService.submit(() -> {String hotData = cacheService.getHotData();System.out.println("Thread " + Thread.currentThread().getId() + " got hot data: " + hotData);});}executorService.shutdown();}
}

Thread 12 got hot data: Hot Data from Database
Thread 13 got hot data: Hot Data from Database
Thread 14 got hot data: Hot Data from Database
...

所有线程最终都会获取到相同的数据,但只有第一个线程会去加载数据,避免了缓存击穿问题。

单体应用

在单体应用中,所有请求都运行在同一个 JVM 实例中,因此可以使用 synchronized 来同步线程。

java复制

@Service
public class CacheService {@Autowiredprivate StringRedisTemplate redisTemplate;private static final String HOT_DATA_KEY = "hotData";private static final Object lock = new Object(); // 用于同步的锁对象public String getHotData() {// 尝试从 Redis 中获取热点数据String hotData = redisTemplate.opsForValue().get(HOT_DATA_KEY);if (hotData == null) {synchronized (lock) { // 使用 synchronized 同步// 再次检查缓存是否过期(双重检查)hotData = redisTemplate.opsForValue().get(HOT_DATA_KEY);if (hotData == null) {// 缓存确实过期,从数据库加载数据hotData = loadHotDataFromDatabase();// 将数据存入 Redis,设置过期时间为10分钟redisTemplate.opsForValue().set(HOT_DATA_KEY, hotData, 10, TimeUnit.MINUTES);}}}return hotData;}private String loadHotDataFromDatabase() {// 模拟从数据库加载数据return "Hot Data from Database";}
}

文章转载自:

http://qRwTARPx.zwgbz.cn
http://QUGnvY61.zwgbz.cn
http://uarWhSxr.zwgbz.cn
http://YVNNQdnS.zwgbz.cn
http://UUdq9ZY7.zwgbz.cn
http://KKSS6msR.zwgbz.cn
http://4vwpVYI8.zwgbz.cn
http://E0kyRzms.zwgbz.cn
http://qsxTCMev.zwgbz.cn
http://Jfhwc43E.zwgbz.cn
http://4KL1H5d1.zwgbz.cn
http://fCc2PiCw.zwgbz.cn
http://tKxvqytN.zwgbz.cn
http://RTmcEr4W.zwgbz.cn
http://hROTHADq.zwgbz.cn
http://I6rztybB.zwgbz.cn
http://6aF0rQGQ.zwgbz.cn
http://uJRzx3Rt.zwgbz.cn
http://vQorTyL1.zwgbz.cn
http://L5hmCnvC.zwgbz.cn
http://AKDlphY5.zwgbz.cn
http://EHebPS6I.zwgbz.cn
http://hFwehgQo.zwgbz.cn
http://RvZE4cOr.zwgbz.cn
http://ujzOrjrh.zwgbz.cn
http://22qDRkfE.zwgbz.cn
http://eX2Eke8s.zwgbz.cn
http://ZALHuC8K.zwgbz.cn
http://MxIQcafX.zwgbz.cn
http://BYMZBhVc.zwgbz.cn
http://www.dtcms.com/wzjs/662928.html

相关文章:

  • 郑州手机网站制作公司哪家好微商软件商城24小时
  • getpage wordpress使用详解seo做的很好的网站
  • 自己怎么建个网站企业网上品牌推广
  • 网站建设的案例教程视频建设纺织原料网站
  • 综治暨平安建设网站wordpress 文章系统
  • 自己做网站原始代码行业网站作用
  • 东莞网站建站模板九一人才网找工作赣州
  • 无锡 网站制作 大公司网站建设 好发信息网
  • 网站建设说明常熟做网站公司排名
  • 网站设计 图片重庆网站建设夹夹虫公司
  • 四川省微信网站建设推广佛山市手机网站建设公司
  • 网站 手机版云梦模板网站优缺点
  • 网站建设时间 人力及成本估算重庆网上房地产网
  • 怎样通过网址浏览自己做的网站销售网站的优秀标准
  • 电子商务网站建设与实验优质外链平台
  • 济南市个人网站制作30人的网站建设公司年利润是多少
  • 上海网站建设 网站开推广图片大全
  • 为什么做网站会被批捕小程序制作的方法有哪些
  • 有做ppt的兼职网站吗市场营销推广策略
  • 青岛网站建设技术外包上海软件开发培训
  • 建立html网站seo网站快速
  • 海口网站建设方面宁德做网站的公司
  • 如何做企业网站方法WordPress添加PHP代码
  • 网站百度不收录的原因Wordpress搜索结果页插件
  • 南阳网站推广优化公司哪家好开网络网站建设公司的优势
  • 网站页面怎么设计那些网站可以给产品做推广
  • 网站开发预算农业科技公司网站建设
  • 网站域名费怎么查询宁波seo搜索优化费用
  • 外贸网站建设哪里好校园网站开发
  • 做网站的工具怎么使用网站页面打开速度慢