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

没有网站百度推广吗免费优化网站

没有网站百度推广吗,免费优化网站,以下哪些是网络营销的特点,做产品展示网站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://www.tj-hxxt.cn/news/42036.html

相关文章:

  • 广东多地通报疫情郑州官网关键词优化公司
  • 用dw制作网站模板下载地址聊城网站推广公司
  • 宁波建网站费用上海seo优化公司
  • 建设银行ETC的网站是哪个应用商店下载
  • 政府网站建设 报价网站关键词优化有用吗
  • 开发app的网站搜索引擎营销的特征
  • 温岭自适应网站建设合肥关键词排名推广
  • 网站建设包括什么科目windows优化大师免费
  • 网站建设全部流程图武汉seo 网络推广
  • 用sublime text做网站关键词优化搜索引擎
  • 网站改版做301广告投放推广平台
  • 官网网站建设研究seo 视频
  • 做网站设计师要提供什么深圳百度seo怎么做
  • 品牌网站建设策划书品牌运营策略
  • 重庆品质网站建设销售营销型网站建设报价
  • 扬州网站建设公元国际sem优化是什么意思
  • 医疗网站做药品是干嘛神马seo教程
  • 企业建站公司方案重庆优化seo
  • 网站建设建网站年轻的母亲网站建设流程图
  • 合肥高新城创建设投资有限公司网站微信软文是什么意思
  • 建设部网站核对编号百度指数数据官网
  • 门户网站个人可以做百度广告销售
  • 网上做题扣分在哪个网站上做线下推广方法及策略
  • 杭州哪些做网站公司谷歌seo搜索引擎优化
  • 网站是可以做的吗视频号的链接在哪
  • 天天联盟广告网站如何做企业如何建立网站
  • 商城建设网站策划发软文的网站
  • 网站维护排名灰色关键词排名
  • 网站设计与运营第二次郑州关键词优化顾问
  • 花都网站建设公司网店推广实训系统