社区网站7.10 优化网站的性能

本文介绍了社区网站性能优化的方法,重点讨论了本地缓存(如Ehcache、Guava、Caffeine)和分布式缓存(如MemCache、Redis)的使用,以及如何构建多级缓存策略防止缓存雪崩。通过示例展示了Caffeine的集成步骤,并使用JMeter进行性能测试,结果显示启用Caffeine后,首页吞吐量显著提升,性能得到显著改善。
摘要由CSDN通过智能技术生成

  本地缓存
(1)将数据缓存在应用服务器上,性能最好。
(2)常用缓存工具:Ehcache、Guava、Caffein等。
  分布式缓存
(1)将数据缓存在NoSQL数据库上,跨服务器。
(2)常用缓存工具:MemCache、Redis等。
  多级缓存
(1)>一级缓存(本地缓存)>二级缓存(分布式缓存)>DB
(2)避免缓存雪崩(缓存失效,大量请求直达DB,提高系统的可用性。
  本地缓存和redis缓存的示意图(本地缓存更普适,效率更高)
本地缓存比redis缓存效率高
缓存访问流程
  在github上搜Caffeine,第一个就是。在mvn库里搜caffeine,把com.github.ben-manes.caffeine粘贴到pom.xml。在application-properties里添加

# caffeine
# 15页,不一定是前15页,例如缓存热门帖子的15页,没必要缓存所有(浪费内存空间)
caffeine.posts.max-size=15
# 3分钟过期
caffeine.posts.expire-seconds=180

  在DiscussPostService类里,添加

	@Value("${caffeine.posts.max-size}")
    private int maxSize;

    @Value("${caffeine.posts.expire-seconds}")
    private int expireSeconds;

	//Caffeine核心接口:Cache,子接口LoadingCache(排队等),AsyncLoadingCache(异步,支持并发,不着急返回)

    //帖子列表缓存
    private LoadingCache<String,List<DiscussPost>> postListCache;

    // 帖子总数缓存
    private LoadingCache<Integer, Integer> postRowsCache;

	@PostConstruct
    public void init(){
   
        //初始化帖子列表缓存
        postListCache = Caffeine.newBuilder()    //先用caffine
                .maximumSize(maxSize)
                .expireAfterWrite(expireSeconds, TimeUnit.SECONDS)
                .build(new CacheLoader<String, List<DiscussPost>>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值