Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
刷新Redis缓存的部分_Redis_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack.redis - Fatal编程技术网 servicestack.redis,Redis,servicestack.redis" /> servicestack.redis,Redis,servicestack.redis" />

刷新Redis缓存的部分

刷新Redis缓存的部分,redis,servicestack.redis,Redis,servicestack.redis,我正在调查在asp.net mvc应用程序中使用Redis的情况,该应用程序使用客户端和在远程计算机上运行的单个Redis实例 我们的缓存分为3个主要“区域”(Asp.net输出缓存、NHibernate二级缓存、应用程序缓存),我希望能够单独“刷新”这些区域中的所有密钥 在Couchbase(我们目前使用的)中,这将通过使用separate来实现,其中客户端实例指向每个实例。然后,我们可以使用来自相应客户端实例的单个调用刷新这些存储桶中的所有值 有没有办法使用Redis完成这样的设置?如果是这

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

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

在Couchbase(我们目前使用的)中,这将通过使用separate来实现,其中客户端实例指向每个实例。然后,我们可以使用来自相应客户端实例的单个调用刷新这些存储桶中的所有值


有没有办法使用Redis完成这样的设置?如果是这样,我如何从客户端/服务器端实现这一点?

我可以想出三种方法来实现这一点

共享数据库-最糟糕的方法(强烈建议不要追求) Redis支持共享数据库,这些数据库基本上是由同一服务器管理的独立密钥空间。连接到Redis后,可以使用该语句在数据库之间切换,并且可以使用该命令逐个刷新每个数据库

赞成者:

  • 这是得到你所需要的最简单的方法
缺点:

  • 共享数据库共享相同的Redis进程。由于Redis(大部分)是单线程的,因此不建议使用共享数据库,因为一个数据库中的操作可能会干扰同一服务器上运行的其他数据库
  • 目前还不清楚未来版本的Redis是否会继续支持共享数据库
(有关共享与专用Redis数据库的更多信息,请访问我的帖子)

一个数据库,不同的键前缀-稍微好一点,但仍然。。。 您可以使用单个Redis数据库,并根据密钥所属的“区域”为密钥添加前缀(例如,进入ASP.Net区域的密钥将以“ASP:”等作为前缀)。要删除某个区域,请使用相关的键名模式及其返回的结果,使用命令遍历键空间

赞成者:想不出有什么 缺点:

  • 同上+更多编码以实现扫描/删除例程
专用数据库-推荐方法 对每个区域使用单独的Redis实例,简单和简单。将远程计算机设置为运行3台Redis服务器,每台服务器管理自己的密钥空间。要刷新,请连接到相关数据库并执行FLUSHDB或

优点:

  • 用一个命令刷新一个区域
  • 利用远程计算机上的多个内核
反对:

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

最后,如果你正在寻找一种不用麻烦的方式使用ReDIS,我敦促你考虑在云端中作为托管的ReISIS服务的选项。我们是唯一一家允许您在同一订阅中设置多个专用Redis数据库的服务提供商。

感谢您提供如此简洁的回答!听起来,对我们来说,运行多个实例可能是最好的选择。关于Redis云——如果您在加拿大有POP,这将是我们的一个选择(由于客户限制,恐怕我们不能在国外存储任何东西)。