沐风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条)

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面