我一直在研究几个缓存框架。即Memcached/Couchbase、AppFabric、Redis、MongoDB
好的.. 其中一些实际上是缓存框架,另一些是“文档存储”。
现在问题来了…… 我经常遇到我根本不知道所有缓存键(例如所有缓存的产品)但例如我想确保所有缓存的产品都被驱逐的情况。使用 Runtime.MemoryCache 我可以使用基于密钥的依赖项,例如,它允许我创建一个“产品”密钥,所有其他产品都使用这个密钥作为依赖项。现在,每当我删除“产品”时,与此密钥相关的所有密钥也会被驱逐。
不幸的是 MongoDB、Couchbase 和 Redis 没有这样的功能。至少我找不到任何关于它的信息。Redis 有 KEYS ( http://redis.io/commands/keys ) 命令,但文档告诉您不要在生产环境中使用它。
AppFabric 能够处理依赖关系,但还有其他缺点。例如,如果您使用标签(用作依赖项),您也必须使用区域。但是,如果您使用区域,则会失去高可用性。
无论如何......我的问题是:这是需要这些依赖项的非常罕见的场景,还是我评估的那些数据库/缓存框架的缺点?