将 json数据 按照字符串的格式存到了 redis中,当我数据库做了增 删、改 ,该如何保 数据一致性呢

我在查询时 将 json数据(key为:user:01) 序列化并按照 字符串的格式存到了 redis中,当我做了 增、删、改之后,如何保证 键 user:01 数据的一致性呢? 还是说 我要重新覆盖该值?各位有什么好的解决方案吗

伪代码:

业务代码:
 List<Map> cList = rwDao.getAllRwHist3(paramsMap);
  jedis.setList("user:01",cList);

    底层源码:
     @Override
    public void setList(String key, List<?> list) {
        Jedis jedis = new Jedis("127.0.0.1",6379);
        try{
            if(list != null && !list.isEmpty()){
                jedis.set(key.getBytes(),SerializeUtil.serializeList(list));
            }else{
                jedis.set(key.getBytes(), "".getBytes());
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    @Override
    public List<?> getList(String key) {
        Jedis jedis = new Jedis("127.0.0.1",6379);
        if(jedis==null || !jedis.exists(key.getBytes())){
            return null;
        }
        byte[] data = jedis.get(key.getBytes());
        return SerializeUtil.unSerializeList(data);
    }

3个回答

1、要求性能:如果改动很少,只改了一个字段,可以考虑从reids拿出来后在指定的对象中进行修改,然后redis重新set这个新的值;同理增加就时list.add、删除就是list.remove。但是要注意index的变化哟
2、不要求性能:直接查询后redis覆盖

拿修改后的值重新覆盖一下redis里的值就好了,这不是什么耗时操作

mufeng633
沐风Cc 你的意思是 重新查询数据库将获取的数据,再重新覆盖吗? 如果是这样的话 性能会不会下降呢?还有什么好的解决方案吗
11 个月之前 回复

你在保存和读取的时候都做了序列化反序列化操作了、增删改能感知的情况下直接覆盖,没有疑问。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!