gpt4 book ai didi

redis - 刷新 Redis 缓存的一部分

转载 作者:IT王子 更新时间:2023-10-29 06:15:03 26 4
gpt4 key购买 nike

我正在使用 ServiceStack.Redis 调查 Redis 在 asp.net mvc 应用程序中的使用客户端和在远程计算机上运行的单个 Redis 实例。

我们的缓存分为 3 个主要“区域”(Asp.net 输出缓存、NHibernate 二级缓存、应用程序缓存),我希望能够单独“刷新”这些区域中的所有键.

在 Couchbase(我们目前使用的)中,这将通过使用单独的 buckets 来完成。一个客户端实例指向每个实例。然后,我们可以使用来自适当客户端实例的单个调用来刷新这些存储桶中的所有值。

有没有办法使用 Redis 完成这样的设置?如果是这样,我该如何从客户端/服务器端处理这个问题?

最佳答案

我可以想到三种方法来实现这一目标。

共享数据库——最糟糕的方法(强烈建议不要追求)

Redis 支持共享数据库,这些数据库基本上是由同一台服务器管理的独立键空间。连接到您的 Redis 后,您可以使用 SELECT 在数据库之间切换声明,您可以使用 FLUSHDB命令单独冲洗每一个。

临:

  • 这是获得所需内容的最简单方法。

缺点:

  • 共享数据库共享相同的 Redis 进程。由于 Redis(大部分)是单线程的,因此不推荐使用共享数据库的做法,因为一个数据库中的操作会干扰同一服务器上运行的其他数据库。
  • 尚不清楚 Redis 的 future 版本是否会继续支持共享数据库。

(有关共享和专用 Redis 数据库的更多信息,请查看我在 http://redislabs.com/blog/benchmark-shared-vs-dedicated-redis-instances 上的帖子)

一个数据库,不同的键前缀 - 稍微好一点,但仍然......

您可以使用单个 Redis 数据库并根据它们所属的“区域”为您的键添加前缀(例如,进入 ASP.Net 区域的键将以“asp:”等为前缀)。要删除区域,请使用 SCAN 遍历键空间命令使用相关的键名模式和 DEL它返回的结果。

优点:想不到缺点:

  • 与上述相同 + 更多代码来实现 SCAN/DEL 例程。

专用数据库 - 推荐方法

为每个区域使用一个单独的 Redis 实例,简单明了。将您的远程计算机设置为运行 3 个 Redis 服务器,每个服务器管理自己的 key 空间。要刷新,连接到相关数据库并执行 FLUSHDB 或 FLUSHALL .

优点:

  • 用一个命令刷新一个区域
  • 利用远程机器上的多个内核

缺点:

  • 可能意味着需要更多的管理工作来设置 3 个 Redis 服务器。

最后,如果您正在寻找一种轻松使用 Redis 的方法,我建议您考虑一下 Redis Cloud作为云中托管的 Redis 服务的一个选项。我们是唯一一家允许您在同一订阅中免费设置多个专用 Redis 数据库的服务提供商。

关于redis - 刷新 Redis 缓存的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24164544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com