如何将一个requestDto推送到Redis并让它持续存在直到它被读取?

时间:2014-10-05 20:26:06

标签: redis servicestack

我想带一个已经POST到ServiceStack服务的RequestDTO,并使用ServiceStack.Server RedisMqServer提供的内置消息传递功能将其推送到Redis。此消息应该是持久的(如果它被成功推送),因为它应该能够在重新启动Redis服务器(如果发生这种情况)和其他不幸事件后继续存在。它应该持续存在,直到它被另一个尚待确定的服务读取/处理。

此Pub / Sub,请求/响应,还是仅请求/无响应?

谢谢你,Stephen

1 个答案:

答案 0 :(得分:1)

您需要确保将Redis服务器配置为持久保存到磁盘,redis persistence上的文档描述了如何配置Redis RDB快照并支持仅附加文件

关于在Redis中仅附加文件的重要说明:

  

建议(默认)政策是每秒 fsync 。它非常快速且非常安全。总是在实践中策略很慢(尽管在Redis 2.0中有所改进) - 没有办法让fsync比它更快。

实际上,如果redis-server进程意外终止,则有可能丢失数据。

ServiceStack's Rabbit MQ Server为MQ服务提供了更持久的选项,它具有真正的 ACK 支持,因此只有在客户端明确承认时才会从MQ Broker中删除消息。