关于缓存list,对list中的数据进行操作,如何更新缓存?

如:
缓存随意,假如我存放了一个list至缓存,list中有两个obj1,obj2对象。
我对obj1对象进行修改,删除obj2对象。
按照正常业务,缓存中的这个list也应该进行更新,但是我如何根据我的修改或者删除操作知道那个list中有我修改的数据?
最常见的应用:一个数据列表,在table上对某条数据进行了修改,就需要更新缓存了(这种还应该可以获取到对应数据的key,但是我是删除操作的话,就应该该分页数据缓存缓存后面所有数据页才对)后
类似的各种业务,你们是如何设计如何解决的?我之前见过一个,公司写了个定时任务去扫描该大类的所有缓存,找到即操作。。。蛋疼...

u013801027
u013801027 我现在跟你是一样的问题,不知道你解决了没有.主要是被改过的数据,不能确定之前保存到哪些缓存里面了,所以没办法把每个有关联的缓存都找出来去修改
大约 2 个月之前 回复

2个回答

对于缓存list的问题,我一般的做法是若相关数据有修改,则将缓存中的list清除,将修改结果保存到数据库中,下次查询缓存中无该list,则会去查询数据库,并将数据库中查询的结果存入缓存。

sun1021873926
夕阳雨晴 回复lc_luochao: 这就要衡量是查询一次数据库划算还是循环遍历缓存中的redis划算了
3 年多之前 回复
lc_luochao
lc_luochao 我感觉这样只是适合单个对象,不适合list。这样的话我不可能去清楚所有和该对象相关的缓存吧
3 年多之前 回复

常见做法,你存list肯定会要设置一个key,如果有修改,先用key把缓存里面的list删掉,然后把新的放进去即可。

一般是在修改的地方这样做:

1.修改相关数据,并保存数据库;
2.按照key删除缓存中的数据;
3.重新获取数据并存入缓存(这一步也可以在查询的时候做)
3.1 (查询的时候做),查询时先判断缓存中是否有相应结果,有则直接获取,没有就从数据库查询,拿到结果后放到缓存。

dcxy0
Q544471255 回复lc_luochao: 那你这样,修改一次,就把缓存都清掉,重新建缓存,适用于数据不多的情况,数据太多,太频繁修改的话,其实就不如不用缓存了。
3 年多之前 回复
lc_luochao
lc_luochao 但是我这个数据可能存在n个list中(我同样的方法,也可能存在在不同的key里面),我修改后,是不能知道那些key对应的list里面有值的。一般来说也就知道当前取出来的key对应的list吧。
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问