java - 使用带有选项的分布式缓存来处理缓存未命中

标签 java caching redis memcached distributed-caching

我的用例如下:

应用程序客户端使用分布式缓存(Memcached/Redis/等)来缓存数据库输出。我想添加一项对应用程序客户端隐藏的功能 - 如何处理缓存缺失 例如应用程序客户端仅要求获取分布式缓存的键值(不知道数据库详细信息)。现在,它希望分布式缓存能够处理缓存未命中的情况 - 从关系数据库获取数据并缓存它。

Redis/Memcached 好像没有提供这样的功能。我是否遗漏了一些东西,或者我应该为这个用例寻找一些其他工具/框架。

最佳答案

您需要使用直读/直写缓存模式,其中客户端应用程序将缓存视为主要数据存储并在缓存上执行所有读写操作。另一方面,缓存将负责使用部署的直读/直写提供程序将自身与数据库同步。

在读取操作时,如果缓存中不存在数据,缓存将自行从数据库加载数据,避免缓存丢失。

阅读this article作者:Iqbal Khan,了解有关通读/后写缓存的更多详细信息。

此功能在 TayzGrid 中可用由阿拉奇软件。 NCache的Java客户端也提供了这个功能。

关于java - 使用带有选项的分布式缓存来处理缓存未命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28144493/

相关文章:

java - 超出 BufferedReader 的大小限制?

java - 了解 google play 给出的 ANR 堆栈跟踪

redis - Jedis Client的RedisTemplate如何在一次调用中获取多个列表值

node.js - Connect.sid 始终未定义并且 req.session ID 不断重置

javascript - xhtmlrenderer xhtml 到 pdf 字体问题,甚至不能使用字体系列 : Verdana;

Java线程问题

android - 没有可用于离线模式的gradle缓存版本

c# - NHibernate 哪个缓存用于 WinForms 应用程序

caching - Magento 中不允许序列化?

ruby - 在多线程 Rails 环境中使用 Redis 的最佳方式是什么? (彪马/Sidekiq)