在 .NET Core 中使用 Redis 进行分布式缓存和锁定

Distributed caching and locking with Redis in .NET Core

提问人:BlazK 提问时间:9/1/2020 更新时间:9/1/2020 访问量:1569

问:

我在 .NET Core 3 中使用 NuGet 包 Microsoft.Extensions.Caching.StackExchangeRedis 创建了一个示例项目,用于分布式缓存。一切正常,但我不确定如果多个客户端异步并同时使用某些特定资源会发生什么。

我无法找到任何关于并发访问的新文章/解决方案,因此使用某种锁定机制。有很多旧文章,但最近没有发布任何文章,所以我不确定这些解决方案在发布多年后会继续工作。

使用 Microsoft.Extensions.Caching.StackExchangeRedis 包异步访问和并发使用 .NET Core 中的资源是否需要锁?如果是这种情况 - 一些帮助(代码/文章/链接)将不胜感激。

asp.net-core net-core 堆栈交换.redis 分布式缓存

评论

0赞 Tseng 9/1/2020
有了访问权限,你的意思是......读取/获取值?写作?
0赞 BlazK 9/2/2020
好吧,任何可能导致问题的事情。我想主要问题是写是的。
1赞 Tseng 9/2/2020
请提供更多背景信息。为什么这是一个问题?Redis 用于缓存,而不是用于存储。在最坏的情况下,在缓存过期之前,您的数据会略微过时或不一致,此时您无论如何都需要获取值并将其放入其中。如果有多个实例被命中并缓存未命中,则它们很可能具有相同的数据。缓存的生存期应该相当短,以减少数据库或外部服务的命中。通常,最终一致性对于缓存方案来说已经足够好了。对于更高级的方案,您可能不希望直接更新缓存并使用失效
0赞 Matt Ghafouri 9/9/2021
检查这个问题

答: 暂无答案