redis基本用法学习(C#调用NRedisStack操作redis)

  redis官网文档中推荐C#中使用NRedisStack包连接并操作redis,本文学习C#调用NRedisStack操作redis的基本方式。
  新建Winform项目,在Nuget包管理器中搜索并安装NRedisStack包,如下图所示:

redis基本用法学习(C#调用NRedisStack操作redis)_第1张图片
  主要调用StackExchange.Redis命名空间下ConnectionMultiplexer类的Connect函数连接redis,默认情况下只需指定redis所在服务器地址即可,端口默认为6379,同时没有连接密码,调用示例如下所示:

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();

  redis安装目录下的redis.windows-service.conf中可以设置redis服务监听端口和密码,如下图所示,修改内容后,需要在Windows服务中重启redis服务后生效。
redis基本用法学习(C#调用NRedisStack操作redis)_第2张图片redis基本用法学习(C#调用NRedisStack操作redis)_第3张图片
  如果带端口和密码形式连接,需要在Connect函数中传入ConfigurationOptions对象实例,并在实例中设置密码、ip和端口,示例代码如下所示:

ConfigurationOptions options = new ConfigurationOptions();
options.Password = “XXXXXXX”;
options.EndPoints.Add(“XXXXXXX”, XXXX);
redis = ConnectionMultiplexer.Connect(options);
db = redis.GetDatabase();

  连接成功后,可以调用redis.GetStatus函数获取连接状态,如下图所示:
redis基本用法学习(C#调用NRedisStack操作redis)_第4张图片

  redis.GetDatabase函数返回IDatabase接口对象实例,用于与redis服务器交互,该接口中定义了redis中各种数据类型相关的命令操作函数,函数名称都是以数据类型+操作命令的形式定义,下图为字符串类型键值对的操作函数:
redis基本用法学习(C#调用NRedisStack操作redis)_第5张图片
  编写简单的测试程序,连接redis服务器设置或获取键值对,同时打开命令行连接redis进行交互,C#中的代码如下所示:

private void btnSet_Click(object sender, EventArgs e)
{
    if(string.IsNullOrEmpty(txtSeconds.Text)) 
    {
        m_db.StringSet(txtKey.Text, txtValue.Text);
    }
    else
    {
        m_db.StringSet(txtKey.Text, txtValue.Text,new TimeSpan(0,0,Convert.ToInt32(txtSeconds.Text)));
    }            
}

private void btnGet_Click(object sender, EventArgs e)
{
    if(!m_db.KeyExists(txtKey1.Text))
    {
        MessageBox.Show("不存在指定key:" + txtKey1.Text);

        return;
    }

    MessageBox.Show(m_db.StringGet(txtKey1.Text));
}

  如下截图所示,通过控制台查看redis保存的键值对,然后在Winform程序中获取指定的键的值,两边获取到的内容都是相同的:
redis基本用法学习(C#调用NRedisStack操作redis)_第6张图片

  在Winform程序中设置新的键值对,同时设置过期时间,然后在控制台中查看并获取新增键的值及过期时间。等键值对过期后,在Winform中再获取键值时,失效的键值已经获取不到了。
redis基本用法学习(C#调用NRedisStack操作redis)_第7张图片

参考文献:
[1]https://redis.io/docs/connect/clients/dotnet/
[2]https://github.com/redis/NRedisStack

你可能感兴趣的:(dotnet编程,redis,NRedisStack,C#)