关于redis 重启后,数据库中数据未及时加载到redis的问题
2015-11-12 16:35
645 查看
现在项目用到了redis,这样极大的提高了数据提取的效率,但如果逻辑处理时不小心,就会给自己泡坑
1.完全依赖后台提供的redis数据,当redis占用率高时进行重启时(一般都不进行落地),数据丢失。
当数据还没有从数据库加载到redis时,而此时又有新数据写入,此时该 缓存再读取的时候,发现缓存存在,而直接进行显示。就造成显示的数据不正确
的解决方式有二:
在总入口做预加载,解决说redis重启的问题,但是当没有要缓存的数据的时候,就会造成频繁的扫库
在插入数据的时候zadd 时,做exists的key存在性判断,只有在存在的情况下才加入缓存。当用的时候,做完全加载
2.某些场景,要根据有没有缓存来判断数据是否显示。最好在处理不显示的时候,只清其内容,还不清其key,用内容来判断是否显示。
否则,不显示就删除key的情况,就造成key不存在,而大面积的扫数据库,给数据库带来压力
1.完全依赖后台提供的redis数据,当redis占用率高时进行重启时(一般都不进行落地),数据丢失。
当数据还没有从数据库加载到redis时,而此时又有新数据写入,此时该 缓存再读取的时候,发现缓存存在,而直接进行显示。就造成显示的数据不正确
的解决方式有二:
在总入口做预加载,解决说redis重启的问题,但是当没有要缓存的数据的时候,就会造成频繁的扫库
在插入数据的时候zadd 时,做exists的key存在性判断,只有在存在的情况下才加入缓存。当用的时候,做完全加载
2.某些场景,要根据有没有缓存来判断数据是否显示。最好在处理不显示的时候,只清其内容,还不清其key,用内容来判断是否显示。
否则,不显示就删除key的情况,就造成key不存在,而大面积的扫数据库,给数据库带来压力