我在查询时 将 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);
}
1、要求性能:如果改动很少,只改了一个字段,可以考虑从reids拿出来后在指定的对象中进行修改,然后redis重新set这个新的值;同理增加就时list.add、删除就是list.remove。但是要注意index的变化哟
2、不要求性能:直接查询后redis覆盖
拿修改后的值重新覆盖一下redis里的值就好了,这不是什么耗时操作
你在保存和读取的时候都做了序列化反序列化操作了、增删改能感知的情况下直接覆盖,没有疑问。