C#中使用Redis学习二 .NET4.5中使用redis hash操作

上一篇>>

摘要



  上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis。本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# redis操作哈希表。并且会将封装的一些代码贴一下。在讲解的过程中,我打算结合redis操作命令一起叙述,算是作为对比吧。这样也能让读者清楚了解,所分装的代码对应的redis的哪一些操作命令。

hash哈希表简介



  

如何在.NET4.0/4.5中安装redis组件?



  在上一篇博文中,安装好的redis服务器端,要记得开启服务。然后再在.NET4.5(.NET4.0同理)项目中添加对redis操作的dll文件的引用。引用的步骤如下:

第一步:右键项目中的引用,选择“管理NuGet程序包”;

第二步:在搜索栏中输入“Redis client for the Redis NoSQL DB”,联机查找;如下图:

  联机搜索结构中的第一个(如上图红色区域的组件,其版本号为4.0.35)就是要安装的组件了。接下来我们就继续点击“安装”按钮,进入下载组件,等下载完成后,继续选择“接受条款”,然后继续安装。安装过程中会出现下图情况:

  这句红色错误的意思是我们安装的ServiceStack.Interfaces 4.0.35版本与当前的.NET4.5框架中组件不兼容。这说明我们需要降低或是提高.NET版本解决此问题。我安装的是.NET4.5,所以我只能降低版本。降低.NET版本的方法大家应该都知道的。我就在累述一次,希望大家不要嫌烦,毕竟还有新手在。方法:右键项目文件选择“属性”==》“应用程序”==》“目标框架”,然后选择各个版本去尝试之前的两步操作,直到可以安装为止。

  我试过了,.NET4.0也会遇到同样问题,直到.NET3.5才可以。当然此时安装的ServiceStack.Interfaces 版本是1.0.0.0 ,这样我们再把.NET版本恢复4.5即可使用了。,其实是变相在.NET4.0/4.5下使用redis客户端。不知道各位有没有遇到这样的问题,还是直接拷贝别人的dll文件。当自己亲自去操作的时候,才会发现,其实就算是安装一个组件都可能会出现各种各样的问题。所以,要想了解全过程的话,我们还是要身体力行的啊。好了,这样就说明在.NET4.5下安装好了redis client了。

实战:在项目中运用redis代码详解



  这部分主要是讲解怎样连接到redis服务器。其中包含很多配置,我就用代码去说明一切了。配置文件如下代码:

