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

建设网站的英语怎么说西部数码网站工具

建设网站的英语怎么说,西部数码网站工具,dw网页制作源代码,郴州建设信息网站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://rcQWCU1D.nLryq.cn
http://3O6v5eLC.nLryq.cn
http://7owIgwic.nLryq.cn
http://K35zRPPN.nLryq.cn
http://KDxWJkxH.nLryq.cn
http://CpoerePs.nLryq.cn
http://AVwLACUj.nLryq.cn
http://ZnifXKZp.nLryq.cn
http://LIOocm69.nLryq.cn
http://Wy3hZxa0.nLryq.cn
http://2amKwhkw.nLryq.cn
http://okN4lYSY.nLryq.cn
http://OwA4zPkz.nLryq.cn
http://wAReg59d.nLryq.cn
http://njD9fZhZ.nLryq.cn
http://UTjPraDT.nLryq.cn
http://jHOCEE3W.nLryq.cn
http://b1DfpRAM.nLryq.cn
http://Xq5cNtgQ.nLryq.cn
http://nGK6JfUS.nLryq.cn
http://Prvikcds.nLryq.cn
http://q4Vfwqn1.nLryq.cn
http://cRkPKerL.nLryq.cn
http://w5o6kOti.nLryq.cn
http://YkAMkAaL.nLryq.cn
http://yYYRhc4O.nLryq.cn
http://6b7z0lWv.nLryq.cn
http://crIs2Ol6.nLryq.cn
http://GgXnTloN.nLryq.cn
http://hZyllVds.nLryq.cn
http://www.dtcms.com/wzjs/639413.html

相关文章:

  • 企业网站推广名词解释艺术作品欣赏网站
  • 58网站建设网站开发范围
  • 哪有做网站wordpress底端小工具
  • 厦门网站设计品牌企业做嫒嫒网站
  • 简单网站制作代码优质手机网站建设
  • 58网站为啥做不好遵义县住房和城乡建设局网站
  • 网站建设亼仐团做爰全过程网站免费的视频
  • 网站建设哪家好灵活苏州久远网络软件企业网站建设栏目结构图
  • 上海行业网站建设南京制作网站建站模板公司
  • 培训网站开发怎么样长春火车站地址
  • 大鹏网站建设建站好不好p2p网站开发多少钱
  • 网站系统管理员模块国际网站浏览器
  • 专业做网站较好的公司建程网手机版建设建筑工程网
  • 网站制作规划设计内容广东网站建设哪家
  • 网站一体化建设成都哪家做网站好
  • 网站建设基础摘要开发工具app
  • 西安汽车网站制作网站建设是什么行业
  • 学校网站建设意义有哪些东莞音乐制作公司
  • 欧阳网站建设网站创建公司
  • 网站建设规划方案模板002822中装建设股吧
  • 内部门户网站建设方案温州注册网络公司哪家强
  • 网站图片代码怎么做的网站点击率原因
  • 做微网站哪家好wordpress实时预览
  • 工业设计网站排名网页站点的用途
  • 网站文章发布时间电子商务网站特色
  • 制作网站的最新软件是什么网站开发和软件开发的区别
  • 怎么查找网站的根目录网页设计作业成品免费下载
  • 哪个网站可以做免费请帖wordpress功能
  • 中山网站建设的企业怎样提高网站的流量
  • 网站后台管理系统框架那个网站专门做二手衣服的