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

营销型网站建设好不好wordpress安装时数据库错误

营销型网站建设好不好,wordpress安装时数据库错误,公司网站乱码,一键建站平台一 Redis雪崩、穿透和击穿 1. Redis雪崩#xff1a; Redis雪崩是指在某一时刻#xff0c;缓存中大量的缓存数据同时失效或过期#xff0c;导致大量的请求直接打到后端数据库#xff0c;导致数据库负载剧增#xff0c;引发性能问题甚至崩溃。这通常是因为缓存数据的过期时…一 Redis雪崩、穿透和击穿 1. Redis雪崩  Redis雪崩是指在某一时刻缓存中大量的缓存数据同时失效或过期导致大量的请求直接打到后端数据库导致数据库负载剧增引发性能问题甚至崩溃。这通常是因为缓存数据的过期时间设置过于集中或者在同一时间段内大量缓存同时失效造成的。 2. Redis穿透  Redis穿透是指恶意或者异常请求查询一个不存在于缓存和数据库中的数据导致每次请求都会直接访问数据库增加了数据库负担。这可能是攻击者故意进行的也可能是由于业务逻辑问题造成的。 3. Redis击穿  Redis击穿是指某个热点数据突然失效或被删除而此时大量请求正好同时访问该热点数据导致这些请求都直接打到数据库上导致数据库压力激增。与雪崩不同击穿是因为某个特定的缓存数据失效导致。 示例 让我们以一个简单的Java代码示例来说明Redis雪崩、穿透和击穿的概念。 假设有一个电影信息查询系统用户可以根据电影ID查询电影信息。我们使用Redis作为缓存来存储电影信息但是只对热门电影设置了缓存其他电影没有被缓存。 Service public class MovieService {Autowiredprivate MovieRepository movieRepository;Autowiredprivate Jedis jedis;public Movie getMovieInfo(String movieId) {String cacheKey movie: movieId;String cachedInfo jedis.get(cacheKey);if (cachedInfo null) {Movie movie movieRepository.findById(movieId);if (movie ! null) {jedis.setex(cacheKey, 3600, movie.toString()); // 缓存1小时return movie;}}return Movie.fromString(cachedInfo);} }Redis雪崩示例 假设在某一时刻缓存中存储了很多电影信息这些缓存在同一时间内同时失效导致大量请求直接访问数据库造成数据库压力激增。 Redis穿透示例 有一个恶意用户不断发送不存在的电影ID每次请求都会绕过缓存直接查询数据库导致数据库压力增加。 Redis击穿示例 假设某个热门电影的缓存在某个时间点失效而在这个时间点正好有大量用户同时查询该电影信息导致所有请求直接访问数据库造成数据库压力激增。 二 解决方案 2.1 对缓存数据的过期时间进行随机化避免集中失效。 选择随机时间范围 首先你需要选择一个适当的随机时间范围用于分散缓存数据的过期时间。例如你可以选择在原始过期时间基础上添加一个随机的秒数这样每个缓存项的过期时间就会稍微有所不同。 生成随机时间 在获取缓存数据时生成一个随机的秒数然后将其添加到原始过期时间上得到一个新的过期时间。 设置缓存数据 将缓存数据存储到Redis中并设置使用上一步生成的新过期时间。   Service public class CacheService {Autowiredprivate Jedis jedis;public String getCachedData(String key) {String cachedData jedis.get(key);if (cachedData null) {// 查询数据库获取数据String dbData Database.queryData(key);if (dbData ! null) {// 生成随机的过期时间在1小时基础上随机增加0-300秒int originalExpireTime 3600; // 1小时的秒数int randomSeconds new Random().nextInt(300); // 0到300秒的随机数int cacheDuration originalExpireTime randomSeconds;// 将数据存储到缓存并设置随机过期时间jedis.setex(key, cacheDuration, dbData);return dbData;}}return cachedData;} }2.2 使用布隆过滤器来过滤恶意请求防止缓存穿透。 使用布隆过滤器来过滤恶意请求以防止缓存穿透是一种常见的防御策略。布隆过滤器是一种数据结构用于判断一个元素是否存在于集合中它可以高效地进行快速查询但可能会有一定的误判率。 下面是一个使用Spring Boot和布隆过滤器来防止缓存穿透的详细举例 步骤引入依赖 在Spring Boot项目中添加所需的依赖包括Spring Boot、Jedis和Google Guava用于实现布隆过滤器。初始化布隆过滤器 在启动时初始化一个布隆过滤器用于存储已查询的缓存键。查询缓存数据 在获取数据之前首先检查布隆过滤器如果缓存键可能存在则再查询缓存。import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.google.common.hash.BloomFilter; import com.google.common.hash.Funnels; import redis.clients.jedis.Jedis;Service public class CacheService {private final Jedis jedis;private final BloomFilterString bloomFilter;Autowiredpublic CacheService(Jedis jedis) {this.jedis jedis;this.bloomFilter BloomFilter.create(Funnels.stringFunnel(), 1000, 0.01); // 初始化布隆过滤器}public String getCachedData(String key) {if (!bloomFilter.mightContain(key)) { // 判断是否可能存在于集合中return null; // 不再查询缓存和数据库直接返回null}String cachedData jedis.get(key);if (cachedData null) {// 查询数据库获取数据String dbData Database.queryData(key);if (dbData ! null) {jedis.setex(key, 3600, dbData); // 缓存1小时bloomFilter.put(key); // 将键添加到布隆过滤器中return dbData;}}return cachedData;} }2.3 使用互斥锁例如分布式锁来防止击穿只允许一个请求去查询数据库其他请求等待或直接使用缓存。 使用互斥锁分布式锁来防止击穿是一种常见的策略可以确保在缓存失效的情况下只有一个请求能够去查询数据库其他请求需要等待该请求完成或直接使用缓存。下面是一个使用Spring Boot和Jedis实现分布式锁来防止击穿的代码示例 步骤1、引入依赖 在Spring Boot项目中添加所需的依赖包括Spring Boot和Jedis。2、获取分布式锁 在查询数据库之前使用分布式锁来确保只有一个请求能够进行数据库查询。3、释放分布式锁 在查询完成后释放分布式锁让其他请求能够继续执行Service public class CacheService {Autowiredprivate Jedis jedis;public String getCachedData(String key) {String cachedData jedis.get(key);if (cachedData null) {// 尝试获取分布式锁设置锁的过期时间防止死锁String lockKey lock: key;String lockValue lockValue;SetParams params new SetParams().ex(60).nx(); // 设置60秒过期时间只有不存在时才设置String acquiredLock jedis.set(lockKey, lockValue, params);if (acquiredLock ! null) {try {// 查询数据库获取数据String dbData Database.queryData(key);if (dbData ! null) {jedis.setex(key, 3600, dbData); // 缓存1小时return dbData;}} finally {// 释放分布式锁jedis.del(lockKey);}} else {// 等待一段时间后重新查询缓存try {Thread.sleep(200); // 可以根据实际情况调整等待时间} catch (InterruptedException e) {Thread.currentThread().interrupt();}// 重新查询缓存cachedData jedis.get(key);}}return cachedData;} }2.4 合理设置缓存策略确保热门数据始终保持缓存避免缓存雪崩。 确保热门数据始终保持缓存避免缓存雪崩需要采取一些合理的缓存策略。以下是一些常见的合理方案 1. 定时刷新缓存 使用定时任务或调度器定期刷新热门数据的缓存。这可以确保缓存中的数据始终保持最新避免数据过期。 2. 永不过期策略对于热门数据可以设置永不过期的缓存策略。但要注意如果热门数据发生变化需要手动更新缓存。 3. 热点数据预加载在应用启动时预先加载热门数据到缓存中确保缓存中存在最常用的数据。 4. 基于访问频率的过期策略 根据数据的访问频率动态调整过期时间。访问频率高的数据设置较长的过期时间访问频率低的数据设置较短的过期时间。 5. 分布式锁控制** 在缓存失效时使用分布式锁来防止多个请求同时查询数据库确保只有一个请求进行查询并更新缓存。 6. 降级策略 如果缓存失效可以暂时使用降级策略例如返回默认值或静态数据以避免直接访问数据库。 7. 多级缓存 使用多级缓存架构将热门数据存储在多个缓存层中例如内存缓存和分布式缓存以提高数据的访问速度和稳定性。 8. 请求合并 对于同时涌入的大量请求可以考虑将它们合并成一个请求只查询一次数据库然后将结果分发给多个请求。 9. 缓存预热 在系统负载较低的时候提前将热门数据加载到缓存中以减少在高负载时的数据库压力。 10. 动态缓存策略 根据系统的实际情况动态调整缓存策略例如根据时间段、节假日等因素来设置不同的缓存策略。 选择合适的方案取决于你的业务需求和系统特点。通常结合多个方案可以更好地保护热门数据避免缓存雪崩问题。
http://www.pierceye.com/news/205044/

