2012-09-28 32 views
1

我刚开始看着ss和redis。我正在使用微软的redis实现。打开压缩文件时,dump.rdb增长过快。在保存到redis之前压缩对象

我想节省每秒的流程统计信息。示例对象。

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;} 
} 

赞赏任何建议和更正。谢谢!

回答

1

ServiceStack's Redis Client的基本最上等级是RedisNativeClient,其中所有操作的工作范围为byte[]。 RedisClient是RedisNativeClient的一个子类,因此您可以强制转换以获取较低级别的API。

您需要压缩您的值,最终将以byte[]的值直接保存到redis中。您需要做相反的处理才能将其重新取出,例如检索原始值byte[]值并解压缩。

ServiceStack的Redis客户端已经依赖于ServiceStack.Common,其中包含convenient Stream Extensions来压缩/ UnCompress数据。