Redis(二):c#连接Redis
1、nuget StackExchange.Redis
2、建立RedisHelper类:
- public class RedisHelper
- {
- /// <summary>
- /// 连接字符串
- /// </summary>
- private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString;
- /// <summary>
- /// 锁
- /// </summary>
- private readonly object _lock = new object();
- /// <summary>
- /// 连接对象
- /// </summary>
- private volatile IConnectionMultiplexer _connection;
- /// <summary>
- /// 数据库
- /// </summary>
- private IDatabase _db;
- public RedisHelper()
- {
- _connection = ConnectionMultiplexer.Connect(ConnectionString);
- _db = GetDatabase();
- }
- /// <summary>
- /// 获取连接
- /// </summary>
- /// <returns></returns>
- protected IConnectionMultiplexer GetConnection()
- {
- if (_connection != null && _connection.IsConnected)
- {
- return _connection;
- }
- lock (_lock)
- {
- if (_connection != null && _connection.IsConnected)
- {
- return _connection;
- }
- if (_connection != null)
- {
- _connection.Dispose();
- }
- _connection = ConnectionMultiplexer.Connect(ConnectionString);
- }
- return _connection;
- }
- /// <summary>
- /// 获取数据库
- /// </summary>
- /// <param name="db"></param>
- /// <returns></returns>
- public IDatabase GetDatabase(int? db = null)
- {
- return GetConnection().GetDatabase(db ?? -);
- }
- /// <summary>
- /// 设置
- /// </summary>
- /// <param name="key">键</param>
- /// <param name="data">值</param>
- /// <param name="cacheTime">时间</param>
- public virtual void Set(string key, object data, int cacheTime)
- {
- if (data == null)
- {
- return;
- }
- var entryBytes = Serialize(data);
- var expiresIn = TimeSpan.FromMinutes(cacheTime);
- _db.StringSet(key, entryBytes, expiresIn);
- }
- /// <summary>
- /// 根据键获取值
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="key"></param>
- /// <returns></returns>
- public virtual T Get<T>(string key)
- {
- var rValue = _db.StringGet(key);
- if (!rValue.HasValue)
- {
- return default(T);
- }
- var result = Deserialize<T>(rValue);
- return result;
- }
- /// <summary>
- /// 反序列化
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="serializedObject"></param>
- /// <returns></returns>
- protected virtual T Deserialize<T>(byte[] serializedObject)
- {
- if (serializedObject == null)
- {
- return default(T);
- }
- var json = Encoding.UTF8.GetString(serializedObject);
- return JsonConvert.DeserializeObject<T>(json);
- }
- /// <summary>
- /// 判断是否已经设置
- /// </summary>
- /// <param name="key"></param>
- /// <returns></returns>
- public virtual bool IsSet(string key)
- {
- return _db.KeyExists(key);
- }
- /// <summary>
- /// 序列化
- /// </summary>
- /// <param name="data"></param>
- /// <returns>byte[]</returns>
- private byte[] Serialize(object data)
- {
- var json = JsonConvert.SerializeObject(data);
- return Encoding.UTF8.GetBytes(json);
- }
- }
3、查看远程Redis端口是否开放:
如果没有开放的话,请修改Redis的conf文件的bind:127.0.0.1 改为 bind 0.0.0.0
Redis(二):c#连接Redis的更多相关文章
- 4.用Redis Desktop Manager连接Redis(Windows)
相比连接CentOS的Redis,在Windows中的操作简单得让人感动. 所以这里我们使用的服务器系统是Windows Server 2016 R2. 而Windows版本的Redis官方网站并没有 ...
- Redis Desktop Manager连接Redis 遇到的一系列问题
最近在做一个土地项目的后台,主要是一个信息采集调查系统,使用的框架是: * 核心框架:Spring Framework 4.2 * 日志管理:SLF4J 1.7.Log4j 1.2 * 视图框架:Sp ...
- 3.用Redis Desktop Manager连接Redis
Redis Desktop Manager是Redis图形化管理工具,方便管理人员更方便直观地管理Redis数据. 然而在使用Redis Desktop Manager之前,有几个要素需要注意: 一. ...
- 用Redis Desktop Manager连接Redis
Redis Desktop Manager是Redis图形化管理工具,方便管理人员更方便直观地管理Redis数据. 然而在使用Redis Desktop Manager之前,有几个要素需要注意: 一. ...
- [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis 介绍了Redis的初始化脚本文件及启动配置文件,并图解如何以服务的形式来启动.终止Redis服务,可以说我们的 ...
- Redis(二十一):Redis性能问题排查解决手册(转)
性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息.通过这些信息来分析文章后面提到的一些性能指标. info命令输出的数 ...
- 用Redis Desktop Manager连接Redis(CentOS)
Redis Desktop Manager是Redis图形化管理工具,方便管理人员更方便直观地管理Redis数据. 然而在使用Redis Desktop Manager之前,有几个要素需要注意: 一. ...
- 3.用Redis Desktop Manager连接Redis(CentOS)
Redis Desktop Manager是Redis图形化管理工具,方便管理人员更方便直观地管理Redis数据. 然而在使用Redis Desktop Manager之前,有几个要素需要注意: 一. ...
- Redis系列-远程连接redis并给redis加锁
假设两台redis服务器,ip分别为:192.168.1.101和192.168.1.103,如何在101上通过redis-cli访问103上的redis呢?在远程连接103之前,先讲下redis-c ...
- Redis记录-JAVA连接Redis
在Java程序中使用Redis之前,需要确保在机器上安装了Redis的Java驱动程序和Java环境.可以先在将Java电脑上并配置好环境. 安装 现在,让我们看看如何设置Redis Java驱动程序 ...
随机推荐
- 如何对react进行性能优化
React本身就非常关注性能,其提供的虚拟DOM搭配上DIff算法,实现对DOM操作最小粒度的改变也是非常高效的,然而其组件的渲染机制,也决定了在对组件更新时还可以进行更细致的优化. react组件 ...
- WCF系列教程之WCF中的会话
本文参考自http://www.cnblogs.com/wangweimutou/p/4516224.html,纯属读书笔记,加深记忆 一.WCF会话简介 1.在WCF应用程序中,回话将一组消息相互关 ...
- pycharm使用github
pycharm使用github 绑定账号 File-settings 在搜索框输入git 会出现github,然后在旁边输入你github的用户名和密码,可以点击”test”测试一下,如果出现: Co ...
- Spring源码深度解析系列-----------org.springframework.aop-3.0.6.RELEASE
Spring源码深度解析系列-----------org.springframework.aop-3.0.6.RELEASE
- [心平气和读经典]The TCP/IP Guide(001)
The TCP/IP Guide[Page 40,41] Introduction To the TCP/IP Guide | TCP/IP指南概述 As I sit here writing thi ...
- 话说C语言的关键字volatile
最近搞NVMe驱动需求分析,对volatile这个单词实在是再熟悉不过了. 而在C语言中,有一个关键字就叫做volatile, 其字面意思是"挥发性的, 不稳定的,可改变的". 那 ...
- 介绍Windows Azure HDInsight服务的Hadoop Storm的视频
介绍Windows Azure HDInsight服务的Hadoop Storm的原理,用例及开发入门的视频,收藏一下: http://channel9.msdn.com/Shows/Data-Exp ...
- redis数据类型(三)hash类型
一.hash类型 hash是一个string类型的field和value的映射表.添加,删除操作都是O(1)(平均). hash特别适合用于存储对象.相对于将对象的每个字段存成单个string ...
- Nginx教程(五) Nginx配置文件详解
一. Nginx配置文件nginx.conf中文详解 #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processe ...
- Jquery 搜索框自动提示
为文本框增加自动提示下拉功能,比如输入 1,则从后台数据库查询出包含1 的字段,在文本框增加下拉列表供用户选择 ajax 返回数据为搜索查询字段的json集合 <script src=" ...