cache 本地&分布式(-redis) & JSON对象转换

本地缓存

最简单的cache, 做一个map就行

复制代码
    private final Map<String,List<User>> cache=new HashMap<>();
    @Override
    public List<User> queryUserList() {
        List<User> userlist =  cache.get("userlist");
        if(userlist==null){
            List<User> users = userMapper.queryUserList();
            cache.put("userlist",users);
            return users;
        }
        return cache.get("userlist");
    }
复制代码

本地缓存在分布式情况下的缺点

1.多加载(浪费空间)

2.数据一致性问题 

 

分布式缓存: 利用redis

RedisTemplate<object,object>

StringRedisTemplate<String,String>  (使用)

将需要存的对象转为json存入redis

复制代码
    @Autowired
    StringRedisTemplate redisTemplate;

//    private final Map<String,List<User>> cache=new HashMap<>();
    @Override
    public List<User> queryUserList() {
        String userlist =  redisTemplate.opsForValue().get("userlist");
        if(userlist==null){
            List<User> users = userMapper.queryUserList();
            String s = JSON.toJSONString(users);
            redisTemplate.opsForValue().set("userlist",s);
            return users;
        }
        List<User> users = JSON.parseObject(userlist, new TypeReference<List<User>>() {
        });
        return users;
    }
复制代码

 

redisTemplate.opsForList().leftPushAll(key, skuIds);  //从左边依次放整个集合

List<String> skuIds
// 绑定秒杀商品hash   之后要保存什么就直接用  operations去操作就行
                BoundHashOperations<String, Object, Object> operations = redisTemplate.boundHashOps("seckill:skus");


if (!operations.hasKey(skuKey))

 String jsonString = JSONObject.toJSONString(redisTo);
                            operations.put(skuKey, jsonString);   //两个str

 

posted @   磕伴  阅读(163)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示