.NET中Redis安装部署及使用方法简介附->开源Redis操作辅助类

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介:

  

  Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博、Github、StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http://redis.io/

  Redis 是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

  在这篇文章中我们将记录一下Redis的安装,以及如何在.NET中使用Redis。

  工具下载位置:http://pan.baidu.com/s/1jILIzLs,包括服务端配置以及查看缓存的工具。

 一、Redis服务端以服务方式运行

  服务端是以服务的形式运行,将Redis服务端解压到某个目录,然后以管理员方式运行cmd执行命令进行安装:

redis-server.exe --service-install redis.windows.conf --loglevel verbose

  注意卸载服务的命令为:

redis-server.exe --service-uninstall redis.windows.conf --loglevel verbose

  注意事项,修改Redis端口及密码的配置在文件redis.windows-service.conf中:(使用redis284.rar中解压文件

修改端口,压缩文件中配置的是6488:

修改密码

修改库的数量

配置完成后,执行

redis-server.exe --service-install redis.windows.conf --loglevel verbose

到控制面板查看服务已经安装成功了,注意首次安装时默认没有启动,单击启动即可。

 工具配置,安装后如下图

连接成功后,就可以查看缓存中的数据了

 二、Redis服务端以控制台方式运行

  解压下载的redis64-2.6.12.1.rar文件,如下图:

  第一步(配置本地服务)

  点击run这个DOS执行命令
  因为是自己的电脑测试的,所以这个Redis默认的端口我们就不用修改了,如果到了正式的服务器,一定要修改端口号,防止黑客攻击,获取到你的数据,毕竟信息安全很重要,可以通过它的配置文件来修改。
 
看下用NotePad++打开配置文件,修改过后的效果图,这里我修改成了6380这个端口
这个就是更改过后的效果图了,只要改了端口,再启动run就可以发现端口号确实已经变了,第一步也已经完成了。

第二部(安装和配置客户端)

文件中的“redis-desktop-manager-0.8.2.3849.exe“是2015-11-23 从Redis的官网下载的客户端安装包,如果有更新可以去官网下载最新的Redis,这是链接:http://redis.io/

1.点击客户端安装程序,下一步....,完成打开客户端界面就可以了,省略安装截图。

  2.打开界面,客户端默认读取到6379的端口,会创建一个6379的Redis服务器

  由于我更改了6379的端口号,导致Redis客户端默认创建的localhost服务器启动不成功,这里只需要右击修改一下端口号就可以了。

三、C#访问Redis

下载ServiceStack.Redis

和MongoDB一样,在.NET中使用Redis其实也是使用第三方驱动,官网推荐的是使用ServiceStack.Redis 下载后解压得到如下dll

.NET项目中使用Redis

ServerStack中有很多方法可以在.NET中调用,其类结构图如下:

 

Redis公共类库参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
using  System;
using  System.Collections.Generic;
using  System.Linq;
 
namespace  RDIFramework.Utilities
{
     using  ServiceStack.Redis;
     using  ServiceStack.Redis.Generic;
 
     /// <summary>
     /// Redis公共辅助类库
     /// </summary>
     public  class  RedisHelper : IDisposable
     {
         public  RedisClient Redis =  new  RedisClient( "127.0.0.1" , 6379);
         //缓存池
         PooledRedisClientManager prcm =  new  PooledRedisClientManager();
 
         //默认缓存过期时间单位秒
         public  int  secondsTimeOut = 30 * 60;
 
         /// <summary>
         /// 缓冲池
         /// </summary>
         /// <param name="readWriteHosts"></param>
         /// <param name="readOnlyHosts"></param>
         /// <returns></returns>
         public  static  PooledRedisClientManager CreateManager(
          string [] readWriteHosts,  string [] readOnlyHosts)
         {
             return  new  PooledRedisClientManager(readWriteHosts, readOnlyHosts,
                 new  RedisClientManagerConfig
                 {
                     MaxWritePoolSize = readWriteHosts.Length * 5,
                     MaxReadPoolSize = readOnlyHosts.Length * 5,
                     AutoStart =  true ,
                 }); // { RedisClientFactory = (IRedisClientFactory)RedisCacheClientFactory.Instance.CreateRedisClient("127.0.0.1", 6379) };          
         }
         /// <summary>
         /// 构造函数
         /// </summary>
         /// <param name="openPooledRedis">是否开启缓冲池</param>
         public  RedisHelper( bool  openPooledRedis =  false )
         {
             if  (openPooledRedis)
             {
                 prcm = CreateManager( new  string [] {  "127.0.0.1:6379"  },  new  string [] {  "127.0.0.1:6379"  });
                 Redis = prcm.GetClient()  as  RedisClient;
             }
         }
 
         #region Key/Value存储
         /// <summary>
         /// 设置缓存
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="key">缓存建</param>
         /// <param name="t">缓存值</param>
         /// <param name="timeout">过期时间,单位秒,-1:不过期,0:默认过期时间</param>
         /// <returns></returns>
         public  bool  Set<T>( string  key, T t,  int  timeout = 0)
         {
             if  (timeout >= 0)
             {
                 if  (timeout > 0)
                 {
                     secondsTimeOut = timeout;
                 }
                 Redis.Expire(key, secondsTimeOut);
             }
 
             return  Redis.Add<T>(key, t);
         }
         /// <summary>
         /// 获取
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="key"></param>
         /// <returns></returns>
         public  T Get<T>( string  key)
         {
             return  Redis.Get<T>(key);
         }
         /// <summary>
         /// 删除
         /// </summary>
         /// <param name="key"></param>
         /// <returns></returns>
         public  bool  Remove( string  key)
         {
             return  Redis.Remove(key);
         }
 
         public  bool  Add<T>( string  key, T t,  int  timeout)
         {
             if  (timeout >= 0)
             {
                 if  (timeout > 0)
                 {
                     secondsTimeOut = timeout;
                 }
                 Redis.Expire(key, secondsTimeOut);
             }
             return  Redis.Add<T>(key, t);
         }
         #endregion
 
         #region 链表操作
         /// <summary>
         /// 根据IEnumerable数据添加链表
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="listId"></param>
         /// <param name="values"></param>
         /// <param name="timeout"></param>
         public  void  AddList<T>( string  listId, IEnumerable<T> values,  int  timeout = 0)
         {
             Redis.Expire(listId, 60);
             IRedisTypedClient<T> iredisClient = Redis.As<T>();
             if  (timeout >= 0)
             {
                 if  (timeout > 0)
                 {
                     secondsTimeOut = timeout;
                 }
                 Redis.Expire(listId, secondsTimeOut);
             }
             var  redisList = iredisClient.Lists[listId];
             redisList.AddRange(values);
             iredisClient.Save();
         }
         /// <summary>
         /// 添加单个实体到链表中
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="listId"></param>
         /// <param name="Item"></param>
         /// <param name="timeout"></param>
         public  void  AddEntityToList<T>( string  listId, T Item,  int  timeout = 0)
         {
             IRedisTypedClient<T> iredisClient = Redis.As<T>();
             if  (timeout >= 0)
             {
                 if  (timeout > 0)
                 {
                     secondsTimeOut = timeout;
                 }
                 Redis.Expire(listId, secondsTimeOut);
             }
             var  redisList = iredisClient.Lists[listId];
             redisList.Add(Item);
             iredisClient.Save();
         }
         /// <summary>
         /// 获取链表
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="listId"></param>
         /// <returns></returns>
         public  IEnumerable<T> GetList<T>( string  listId)
         {
             IRedisTypedClient<T> iredisClient = Redis.As<T>();
             return  iredisClient.Lists[listId];
         }
         /// <summary>
         /// 在链表中删除单个实体
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="listId"></param>
         /// <param name="t"></param>
         public  void  RemoveEntityFromList<T>( string  listId, T t)
         {
             IRedisTypedClient<T> iredisClient = Redis.As<T>();
             var  redisList = iredisClient.Lists[listId];
             redisList.RemoveValue(t);
             iredisClient.Save();
         }
         /// <summary>
         /// 根据lambada表达式删除符合条件的实体
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="listId"></param>
         /// <param name="func"></param>
         public  void  RemoveEntityFromList<T>( string  listId, Func<T,  bool > func)
         {
             using  (IRedisTypedClient<T> iredisClient = Redis.As<T>())
             {
                 var  redisList = iredisClient.Lists[listId];
                 T value = redisList.Where(func).FirstOrDefault();
                 redisList.RemoveValue(value);
                 iredisClient.Save();
             }
         }
         #endregion
         //释放资源
         public  void  Dispose()
         {
             if  (Redis !=  null )
             {
                 Redis.Dispose();
                 Redis =  null ;
             }
             GC.Collect();
         }
     }
}

 


本文转自yonghu86博客园博客,原文链接:http://www.cnblogs.com/huyong/p/5614513.html,如需转载请自行联系原作者

相关文章
|
3月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
19天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
175 6
|
6月前
|
NoSQL 数据可视化 关系型数据库
安装 Redis
本文主要介绍了Linux系统下Redis的安装步骤,包括卸载旧版本、下载新版本、编译安装以及配置启动等详细操作,并解释了Redis默认端口6379的由来。同时,文章还简要说明了Windows环境下Redis的下载与服务安装方法。最后,推荐了几款Redis可视化管理工具,如RedisView、QuickRedis、AnotherRedisDesktopManager和RedisPlus,提供了它们的功能特点及下载链接,方便用户根据需求选择合适的工具进行数据库管理。
480 1
|
5月前
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
881 16
|
5月前
|
JSON NoSQL Redis
在Rocky9系统上安装并使用redis-dump和redis-load命令的指南
以上步骤是在Rocky9上使用redis-dump和redis-load命令顺利出行的秘籍。如果在实行的过程中,发现了新的冒险和挑战,那么就像一个勇敢的航海家,本着探索未知的决心,解决问题并前进。
189 14
|
7月前
|
NoSQL Ubuntu 网络安全
在 Ubuntu 20.04 上安装和配置 Redis
在 Ubuntu 20.04 上安装和配置 Redis 的步骤如下:首先更新系统包,然后通过 `apt` 安装 Redis。安装后,启用并启动 Redis 服务,检查其运行状态。可选配置包括修改绑定 IP、端口等,并确保防火墙设置允许外部访问。最后,使用 `redis-cli` 测试 Redis 功能,如设置和获取键值对。
308 1
|
7月前
|
NoSQL Java Redis
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 安装
本教程介绍在 VMware 虚拟机(CentOS 7)或阿里云服务器中安装 Redis 的过程,包括安装 gcc 编译环境、下载 Redis(官网或 wget)、解压安装、修改配置文件(如 bind、daemonize、requirepass 等设置)、启动 Redis 服务及测试客户端连接。通过 set 和 get 命令验证安装是否成功。适用于初学者快速上手 Redis 部署。
177 0
|
10月前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
788 24
|
10月前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
267 14
|
9月前
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
306 7