0.引入.net core环境下Redis的NuGet包,StackExchange.Redis,现目前最新的2.0.519。
      

  1. 帮助类Code:

     using System;
    using System.Collections.Generic;
    using StackExchange.Redis;
    using Newtonsoft.Json;
    using YJT.Web.lib;
    using YJT.Common.Log; namespace YJT.Web.Redis
    {
    /// <summary>
    /// Redis帮助类
    /// </summary>
    public class RedisHelper
    {
    //单例模式
    public static RedisCommon Default { get { return new RedisCommon(); } }
    public static RedisCommon One { get { return new RedisCommon(, UtilConf.Configuration["RedisConfig:ReadWriteHosts"] ?? "127.0.0.1:6789"); } }
    public static RedisCommon Two { get { return new RedisCommon(, UtilConf.Configuration["RedisConfig:ReadWriteHosts"] ?? "127.0.0.1:6789"); } }
    public static RedisCommon Three { get { return new RedisCommon(, UtilConf.Configuration["RedisConfig:ReadWriteHosts"] ?? "127.0.0.1:6789"); } }
    } /// <summary>
    /// Redis操作类
    /// 老版用的是ServiceStack.Redis
    /// .Net Core使用StackExchange.Redis的nuget包
    /// </summary>
    public class RedisCommon
    {
    //redis数据库连接字符串
    private string _conn = UtilConf.Configuration["RedisConfig:ReadWriteHosts"] ?? "127.0.0.1:6789";
    private int _db = ; //静态变量 保证各模块使用的是不同实例的相同链接
    private static ConnectionMultiplexer connection; /// <summary>
    /// 构造函数
    /// </summary>
    public RedisCommon() { }
    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="db"></param>
    /// <param name="connectStr"></param>
    public RedisCommon(int db, string connectStr)
    {
    _db = db;
    _conn = connectStr;
    } /// <summary>
    /// 缓存数据库,数据库连接
    /// </summary>
    public ConnectionMultiplexer CacheConnection
    {
    get
    {
    try
    {
    if (connection == null || !connection.IsConnected)
    {
    connection = new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect(_conn)).Value;
    }
    }
    catch (Exception ex)
    {
    Log.Debug("RedisHelper->CacheConnection 出错\r\n", ex.Message.ToString());
    return null;
    }
    return connection;
    }
    } /// <summary>
    /// 缓存数据库
    /// </summary>
    public IDatabase CacheRedis => CacheConnection.GetDatabase(_db); #region --KEY/VALUE存取--
    /// <summary>
    /// 单条存值
    /// </summary>
    /// <param name="key">key</param>
    /// <param name="value">The value.</param>
    /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
    public bool StringSet(string key, string value)
    {
    return CacheRedis.StringSet(key, value);
    } /// <summary>
    /// 保存单个key value
    /// </summary>
    /// <param name="key">Redis Key</param>
    /// <param name="value">保存的值</param>
    /// <param name="expiry">过期时间</param>
    /// <returns></returns>
    public bool StringSet(string key, string value, TimeSpan? expiry = default(TimeSpan?))
    {
    return CacheRedis.StringSet(key, value, expiry);
    } /// <summary>
    /// 保存多个key value
    /// </summary>
    /// <param name="arr">key</param>
    /// <returns></returns>
    public bool StringSet(KeyValuePair<RedisKey, RedisValue>[] arr)
    {
    return CacheRedis.StringSet(arr);
    } /// <summary>
    /// 批量存值
    /// </summary>
    /// <param name="keysStr">key</param>
    /// <param name="valuesStr">The value.</param>
    /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
    public bool StringSetMany(string[] keysStr, string[] valuesStr)
    {
    var count = keysStr.Length;
    var keyValuePair = new KeyValuePair<RedisKey, RedisValue>[count];
    for (int i = ; i < count; i++)
    {
    keyValuePair[i] = new KeyValuePair<RedisKey, RedisValue>(keysStr[i], valuesStr[i]);
    } return CacheRedis.StringSet(keyValuePair);
    } /// <summary>
    /// 保存一个对象
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="key"></param>
    /// <param name="obj"></param>
    /// <returns></returns>
    public bool SetStringKey<T>(string key, T obj, TimeSpan? expiry = default(TimeSpan?))
    {
    string json = JsonConvert.SerializeObject(obj);
    return CacheRedis.StringSet(key, json, expiry);
    } /// <summary>
    /// 追加值
    /// </summary>
    /// <param name="key"></param>
    /// <param name="value"></param>
    public void StringAppend(string key, string value)
    {
    ////追加值,返回追加后长度
    long appendlong = CacheRedis.StringAppend(key, value);
    } /// <summary>
    /// 获取单个key的值
    /// </summary>
    /// <param name="key">Redis Key</param>
    /// <returns></returns>
    public RedisValue GetStringKey(string key)
    {
    return CacheRedis.StringGet(key);
    } /// <summary>
    /// 根据Key获取值
    /// </summary>
    /// <param name="key">键值</param>
    /// <returns>System.String.</returns>
    public string StringGet(string key)
    {
    try
    {
    return CacheRedis.StringGet(key);
    }
    catch (Exception ex)
    {
    Log.Debug("RedisHelper->StringGet 出错\r\n", ex.Message.ToString());
    return null;
    }
    } /// <summary>
    /// 获取多个Key
    /// </summary>
    /// <param name="listKey">Redis Key集合</param>
    /// <returns></returns>
    public RedisValue[] GetStringKey(List<RedisKey> listKey)
    {
    return CacheRedis.StringGet(listKey.ToArray());
    } /// <summary>
    /// 批量获取值
    /// </summary>
    public string[] StringGetMany(string[] keyStrs)
    {
    var count = keyStrs.Length;
    var keys = new RedisKey[count];
    var addrs = new string[count]; for (var i = ; i < count; i++)
    {
    keys[i] = keyStrs[i];
    }
    try
    { var values = CacheRedis.StringGet(keys);
    for (var i = ; i < values.Length; i++)
    {
    addrs[i] = values[i];
    }
    return addrs;
    }
    catch (Exception ex)
    {
    Log.Debug("RedisHelper->StringGetMany 出错\r\n", ex.Message.ToString());
    return null;
    }
    } /// <summary>
    /// 获取一个key的对象
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="key"></param>
    /// <returns></returns>
    public T GetStringKey<T>(string key)
    {
    return JsonConvert.DeserializeObject<T>(CacheRedis.StringGet(key));
    }
    #endregion #region --删除设置过期--
    /// <summary>
    /// 删除单个key
    /// </summary>
    /// <param name="key">redis key</param>
    /// <returns>是否删除成功</returns>
    public bool KeyDelete(string key)
    {
    return CacheRedis.KeyDelete(key);
    } /// <summary>
    /// 删除多个key
    /// </summary>
    /// <param name="keys">rediskey</param>
    /// <returns>成功删除的个数</returns>
    public long KeyDelete(RedisKey[] keys)
    {
    return CacheRedis.KeyDelete(keys);
    } /// <summary>
    /// 判断key是否存储
    /// </summary>
    /// <param name="key">redis key</param>
    /// <returns></returns>
    public bool KeyExists(string key)
    {
    return CacheRedis.KeyExists(key);
    } /// <summary>
    /// 重新命名key
    /// </summary>
    /// <param name="key">就的redis key</param>
    /// <param name="newKey">新的redis key</param>
    /// <returns></returns>
    public bool KeyRename(string key, string newKey)
    {
    return CacheRedis.KeyRename(key, newKey);
    } /// <summary>
    /// 删除hasekey
    /// </summary>
    /// <param name="key"></param>
    /// <param name="hashField"></param>
    /// <returns></returns>
    public bool HaseDelete(RedisKey key, RedisValue hashField)
    {
    return CacheRedis.HashDelete(key, hashField);
    } /// <summary>
    /// 移除hash中的某值
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="key"></param>
    /// <param name="dataKey"></param>
    /// <returns></returns>
    public bool HashRemove(string key, string dataKey)
    {
    return CacheRedis.HashDelete(key, dataKey);
    } /// <summary>
    /// 设置缓存过期
    /// </summary>
    /// <param name="key"></param>
    /// <param name="datetime"></param>
    public void SetExpire(string key, DateTime datetime)
    {
    CacheRedis.KeyExpire(key, datetime);
    }
    #endregion
    }
    }
  2. using引用备注:
    using Newtonsoft.Json;//为第三方转json 对象使用的,再熟悉不过了吧
    using YJT.Common.Log;//是一个记录日志的帮助的类,你可以用你自己的来记录日志。
    using YJT.Web.lib;//此引用是获取.net core中的appsettings.json中配置的信息。 UtilConf.Configuration["RedisConfig:ReadWriteHosts"]获取
  3. 获取appsettings.json的UtilConf.cs帮助类:
     using Microsoft.Extensions.Configuration;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text; namespace YJT.Web.lib
    {
    /// <summary>
    /// 读配置文件
    /// </summary>
    public class UtilConf
    {
    private static IConfiguration config; /// <summary>
    /// 加载配置文件
    /// </summary>
    public static IConfiguration Configuration
    {
    get
    {
    if (config != null) return config;
    config = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    .Build();
    return config;
    }
    set => config = value;
    }
    }
    }

    此类主要是获取.net core 中的json配置信息。如:UtilConf.Configuration["RedisConfig:ReadWriteHosts"]

  4. StackExchange.Redis下的IDatabase接口还有丰富的操作方法,可自行研究补充帮助类

    分享至此,欢迎留言评论~~~

