C# Redis

说明:本章节使用C#语言开发一个Redis客户端,该客户端能够连接到Redis服务器,读/写字符串数据类型和字符串数据类型,能够实现数据的发布(Publish)和数据的订阅 (Subscribe)。

1.使用visual Studio2019新建一个Windows 窗体。

2.添加Nuget程序包StackExchange.Redis,选择适合的版本安装。添加完成后项目中自动添加相关引用。

 3.连接和订阅数据

private ConnectionMultiplexer redis;//连接到redis
private ISubscriber isub;//一个订阅连接
private RedisChannel rc;//通道

private void buttonCon_Click(object sender, EventArgs e)
{
try
{
if (this.buttonCon.Text == "连接")
{
string ip = this.textBoxIP.Text;
string port = this.textBoxPort.Text;
//连接服务器
redis = ConnectionMultiplexer.Connect(ip + ":"+ port);
//订阅数据
isub = redis.GetSubscriber();
rc = new RedisChannel("DC", RedisChannel.PatternMode.Auto);//通道名称DC
isub.Subscribe(rc, Subscribe);

if (redis.IsConnected)
{
this.buttonCon.Text = "断开";
}
}
else if (this.buttonCon.Text == "断开")
{
this.buttonCon.Text = "连接";
if (redis != null)
{
redis.Close();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

/// <summary>
/// 订阅函数
/// </summary>
/// <param name="rc"></param>
/// <param name="rv"></param>
public void Subscribe(RedisChannel rc, RedisValue rv)
{
if (rv.HasValue)
{
SetSub(Convert.ToString(rv));//添加自己的操作函数 此处我是接收到订阅数据之间显示到接收文本框中
}
}

/// <summary>
/// 发布
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonPub_Click(object sender, EventArgs e)
{
if (redis != null && redis.IsConnected)
{
RedisValue rv = new RedisValue(this.textBoxPublish.Text);
isub.Publish(rc, rv);
}
}

/// <summary>
/// 写字符串/list
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
if (redis != null && redis.IsConnected)
{
IDatabase db = redis.GetDatabase(0);
RedisKey key = this.textBoxKey.Text;
if(this.comboBoxList.SelectedIndex==0)
{
RedisValue value = this.textBoxValue.Text;
db.StringSet(key, value);
}
else if (this.comboBoxList.SelectedIndex == 1)
{
string[] vlist = Convert.ToString(this.textBoxValue.Text).Split('\n');
if (vlist != null && vlist.Length > 0)
{
for (int i = 0; i < vlist.Length; i++)
{
db.ListRightPush(key, vlist[i]);
}
}
}
}
}

/// <summary>
/// 读字符串/list
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
this.textBoxValue.Text = "";
if (redis != null && redis.IsConnected)
{

try
{
IDatabase db = redis.GetDatabase(0);
RedisKey key = this.textBoxKey.Text;

if (!db.KeyExists(key))
{
this.textBoxValue.Text = "不存在key值"+ this.textBoxKey.Text;
return;
}

if (this.comboBoxList.SelectedIndex == 0)
{
string vstr = db.StringGet(key);
this.textBoxValue.Text = vstr;
}
else if (this.comboBoxList.SelectedIndex == 1)
{
RedisValue[] vlist = db.ListRange(key);
if (vlist != null)
{
if (vlist.Length > 0)
{
for (int i = 0; i < vlist.Length; i++)
{
string v = Convert.ToString(vlist[i]) + "\r\n";
this.textBoxValue.Text += v;
}
}
}
}
}
catch (Exception ex)
{
this.textBoxValue.Text = ex.ToString();
}
}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_41280091

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值