1

ssとredisを見始めたところです。私はMicrosoftRedisの実装を使用しています。圧縮をオンにすると、dump.rdbの成長が速すぎます。

1秒あたりのプロセス統計を保存したいと思います。サンプルオブジェクト。

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

提案と訂正に感謝します。ありがとう!

4

1 に答える 1

1

ServiceStackのRedisクライアントの最も基本的なクラスは、すべての操作が機能するRedisNativeClientbyte[]です。RedisClientはRedisNativeClientのサブクラスであるため、キャストして下位レベルのAPIを取得できます。

値を圧縮する必要があります。これは、byte[]redisに直接永続化できる値になります。再び元に戻すには、逆の操作を行う必要があります。たとえば、生のbyte[]値を取得して解凍します。

ServiceStackのRedisクライアントは、データを圧縮/解凍するための便利なStreamExtensionsを含むServiceStack.Commonにすでに依存しています。

于 2012-09-28T21:50:39.970 に答える