为了保持程序的高效,建议使用ProtoBuf.
Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。
Net中使用也很简单,在NuGet 获取,使用特性标记即可,有点类似wcf中的契约.
[ProtoContract] public class TestQuene { [ProtoMember(1)] public int Id { get; set; }
简单的队列队列入队与出队测试,效果还不错.
for (int i = 0; i < 100; i++) { MemoryStream xmlw = new MemoryStream(); TestQuene TempTest = new TestQuene() { Id = i, data = new List<string>(new string[] { "1", "2", "3" }) }; Serializer.Serialize<TestQuene>(xmlw, TempTest); message = Convert.ToBase64String(xmlw.ToArray()); Console.WriteLine("EnqueueItemOnList=" + message); redis.EnqueueItemOnList("MessageQuene", message); }
ThreadPool.UnsafeQueueUserWorkItem(o => { while (true) { try { MemoryStream ms = new MemoryStream(Convert.FromBase64String(redis.BlockingPopItemFromList("MessageQuene", TimeSpan.FromHours(2)))); Console.WriteLine("while=" + Serializer.Deserialize<TestQuene>(ms)); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } } }, null);