沐风Cc 2018-12-03 05:56 采纳率: 100%
浏览 1938
已采纳

将 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条回答 默认 最新

  • 小达哥的垃圾桶 2018-12-03 07:55
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题