谢谢回复,我去了解下,不过不想介入Spring,只是想有没有办法封装一个单独的层或者方法来解决这个问题。 |
|
这个关redis什么事?你要保持数据一致性,删除数据后再删除缓存里面的数据就ok了,现在redis在可以登录客户端的情况下可以批量删除
redis-cli KEYS "test_*" | xargs redis-cli DEL 用代码的话一般都是先取出key,循环遍历在删除就ok了 |
|
还是不符合我的需要,我想要的不是根据某个方法或者类来缓存,而且Spring的失效还是以key为基础的。
|
|
关键是如果更新数据不是以key为条件,也不知道具体更新了多少数据,没有办法找出更新数据对应的缓存。 |
|
redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。
命令行的方式让redis进行snapshotting: redis-cli -h ip -p port bgsave aof方式: appendonly yes //启用aof持久化方式 # appendfsync always //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用 appendfsync everysec //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐 # appendfsync no //完全依赖os,性能最好,持久化没保证 |
|
对缓存了解比较少,缓存有提供除了根据key之外删除数据的方法吗?或者有什么办法在更新数据库的操作过程中获取被更新的数据的key? |
|
你总知道key的生成规则好不?你总知道更新的记录,根据记录总可以自己拼接key 了吧 |
|
我觉得你走入了一个误区了 |
|
可能还是太笨,我的意思是比如更新数据库的语句是update table_name set for = ‘bar’ where column_name = “”XXX””; |
|
50分 |
我去,你不会根据colunm_name=””XXX”” 把这些id查询出来吗?select id from table_name where colum_name=””XXX””;这不是解决了嘛,虽然多查询了一次数据库,但根据你描述的情况来看(你想要缓存立即同步),必须这样做 |
明白了,感谢 |