场景:
我这边需要做一个用户账号体系,涉及到的权限信息我这边在登陆的时候会缓存,后续如果有人改动权限,则需要全部清空。比如:角色关联的菜单有人修改了,那么依赖这个角色的全部人员都要删除缓存。
网上大多是keys先查key在通过mulit批量删除,这样也可以,不过redis的keys查询很慢,数据量比较大的时候可能会导致redis卡死,但是springboot集成的redis组件,redistemplate并没有scan这个操作。
用pipelined 会好点,但是还有有点疑问,只能这么批量查询再删除吗?或者通过lua脚本模糊删除?
各位是怎么实现的?有好的设计和建议吗?谢谢
我们遇到 也没有正面解决,通过python 做任务 删除
修改key的前缀就可以了,每次清理缓存后自动变更一次前缀,比如清理前key是a_id_xx,修改后再查询就变成b_id_xx。当然特别提醒设置好redis的内存限制,所有的key都设置过期时间,redis会自行慢慢清理。
再一种,在redis建立单独的库进行缓存,需要删除的时候,直接用 FLUSHDB 命令达到全部清空的目的
角色关联的菜单有人修改了,为什么要一下子删除:删除所有缓存?如果是我的话,我认为谁登陆,这个人相关数据在删,或者重新配置,而不是删除所有人
很简单,自己扩展一个类就行
里面用到了工具类
或者你直接这样写也行