我正在调查使用ServiceStack.Redis客户端和在远程计算机上运行的单个Redis实例在asp.net mvc应用程序中使用Redis。
我们的缓存分为3个主要"区域" (Asp.net输出缓存,NHibernate二级缓存,应用程序缓存)我希望能够能够" flush"这些区域中的所有键都是单独的。
在Couchbase(我们目前使用)中,这将通过使用单独的buckets与指向每个客户端实例的客户端实例来实现。然后,我们可以使用来自相应客户端实例的单个调用来刷新这些存储桶中的所有值。
有没有办法使用Redis完成这样的设置?如果是这样,我该如何从客户端/服务器端进行此处理?
答案 0 :(得分:1)
我可以想到实现这一目标的三种方法。
Redis支持共享数据库,这些数据库基本上是由同一服务器管理的单独密钥空间。连接到Redis后,可以使用SELECT语句在数据库之间切换,并且可以使用FLUSHDB命令逐个刷新每个数据库。
临:
缺点:
(有关共享与专用Redis数据库的详细信息,请查看http://redislabs.com/blog/benchmark-shared-vs-dedicated-redis-instances上的帖子
您可以使用单个Redis数据库,并根据它们所属的“区域”为您的密钥添加前缀(例如,进入ASP.Net区域的密钥将以'asp:'等为前缀...)。要删除区域,请使用相应的键名称模式使用SCAN命令遍历键空间,并使用DEL返回结果。
专业人士:想不出来 缺点:为每个区域使用单独的Redis实例,简单明了。设置远程计算机以运行3个Redis服务器,每个服务器管理自己的密钥空间。要刷新,请连接到相关数据库并执行FLUSHDB或FLUSHALL。
优点:
缺点:
最后,如果您正在寻找一种无需麻烦的方法来使用Redis,我建议您考虑Redis Cloud作为Cloud中托管的Redis服务的选项。我们是唯一一家允许您在同一订阅中设置多个专用 Redis数据库的服务提供商,无需额外费用。