当前位置: 首页 > 编程笔记 >

StackExchange.Redis 复杂数据(Protobuf)

林魁
2023-03-14
本文向大家介绍StackExchange.Redis 复杂数据(Protobuf),包括了StackExchange.Redis 复杂数据(Protobuf)的使用技巧和注意事项,需要的朋友参考一下

示例

StackExchange.Redis还支持通过pub / sub通道发送字节,这里我们使用protobuf-net将消息序列化为字节数组,然后再发送:

// 消息的定义(用Protobuf属性标记)
[ProtoContract]
public class ChatMessage
{
    [ProtoMember(1)]
    public Guid Id { get; set; }
    [ProtoMember(2)]
    public string User { get; set; }
    [ProtoMember(3)]
    public string Text { get; set; }
}

// 抓取一个ISubscriber的实例
var subscriber = connection.GetSubscriber();

var message = new ChatMessage
{
    Id = Guid.NewGuid(), 
    User = "User 1234", 
    Text = "你好,世界!"
};

using (var memoryStream = new MemoryStream())
{
    // 使用protobuf-net序列化ChatMessage
    Serializer.Serialize(memoryStream, message);

    // 将消息发布到“聊天”频道
    subscriber.Publish("chat", memoryStream.ToArray());
}

订户再次需要在收到消息后反序列化消息:

// 抓取一个ISubscriber的实例
var subscriber = connection.GetSubscriber();

// 通过“聊天”频道订阅消息
subscriber.Subscribe("chat", (channel, bytes) => {
    using (var memoryStream = new MemoryStream(bytes))
    {
        var message = Serializer.Deserialize<ChatMessage>(memoryStream);

        // 用消息做点什么
        Console.WriteLine($"{message.User} said {message.Text}");
    }
});
           

 类似资料:
  • 问题内容: 可以说我有一个散列,例如 存储这种数据结构的“通常”方式是什么(或者您不会吗?) 您是否可以直接获得价值(例如,获取哈利:年龄? 一旦存储,您是否可以直接更改子键的值(例如,sally:weight = 100) 问题答案: 存储这种数据结构的“通常”方式是什么(或者您不会吗?) 例如,哈利(Harry)和莎莉(Sally)将分别存储在单独的散列中,其中字段代表其属性,例如年龄和体重。

  • 5.1.2 图形是复杂数据 图形编程就是编写能创建和处理图形的程序。从一般的意义上说,图形也是数据,只不过与数值、字符串、列表等类型的数据相比,图形数据是非常复杂的数据。 首先,一个图形包含的信息是复杂的。例如,一个圆形需要用一个圆心和一个半径来定义。半径可以用一个简单的数值来表示,但圆心(平面上的一个点)却需要用两个数值型坐 标组成的元组来表示。这还只是大家在平面几何里认识的圆形,在实际的图形应

  • 函数可以处理传递给它的参数,并且能返回它的退出状态码给脚本,以便后续处理。 function_name $arg1 $arg2 函数通过位置来引用传递过来的参数(就好像它们是位置参数),例如,$1, $2,等等。 例子 24-2. 带参数的函数 #!/bin/bash # 函数和参数 DEFAULT=default # 默认参数值。D func2 () {

  • 主要内容:本节引言:,1.Intent传递简单数据,2.Intent传递数组,3.Intent传递集合,4.Intent传递对象,5.Intent传递Bitmap,6.传来传去不方便,直接定义全局数据,7.单例模式传参,本节小结:本节引言: 上一节中我们学习了Intent的一些基本使用,知道了Intent的七个属性,显式Intent以及 隐式Intent,以及如何自定义隐式Intent,最后还给大家提供了一些常用的系统Intent! 而本节跟大家讲解的是Intent传递数据的问题~好的,开始本节

  • 问题内容: 我对数据库还很陌生,所以如果这是一个愚蠢的问题,请原谅我。 在现代数据库中,如果我使用索引来访问行,则我相信这将是O(1)复杂性。但是,如果我查询选择另一列,它是O(1)还是O(n)?数据库是否必须遍历所有行,还是为每列建立一个排序列表? 问题答案: 实际上,我认为基于索引的访问将是O(log(n)),因为您仍将通过类似B-Tree的组织进行搜索以获取记录。

  • 问题内容: 嗨,我正在尝试在SQL Server下表中进行数据透视 我希望输出为 原始表中的列数是已知的,但行数是未知的。谁能帮忙 问题答案: 如果要将数字包括在列名中,则仍然需要先取消透视和列,然后再应用透视。所不同的是,您会将数字连接到在取消透视过程中创建的列名。 对于已知数量的值,查询将为: 然后,如果您有未知的数字,则动态SQL版本将为: