You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中StackExchange.Redis整数类型键的订阅与设置方法咨询

嘿,我来帮你理清这两个StackExchange.Redis的使用问题,结合你给出的代码示例一步步说明:

问题1:如何按照整数类型的键进行订阅操作?

首先得明确一点:Redis中的所有键本质上都是字符串类型,所谓“整数类型的键”其实是把整数转成字符串形式存储的键。根据你的需求场景,分两种情况处理:

场景1:订阅整数键的变更通知(比如键被修改、删除)

如果想监听某个整数键的状态变化,需要先开启Redis的键空间通知功能,再通过ISubscriber监听对应频道:

  1. 先开启Redis的键空间通知:可以修改redis.conf配置文件设置notify-keyspace-events KEA,也可以临时通过Redis命令CONFIG SET notify-keyspace-events KEA开启。
  2. 用StackExchange.Redis实现订阅的示例代码:
ConfigurationOptions co = new ConfigurationOptions();
co.EndPoints.Add("xxx:6379");
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(co);
ISubscriber subscriber = redis.GetSubscriber();

// 要监听的整数键,先转成字符串格式
int targetIntKey = 100;
// 构造键空间通知频道,格式为__keyspace@数据库编号__:键名
string keySpaceChannel = $"__keyspace@{db.Database}__:{targetIntKey.ToString()}";

// 订阅频道并处理事件
subscriber.Subscribe(keySpaceChannel, (channel, message) =>
{
    Console.WriteLine($"整数键{targetIntKey}发生了{message}操作");
});

场景2:订阅以整数命名的消息频道

如果只是想接收发送到整数命名频道的消息,直接把整数转成字符串作为频道名订阅即可:

ISubscriber subscriber = redis.GetSubscriber();
int channelNumber = 2024;
subscriber.Subscribe(channelNumber.ToString(), (channel, message) =>
{
    Console.WriteLine($"收到来自频道{channelNumber}的消息:{message}");
});

问题2:设置键值对时,如何用整数类型作为键(最终存储为字符串类型)?

操作很简单,只需要把整数类型的值转换成字符串即可——StackExchange.Redis的StringSet方法接受字符串类型的键参数,你可以直接调用ToString()方法转换整数,或者直接用字符串形式的整数传入。基于你给出的代码修改示例:

ConfigurationOptions co = new ConfigurationOptions();
co.EndPoints.Add("xxx:6379");
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(co);
IDatabase db = redis.GetDatabase();
string value = "abcdefg";

// 将整数转成字符串作为键传入
int intKey = 1001;
db.StringSet(intKey.ToString(), value);

// 获取值时同样把整数转成字符串
var value2 = db.StringGet(intKey.ToString());
this.Text = value2;

你也可以直接写db.StringSet("1001", value),效果完全一致,因为Redis最终存储的键都是字符串格式。


内容的提问来源于stack exchange,提问作者TesterG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:29:52