相关文章:

  • 东莞网站设计价格wordpress的配置dns
  • 韶关网站建设公司电子商务网站建设考试重点
  • 网站左侧 导航小红书广告投放平台
  • 资阳住房和城乡建设厅网站重庆建设网站建站
  • 网站制作厂家电话多少女生学网络工程难吗
  • 网站建设要经历哪些步骤?网站建设岗位周计划
  • 贵阳网站制作工具福步外贸论坛网首页
  • 网站大全app下载任务发布平台
  • 专业商城网站建设哪家便宜河南做外贸网站的公司
  • seo博客网站东莞网络推广运营企业
  • 定制网站建设公司哪家好嘉兴网站建设多少时间
  • 快三竞猜网站建设wordpress 整站打包
  • 珠海好的网站制作平台微信音乐音频怎么关闭
  • asp.net 网站计数器响应式设计
  • 2017做那些网站致富小程序商城哪个平台好
  • 织梦制作网站如何上线做网站 当站长
  • 如何知道一个网站是用什么做的树莓派搭建wordpress
  • 怎么制作网站登录电子商务网上购物网站建设规划
  • 大连外贸网站制作做文案公众号策划兼职网站
  • 400网站建设推广通王网站内容管理系统
  • 上海专业网站制作开发wordpress 一级目录下
  • 要查询一个网站在什么公司做的推广怎么查济南集团网站建设报价
  • 手机静态网站建设课程设计报告形象型网站
  • 网站建设接单渠道百度网站内容
  • 企业网站pv是什么手机网站开发价格
  • 北京网站优化团队oppo开放平台
  • 购物商城外贸网站福州营销型网站建设公司
  • 白酒pc网站建设方案网站不符合个人备案性质
  • 做视频网站程序多少钱免费人体做爰网站
  • 做海外网站 服务器放哪网页设计师通常是设计两套ui吗