本文为原创文章、源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称、作者及网址,谢谢!


开发工具:VS2017

语言:C#

DotNet版本:.Net FrameWork 4.5及以上

系统:Win10 X64

一、安装Redis服务器

首先,从以下网站下载Redis服务器,

并从以下列表中下载Redis-x64-3.2.100.msi,如下图所示:

或者从百度网盘进行下载,如下:

其次,安装Redis-x64-3.2.100.msi,全部点击肯定性按钮直至安装完成,如下图所示:

安装完毕之后,使用WIN+R弹出“运行”窗体,输入“services.msc”打开系统“服务”窗体,我们可以看到如下的信息:

以上是“Redis服务器”服务,如果想以此作为服务器,强烈建议设置服务的启动类型为“自动”(保持默认值即可)

然后,将C:\Program Files\Redis路径加入系统环境变量里面,如下图所示:

此次目的是用于以后不再输入文件路径(减少输入路径带来的不便),如下图所示:

二、安装StackExchange.Redis,用于C#与服务器进行交互

首先,从“程序包管理器控制台”输入以下内容进行安装引用StackExchange.Redis,如下所示:

PM> Install-Package StackExchange.Redis

备注:最新版本不允许使用.DotNet4.0,这里使用.Net4.5,否则将安装不了。

安装结果如下图所示:

其次,在控制台编写以下代码:

using StackExchange.Redis;
using System;
using System.Threading; namespace RedisConsoleApp
{
class Program
{
static void Main(string[] args)
{
ConnectionMultiplexer cm = ConnectionMultiplexer.Connect("127.0.0.1:6379");
IDatabase db = cm.GetDatabase();
db.StringSet("Info", "Hello World");
string result = db.StringGet("Info");
Console.WriteLine(result); ISubscriber sc = cm.GetSubscriber();
string channelStr = "CH1";
sc.Subscribe(channelStr, (channel, information) => Console.WriteLine($"From {channel}: {information}"));
sc.Publish(channelStr, "Hello,my name is CNXY");
Thread.Sleep();
sc.Publish(channelStr, "My website is http://www.cnc6.cn");
Console.ReadKey(); }
}
}

其输出结果如下:

然后,我们同样可以利用Redis-cli来查看刚才建立的信息,如下所示:

三、如何加密连接

首先,打开"C:\Program Files\Redis\redis.windows.conf",将里面的“# requirepass foobared”改成“#requirepass 你的密码”即可,此处修改为“requirepass 123”,修改后必须重启服务,如下图所示:

其次,在C#源代码里将 ConnectionMultiplexer.Connect("127.0.0.1:6379")改成 ConnectionMultiplexer.Connect("127.0.0.1:6379,password=123")即可。

然后,我们看看是不是被密码保护了,具体如下图所示:

从上图可以看出,该连接已经被保护了!

四、如何使用远程访问

首先,打开"C:\Program Files\Redis\redis.windows.conf",将里面的“bind 127.0.0.1”改成“#bind 127.0.0.1”即可,修改后必须重启服务,如下图所示:

然后,使用其他IP地址(如192.168.94.250)进行操作,如下图所示:

可以从上图看出,使用192.168.94.250这个IP地址可以正常进行操作。

同样,需要将C#代码里对应的IP地址从127.0.0.1改成192.168.94.250,如下代码所示:

//ConnectionMultiplexer cm = ConnectionMultiplexer.Connect("127.0.0.1:6379,password=123");
ConnectionMultiplexer cm = ConnectionMultiplexer.Connect("192.168.94.250:6379,password=123");

其他对哈希表、列表、集合及有序集合等的操作,请自行百度,谢谢!

