首页 > 其他 > 详细

18.缓存

时间:2021-08-16 23:01:20      阅读:34      评论:0      收藏:0      [点我收藏+]

1.哪些数据适合放入缓存

即时性,数据一致性要求不高的

访问量大且更新频率不高的数据(读多,写少)

距离:物流信息,并不是每走一米就要更新一次

2.本地缓存的问题

Map<> catche=new Map<>();

对于分布式系统,第一次数据进入第一个微服务,缓存进去

第二次想拿数据的时候负载均衡到了第二个微服务,这样就拿不到缓存了

而且如果修改了数据,会产生数据一致性的问题,本地缓存在分布式系统下是不可靠的

3.项目整合redis测试

product项目引入依赖

<!--redis依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

yml文件

技术分享图片

 

 

 使用配置好的StringRedisTemplate-》可以在RedisAutoConfiguration里查看配置形象

基本就用前五个就够了 Zset是带排序的集合

技术分享图片

 

 

 测试

技术分享图片

 

 

 4.将redis加入业务逻辑

技术分享图片

@Override
    public Map<String, List<Catalog2Vo>> getCatelogJson() {
        String catalogJson = stringRedisTemplate.opsForValue().get("catalogJson");
        //如果缓存中没有
        if(StringUtils.isEmpty(catalogJson)){
            //查询数据库
            Map<String, List<Catalog2Vo>> db = this.getCatelogJsonFromDB();
            //查到的数据放入缓存
            //缓存中存的所有对象都应该是json字符串,因为他是跨语言跨平台的兼容的--序列化过程
            String s = JSON.toJSONString(db);
            stringRedisTemplate.opsForValue().set("catalogJson",s);
            return db;//直接把数据库查到的东西返回
        }
        //反序列化得到map
        TypeReference<Map<String, List<Catalog2Vo>>> typeReference = new TypeReference<Map<String, List<Catalog2Vo>>>() {
        };
        Map<String, List<Catalog2Vo>> stringListMap = JSON.parseObject(catalogJson, typeReference);
        return stringListMap;
    }

 

压力测试吞吐量达到了1200+

技术分享图片

压力测试内存泄漏问题--新版本springboot好像解决了,我并没有遇到这个问题

堆外内存溢出异常:OutOfDirectMemoryError

原因:springboot2.0以后默认使用lettuce作为操作redis的客户端,他使用netty进行网络通信,这其实是lettuce操作netty产生的bug

netty如果没有指定堆外内存,会使用-Xmx100m指定的内存,可以通过-Dio.netty.maxDirectMemory调大堆外内存,但是只是延后而已

真正的解决方案:

1.升级lettuce客户端

2.切换使用jedis--这是一个老版客户端

在springboot的依赖下排除io.lettuce.lettuce-core包,增加redis.clients.jedis依赖

 

18.缓存

原文:https://www.cnblogs.com/wuyimin/p/15149202.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!