1  <configSections>
2     <section name="RedisConfig" type="RedisDemo.Common.Redis.RedisConfigInfo, RedisDemo"/>
3  </configSections>
4  <RedisConfig WriteServerList="127.0.0.1:6379" ReadServerList="127.0.0.1:6379" MaxWritePoolSize="60"   MaxReadPoolSize="60" AutoStart="true" LocalCacheTime="180" RecordeLog="false"/>

  在这里对RedisConfig这段配置文件的属性作下说明。

  WriteServerList:可写的Redis链接地址。

  ReadServerList:可读的Redis链接地址。

  MaxWritePoolSize:最大写链接数。

  MaxReadPoolSize:最大读链接数。

  AutoStart:自动重启。

  LocalCacheTime:本地缓存到期时间,单位:秒。

  RecordeLog:是否记录日志,该设置仅用于排查redis运行时出现的问题,如redis工作正常,请关闭该项。

  RedisConfigInfo类是记录redis连接信息,此信息和配置文件中的RedisConfig相呼应。cs代码如下:(这段代码不是我自己写的,但是我觉得应该这样设计。所以,copy了一下别人的代码。)

  1 using System.Configuration;
  2
  3 namespace RedisDemo.Common.Redis
  4 {
  5     public sealed class RedisConfigInfo : ConfigurationSection
  6     {
  7         public static RedisConfigInfo GetConfig()
  8         {
  9             var section = (RedisConfigInfo)ConfigurationManager.GetSection("RedisConfig");
 10             return section;
 11         }
 12
 13         public static RedisConfigInfo GetConfig(string sectionName)
 14         {
 15             var section = (RedisConfigInfo)ConfigurationManager.GetSection("RedisConfig");
 16             if (section == null)
 17             {
 18                 throw new ConfigurationErrorsException("Section " + sectionName + " is not found.");
 19             }
 20             return section;
 21         }
 22
 23         /// <summary>
 24         /// 可写的Redis链接地址
 25         /// </summary>
 26         [ConfigurationProperty("WriteServerList", IsRequired = false)]
 27         public string WriteServerList
 28         {
 29             get
 30             {
 31                 return (string)base["WriteServerList"];
 32             }
 33             set
 34             {
 35                 base["WriteServerList"] = value;
 36             }
 37         }
 38
 39         /// <summary>
 40         /// 可读的Redis链接地址
 41         /// </summary>
 42         [ConfigurationProperty("ReadServerList", IsRequired = false)]
 43         public string ReadServerList
 44         {
 45             get
 46             {
 47                 return (string)base["ReadServerList"];
 48             }
 49             set
 50             {
 51                 base["ReadServerList"] = value;
 52             }
 53         }
 54
 55         /// <summary>
 56         /// 最大写链接数
 57         /// </summary>
 58         [ConfigurationProperty("MaxWritePoolSize", IsRequired = false, DefaultValue = 5)]
 59         public int MaxWritePoolSize
 60         {
 61             get
 62             {
 63                 var maxWritePoolSize = (int)base["MaxWritePoolSize"];
 64                 return maxWritePoolSize > 0 ? maxWritePoolSize : 5;
 65             }
 66             set
 67             {
 68                 base["MaxWritePoolSize"] = value;
 69             }
 70         }
 71
 72         /// <summary>
 73         /// 最大读链接数
 74         /// </summary>
 75         [ConfigurationProperty("MaxReadPoolSize", IsRequired = false, DefaultValue = 5)]
 76         public int MaxReadPoolSize
 77         {
 78             get
 79             {
 80                 var maxReadPoolSize = (int)base["MaxReadPoolSize"];
 81                 return maxReadPoolSize > 0 ? maxReadPoolSize : 5;
 82             }
 83             set
 84             {
 85                 base["MaxReadPoolSize"] = value;
 86             }
 87         }
 88
 89         /// <summary>
 90         /// 自动重启
 91         /// </summary>
 92         [ConfigurationProperty("AutoStart", IsRequired = false, DefaultValue = true)]
 93         public bool AutoStart
 94         {
 95             get
 96             {
 97                 return (bool)base["AutoStart"];
 98             }
 99             set
100             {
101                 base["AutoStart"] = value;
102             }
103         }
104
105         /// <summary>
106         /// 本地缓存到期时间,单位:秒
107         /// </summary>
108         [ConfigurationProperty("LocalCacheTime", IsRequired = false, DefaultValue = 36000)]
109         public int LocalCacheTime
110         {
111             get
112             {
113                 return (int)base["LocalCacheTime"];
114             }
115             set
116             {
117                 base["LocalCacheTime"] = value;
118             }
119         }
120
121         /// <summary>
122         /// 是否记录日志,该设置仅用于排查redis运行时出现的问题,如redis工作正常,请关闭该项
123         /// </summary>
124         [ConfigurationProperty("RecordeLog", IsRequired = false, DefaultValue = false)]
125         public bool RecordeLog
126         {
127             get
128             {
129                 return (bool)base["RecordeLog"];
130             }
131             set
132             {
133                 base["RecordeLog"] = value;
134             }
135         }
136
137     }
138 }

RedisConfigInfo 类

  RedisManager类主要是创建链接池管理对象的。

 1 using System.Linq;
 2 using ServiceStack.Redis;
 3 using System.Collections.Generic;
 4
 5 namespace RedisDemo.Common.Redis
 6 {
 7     public class RedisManager
 8     {
 9         /// <summary>
10         /// redis配置文件信息
11         /// </summary>
12         private static readonly RedisConfigInfo RedisConfigInfo = RedisConfigInfo.GetConfig();
13
14         private static PooledRedisClientManager _prcm;
15
16         /// <summary>
17         /// 静态构造方法,初始化链接池管理对象
18         /// </summary>
19         static RedisManager()
20         {
21             CreateManager();
22         }
23
24         /// <summary>
25         /// 创建链接池管理对象
26         /// </summary>
27         private static void CreateManager()
28         {
29             var writeServerList = SplitString(RedisConfigInfo.WriteServerList, ",");
30             var readServerList = SplitString(RedisConfigInfo.ReadServerList, ",");
31
32             _prcm = new PooledRedisClientManager(readServerList, writeServerList,
33                              new RedisClientManagerConfig
34                              {
35                                  MaxWritePoolSize = RedisConfigInfo.MaxWritePoolSize,
36                                  MaxReadPoolSize = RedisConfigInfo.MaxReadPoolSize,
37                                  AutoStart = RedisConfigInfo.AutoStart,
38                              });
39         }
40
41         private static IEnumerable<string> SplitString(string strSource, string split)
42         {
43             return strSource.Split(split.ToArray());
44         }
45
46         /// <summary>
47         /// 客户端缓存操作对象
48         /// </summary>
49         public static IRedisClient GetClient()
50         {
51             if (_prcm == null)
52             {
53                 CreateManager();
54             }
55             return _prcm.GetClient();
56         }
57
58     }
59 }