.net core下Redis帮助类的更多相关文章

  1. .Net Core下 Redis的String Hash List Set和Sorted Set的例子

    1.新建一个.Net Core控制台应用程序,用Nuget导入驱动 打开程序包管理控制台, 执行以下代码. PM> Install-Package ServiceStack.Redis 即可添加 ...

  2. .Net core 下的ConfigurationManager类正确引用方法

    大家在项目中经常会用到需要引用配置文件的情况,这也是我偶然间遇到的问题,菜鸟一枚,如有需纠正多谢指点. 正题 在不先引用using的情况下直接写 ConfigurationManager.AppSet ...

  3. .net core 下使用StackExchange的Redis库访问超时解决

    原文:.net core 下使用StackExchange的Redis库访问超时解决 目录 问题:并发稍微多的情况下Redis偶尔返回超时 给出了参考网址? 结论 小备注 引用链接 问题:并发稍微多的 ...

  4. Java的redis 操作类-优化通用版本

    java操作redis多节点处理方式;http://blog.itpub.net/29254281/viewspace-1188644/首先maven引入依赖包 <dependency> ...

  5. Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类

    本文目录 1.  前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...

  6. SpringBoot整合Redis及Redis工具类撰写

            SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable). ...

  7. .net core 使用 redis

    .net core 使用 redis 个人感觉.net core 对于微软技术而言有很重要的意义 ,所以最近已有时间就想看一看关于.net core 的文章. 今天我就来写一写如何在.net core ...

  8. Linux、Windows下Redis的安装即Redis的基本使用详解

    前言 什么是Redis Redis是一个基于内存的key-value结构数据库.Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母 ...

  9. Windows下Redis缓存服务器的使用 .NET StackExchange.Redis Redis Desktop Manager

    Redis缓存服务器是一款key/value数据库,读110000次/s,写81000次/s,因为是内存操作所以速度飞快,常见用法是存用户token.短信验证码等 官网显示Redis本身并没有Wind ...

