我现在正在做一个大项目,我们决定在我们的系统中使用redis作为缓存,所以当我们将一些数据放在缓存中,然后原始数据被更改时,我们怎么知道呢?在这种情况下,最好的做法是什么?删除旧数据并替换新数据?是否有任何机制只取代已更改的部分?
发布于 2016-06-05 15:50:47
在使用redis为大型应用程序缓存时,要记住的几件事:
1)尽可能地定位您的缓存。例如,如果您为每个需要缓存的用户提供了5个信息。与其一起访问它们,不如对每个信息进行简单的缓存。
2)选择合适的数据结构。尽可能使用redis‘set、散列、排序集和位操作。
3)确保您的系统能够正常工作,即使没有redis (以克服停机时间)。也就是说,签入redis是否有服务,如果没有从dB获得并填充在缓存中。这样,即使redis不可用,您也可以从DB获得值。
要回答你的问题,你可以用三种方法来回答
1)您可以在DB旁边维护缓存。在DB中事务成功期间,更新缓存。这样你就不会泄露任何信息。但是要实现这一点有点困难。
2)每当事务开始时,drop缓存就属于它。这样,缓存中的值将被删除,并将在连续的读取请求期间从DB中获取。
3)在缓存和数据库中保持上次访问或创建的时间。每次阅读时,对它们进行比较并作出决定。这是最可靠的解决办法。
https://stackoverflow.com/questions/37641810
复制相似问题