RedisManager 类

实战:封装redis对哈希表操作的代码



  实战中,我们操作redis最好还是要封装一下的。

实战:操作redis的增删改查



  

总结



C#中使用Redis学习二 .NET4.5中使用redis hash操作

时间: 2024-08-01 22:46:30

C#中使用Redis学习二 .NET4.5中使用redis hash操作的相关文章

Redis学习二

Redis学习二 标签(空格分隔): Redis 一,link 链表结构 1,lpush key value (rpush插入到链表尾部) 作用: 把值插入到链接头部 2,rpop key(lpop key 返回并删除链表的头元素) 作用: 返回并删除链表尾元素 3,lrange key start stop 作用: 返回链表中[start ,stop]中的元素 规律: 左数从0开始,右数从-1开始 lrange link 0 2 lrange link 0 -1 4,lrem key coun

Redis——学习之路三(初识redis config配置)

我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. 我们就从上到下来理解一下这些配置信息中的某些配置: 1.dbfilename是本地持久化存储数据库文件名,默认为dump.rdb.我可以在安装目录文件夹下找到这个文件. 2.requirepass是密码,即连接服务器的密码,默认为空.下面我来设置一个密码然后用带密码的命令连接一遍. 3.msterauth

Redis学习(一)、安装Redis和客户端

Redis学习(一).安装Redis和客户端 一.Windows安装Redis 1.下载安装包Redis-x64-3.0.504.zip到本地 2.解压 3.打开CMD,切换到解压后的redis目录,然后 C:\Users\Administrator> F:F:\> CD F:\redis\Redis-x64-3.0.504F:\redis\Redis-x64-3.0.504> redis-server.exe redis.windows.conf 4.在不关闭之前的CMD的情况下,再打

C#中使用Redis学习二 在.NET4.5中使用redis hash操作

C#中使用REDIS学习一 WINDOWS安装REDIS服务器端和客户端 http://www.tuicool.com/articles/uMb2Yjz 摘要 上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis.本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# redis操作哈希表.并且会将封装的一些代码贴一下.在讲解的过程中,我打算结合redis操作命令一起叙述,算是作为对比吧.这样也能让读者清楚了 解,所分装的代码对应的redis的哪一些操作命令

Redis 学习(二) —— 数据类型及操作

Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个字符串最大为 512M 字节.字符串数据类型适用于很多场景,例如,缓存 HTML 片段或者页面. Redis 字符串是二进制安全的,也就是说,一个 Redis 字符串可以包含任意类型的数据,例如一张 JPEG 图像,或者一个序列化的对象. 我们可以把字符串当做位数组(位图)来处理,很容易统计一些基于

Redis学习记录之Java中的初步使用

1.关于Redis redis下载地址:<span style="font-family: Arial, Helvetica, sans-serif;">http://download.csdn.net/detail/he90227/8569855</span> Redis是什么?两句话可以做下概括: 1. 是一个完全开源免费的key-value内存数据库 2. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings.map. list.

Redis学习二:Redis入门介绍

一.入门概述 1.是什么 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器. Redis 与其他 key - value 缓存产品(memcached)有以下三个特点: 1)持久化:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再

redis学习二 排序

文章转载自:http://www.cnblogs.com/redcreen/archive/2011/02/15/1955226.html redis支持对list,set和sorted set元素的排序.排序命令是sort 完整的命令格式如下: SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] [STORE dstkey]  下面我们一一说明各种命令选项 (1)sort key 这个是最简单的情

(转载).NET中使用Redis(二)C#中如何使用redis

Redis官网提供了很多开源的C#客户端.例如,Nhiredis ,ServiceStack.Redis ,StackExchange.Redis等.其中ServiceStack.Redis应该算是比较流行的.它提供了一整套从Redis数据结构都强类型对象转换的机制并将对象json序列化.所以这里只介绍ServiceStack.Redis,它也是目前我们产品中所使用的客户端. ServiceStack.Redis地址:https://github.com/ServiceStack/Service