[C#]使用Redis来存储键值对(Key-Value Pair)的更多相关文章

  1. Redis中的键值过期操作

    1.过期设置 Redis 中设置过期时间主要通过以下四种方式: expire key seconds:设置 key 在 n 秒后过期: pexpire key milliseconds:设置 key ...

  2. 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射

    从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ...

  3. 浅谈Redis数据库的键值设计(转)

    丰富的数据结构使得redis的设计非常的有趣.不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与.redis的DBA需要熟悉 ...

  4. 浅谈REDIS数据库的键值设计(转)

    add by zhj: 关系数据库表的一条记录可以映射成Redis中的一个hash类型,其实数据库记录本来就是键值对.这样,要比本文中的键设计用更少的键,更节省内存,因为每个键除了它的键值占用内存外, ...

  5. Android - 数据存储 -存储键值对

    如果你有少量的键值数据需要存储,可以使用SharedPreferencesAPI.SharedPreferences对象指向一个包含键值对的文件并且提供了一些简单的方法来读取它们.每个SharedPr ...

  6. Java Dictionary 类存储键值

    字典(Dictionary) 字典(Dictionary) 类是一个抽象类,它定义了键映射到值的数据结构. 当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary. 当 ...

  7. 【redis常用的键值操作及性能优化】

    服务端 启动redis服务 { // -a:指定密码 -h:指定主机 -p:指定端口 } //让redis 服务中断崩溃 //保存和关闭 //后台备份 //设置登录密码 //redis-benchma ...

  8. (bug更正)利用KVC和associative特性在NSObject中存储键值

    KVC 一直没仔细看过KVC的用法,想当然的认为可以在NSObject对象中存入任意键值对,结果使用时碰到问题了. 一个简单的位移动画: CAKeyframeAnimation *keyPosi=[C ...

  9. 浅谈js的键值对key和value

    > 昨晚无意中看到类似下面结构的一段代码的取值问题,引起我的兴趣,花了点时间写了个demo给大家分享一下... var obj = [ {"2011":{"name ...

随机推荐

  1. 给负载均衡器添加多IP

    看到一个场景,针对web应用的一个需求,需要在负载均衡器设置多个公网ip. 给负载均衡器添加多个公共ip 创建多个虚拟机,同时把他们添加到同一个可用性集中,方便后期部署到负载均衡器. 创建多个公网ip ...

  2. ES6这些就够了

    刚开始用vue或者react,很多时候我们都会把ES6这个大兄弟加入我们的技术栈中.但是ES6那么多那么多特性,我们需要全部都掌握吗?秉着二八原则,掌握好常用的,有用的这个可以让我们快速起飞. 接下来 ...

  3. 代理模式(Proxy)

    代理模式(Proxy) 其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希 ...

  4. golang关于一些新手不注意会出现的小问题

    前言 最近在整理之前写程序,学习时所记录的有道云笔记,发现一些有意思的小点跟大家分享一下.如有错误请大家给指出 一.闭包 defer 闭包(匿名函数) func test(){ i, n := ,; ...

  5. Yacc 与 Lex 快速入门(词法分析和语法分析)

    我们知道,高级语言,一般的如c,Java等是不能直接运行的,它们需要经过编译成机器认识的语言.即编译器的工作. 编译器工作流程:词法分析.语法分析.语义分析.IR(中间代码,intermediate ...

  6. cookie大小

    一.浏览器允许每个域名所包含的cookie数: Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie. Firef ...

  7. 这个接口管理平台 eoLinker 开源版部署指南你一定不想错过

    本文主要内容是讲解如何在本地部署eoLinker开源版. 环境要求 1.PHP 5.5+ / PHP7+(推荐) 2.Mysql 5.5+ / Mariadb 5.5+ 3.Nginx(推荐) / A ...

  8. JDBC的使用

    JDBC详解系列(一)之流程 ---[来自我的CSDN博客](http://blog.csdn.net/weixin_37139197/article/details/78838091)---   使 ...

  9. 从源代码到Runtime发生的重排序

     源代码和Runtime时执行的代码很可能不一样,这是因为编译器.处理器常常会为了追求性能对改变执行顺序.然而改变顺序执行很危险,很有可能使得运行结果和预想的不一样,特别是当重排序共享变量时.  从源 ...

  10. NDK开发小记录 C++读取java层对象内容

    这是自己NDK开发得小记录,关于C++层读取java层传来的对象内容. 很简单的一个例子, 1.首先在java层定义了一个类NumList: public class NumList { public ...