用于 .NET 的后写式缓存的 Redis 可扩展性

Redis extensibility for write-behind cache for .NET

是否可以利用 Redis 为 .NET 创建后写式或直写式缓存?理想情况下是透明缓存,由单个进程写入并支持从数据库加载丢失的数据,并每隔一段时间持久化脏块?

我已经谷歌搜索了几个小时,也许 google-fu 太生疏了,但我找不到任何类似的东西,但这似乎是一个常见的场景。

所以我基本上有两个问题:

  1. 有没有办法扩展 Redis(或这样的实现已经存在),使其定期转发脏块或从持久存储中加载丢失的块?

  2. 如果不是,在 Redis 中实施的适当方法是什么:

    a)发送一个“request”功能,等待数据出现在Redis中(writer进程要更新一个block,所以通知data进程将blocks加载到Redis中,然后等待blocks出现在缓存中),

    b) 数据服务定期轮询脏块(找到脏块,自动清除脏标志,保存到磁盘)?

是的,Redis 通过 RGSync 支持 Write Behind 和 Write Through Cache,这是一个 RedisGears 配方。查看演示 here.

其他链接,取决于您使用的是企业版还是开源版:https://docs.redislabs.com/latest/modules/redisgears/

https://redis.io/modules

我不确定我是否完全理解您的问题,但您可以尝试查看我最近发布的库 FusionCache ⚡

您可以通过使用 2 个功能的组合来实现您想要的(但同样,也许我弄错了):fail-safe + advanced timeouts 后台工厂完成。

简而言之:你可以缓存一些东西,比方说,2 分钟之后,将调用工厂来刷新数据,但如果出现问题(异常、超时等),将使用过期值再次直到工厂能够在后台完成,之后它会立即更新缓存。

这同样适用于丢失的缓存条目:由于避免了 multiple concurrent factory calls.[=14= 的优化,同一缓存键的所有并发调用者都将被阻止并且只会执行一个工厂。 ]

另一个有趣的功能是支持可选的分布式 2nd level 缓存,无需执行任何操作即可自动管理并与本地缓存保持同步。

如果你愿意给它一个机会,请告诉我你的想法。

/无耻插件