最初我问过查询.rdb文件,这不是我想做的事情 - 我将查询一个活动服务器。
我即将开始一个项目,我们将使用RDB快照在pub / sub场景中使用Redis。
.Net WCF客户端将通过Marc Gravell's BookSleeve配置Redis连接并接受传入请求。
启用RDB快照后,将创建增量快照。
我希望客户能够根据给定的渠道和日期范围检索数据集。我以为我会使用相同的WCF客户端进行读写操作(除非有任何明显的异议)。我不清楚用什么方法来查询服务器以检索日期范围,通道特定数据,并通过WCF客户端传递它。
我是否可以通过BookSleeve实现此数据查询功能(如果是,如何)或是否有其他更适合使用的访问包装器,例如ServiceStack.Redis。
使用BookSleeve进行写入以及ServiceStack.Redis作为客户端会更好吗?
- 更新 -
我将快照设置为默认值:
save 900 1
save 300 10
save 60
使用Redis Admin UI浏览数据,我希望在15分钟(900秒)之后看到存储在密钥中的一些数据,但搜索键会显示通道名称(和其他键),但没有值内。
自发布/子事件are not persisted以来,捕获频道数据并存储它的好方法是什么?
答案 0 :(得分:1)
编辑以解决OP的编辑问题:
如上所述:pub / sub不会保留。我建议使用队列; redis中的“list”类型非常适合lpush
,rpush
,lpop
,rpop
,rpoplpush
和ltrim
该场景的关键命令。您可以选择使用pub / sub 以及来通知客户端新数据的可用性 - 或者您可以使用阻止弹出命令blpop
,brpop
和brpoplpush
。所有这些操作都定义为here。
我可以澄清一下:听起来你有一堆rdb文件,想要从任意文件中读取(“增量快照”)。那是对的吗?
除非您使用专用工具来解析它们,否则rdb文件本身并不是很有用。 Redis客户端(如BookSleeve和ServiceStack)希望与正在运行的Redis实例进行通信。您的问题听起来有点像“我有一系列日期的sql-server .bak文件;如何从SomeTable
获取数据?” - 答案是“首先将bak加载到SQL Server中”。
启动redis-server非常简单,但它不希望从多个rdb文件中读取。
选项:
DEBUG RELOAD
进行热插拔; 然而 ,这实际上并不是非常受支持,而且在测试中我无法让它正常运行(特别是,它似乎之前执行SAVE
重新加载,使其不适合这种情况)但最终,你想要在运行中选择一系列不同的rdb文件并不是Redis的正常用例。
如果我理解了您的要求,那么这不是客户端问题,更不用说特定于平台的问题(.NET,C#,WCF等):首先您需要了解你将如何运行服务器或以其他方式阅读文件。最好在Redis DB
中询问