随机推荐

  1. 多功能设备mfd驱动

    一.概述 mfd是Multifunction device的简称,即多功能设备,是许多有共性的设备的集合,mfd由核心层(core)以及其下的"子设备"组成.从下文将会看到,mfd ...

  2. MIP开发教程(二) 使用MIP-CLI工具调试MIP网页

    初始化 MIP 配置 新建一个 MIP 网页 编写 MIP 网页代码 校验 MIP 网页 调试 MIP 网页 1. 初始化 MIP 配置 首先在html目录下进行初始化 MIP 配置: $ mip i ...

  3. 从Android源码修改cpu信息

    cpuinfo 网上的文章都是怎么查看/proc/cpuinfo,一直以为这种东西没法改呢,我还是太天真了./proc/cpuinfo是个文件,只读,想直接写肯定不行的.今天研究了一下,发现它的输出逻 ...

  4. 不带parent指针的successor求解

    问题: 请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继).给定树的根结点指针TreeNode* root和结点的值int p,请返回值为p的结点的后继结点的值.保证结点的值大于等于 ...

  5. 跟我一起学opencv 第三课之图像在opencv中的表示-Mat对象

    1.下面第一章图是一位美女图像,和其他数据一样图像在计算机中也是以二进制存储,下面第二张图 2.在摄像头眼里一幅图像就是一个矩阵或者说是二维数组,数组元素是像素值 3.opencv中以Mat对象表示图 ...

  6. 文本分布式表示(一):word2vec理论

    Word2vec是Google的Mikolov等人提出来的一种文本分布式表示的方法,这种方法是对神经网络语言模型的“瘦身”, 巧妙地运用层次softmax(hierarchical softmax ) ...

  7. Python 闭包小记

    闭包就是能够读取其他函数内部变量的函数.例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“.在本质上,闭包是将函数内部和函数外部连接起来 ...

  8. 【Android Studio安装部署系列】二十三、Android studio查看Gradle版本号

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 File——Project Structure 单击Project 可以看到,当前项目的gradle版本号是4.4. 参考资料 An ...

  9. 【Android Studio安装部署系列】三十六、从Android Studio3.1.4升级到Android studio3.2【以及创建android p模拟器(未成功)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 因为想要使用Android P模拟器,所以需要将Android Studio升级到3.2版本以上. 按照官网的说法:参考<ht ...

  10. springboot~集成测试里的redis

    测试不应该访问外部资源 对于单元测试,集成测试里,如果被测试的方法中使用到了redis,你需要去模拟一个单机环境的redis server,因为只有这样,你的测试才是客观的,即不会因为网络和其它因素影 ...