我刚刚开始关注ss和redis。我正在使用microsoft redis实现。打开压缩后,dump.rdb增长得太快了。
我想保存每秒进程统计信息。示例对象。
public class PerfData
{
public long Id { get; set; }
public DateTime TimeStamp { get; set; }
public string ProcessName { get; set; }
public int ProcessId { get; set; }
public TimeSpan TotalProcessorTime { get; set; }
public TimeSpan UserProcessorTime { get; set; }
public TimeSpan PrivilegedProcessorTime { get; set; }
public float ProcessorTime { get; set; }
public float WorkingSet { get; set; }
}
我已经看到了在客户端压缩的建议。这是否意味着我需要将对象转换为这样的东西?
public class PerfData
{
public long Id { get; set; }
public DateTime TimeStamp { get; set; }
public byte[] CompressedJson{get;set;}
}
欣赏任何建议和更正。谢谢!
答案 0 :(得分:1)
ServiceStack's Redis Client中最基本的类是RedisNativeClient,其中所有操作都适用于byte[]
。 RedisClient是RedisNativeClient的子类,因此您可以强制转换以获取较低级别的API。
您需要压缩您的值,该值将最终为byte[]
,您可以直接将其保存到redis中。你需要反过来让它再次退出,例如检索原始byte[]
值并解压缩。
ServiceStack的Redis客户端已经依赖于ServiceStack.Common,其中包含convenient Stream Extensions来压缩/解压缩数据。