龙空技术网

net core3.1 Redis使用——具体安装请看下一篇

rt说谎的人 180

前言:

眼前咱们对“netcoreredis”大概比较关心,看官们都需要了解一些“netcoreredis”的相关文章。那么小编同时在网络上网罗了一些对于“netcoreredis””的相关文章,希望大家能喜欢,看官们快快来学习一下吧!

下载客户端。

安装客户端

下载最新版redis,选择.zip则是免安装的版本

下载地址:

①Nuget安装 StackExchange.Redis②redishelperusing System;using System.Collections.Generic;using Microsoft.Extensions.Logging;using StackExchange.Redis;using Newtonsoft.Json;namespace WebApplication1{public class RedisHelperNetCore{//单例模式public static RedisCommon Default { get { return new RedisCommon(); } }public static RedisCommon One { get { return new RedisCommon(1, “127.0.0.1:6379”); } }public static RedisCommon Two { get { return new RedisCommon(2, “127.0.0.1:6379”); } }}////// Redis操作类/// 老版用的是ServiceStack.Redis。/// Net Core使用StackExchange.Redis的nuget包///public class RedisCommon{//public static ILogger Log = UtilLogger.Log;//日志记录//redis数据库连接字符串private string _conn = AppConfigurtaionServices.Configuration[“RedisConfig:ReadWriteHosts”] ?? “127.0.0.1:6379”;private int _db = 0;//静态变量 保证各模块使用的是不同实例的相同链接private static ConnectionMultiplexer connection;public RedisCommon() { }////// 构造函数/////////public RedisCommon(int db, string connectStr){_conn = connectStr;_db = db;}////// 缓存数据库,数据库连接///public ConnectionMultiplexer CacheConnection{	get{try{if (connection == null || !connection.IsConnected){connection = new Lazy(() => ConnectionMultiplexer.Connect(_conn)).Value;}}catch (Exception ex){//Log.LogError(“RedisHelper->CacheConnection 出错\r\n” + ex.ToString());return null;}return connection;}}////// 缓存数据库///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 = 0; 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.LogError("RedisHelper->StringGet 出错\r\n" + ex.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 = 0; i < count; i++)        {            keys[i] = keyStrs[i];        }        try        {            var values = CacheRedis.StringGet(keys);            for (var i = 0; i < values.Length; i++)            {                addrs[i] = values[i];            }            return addrs;        }        catch (Exception ex)        {            //Log.LogError("RedisHelper->StringGetMany 出错\r\n" + ex.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}
封装读取配置文件的类using Microsoft.Extensions.Configuration;using Microsoft.Extensions.Configuration.Json;public class AppConfigurtaionServices{public static IConfiguration Configuration { get; set; }static AppConfigurtaionServices(){//ReloadOnChange = true 当appsettings.json被修改时重新加载Configuration = new ConfigurationBuilder().Add(new JsonConfigurationSource { Path = “appsettings.json”, ReloadOnChange = true }).Build();}}
 ppsetting.json配置//redis分布式缓存“RedisConfig”: {//是否打开缓存1是0否“IsOpenCache”: “0”,“ReadWriteHosts”: “127.0.0.1:6379,password=123456”,“ReadOnlyHosts”: “127.0.0.1:6379,password=123456”}⑤测试调用public IActionResult Index(){#region --测试redis–var a=RedisHelperNetCore.Default.StringSet(“redis”, “redis” + DateTime.Now, TimeSpan.FromSeconds(1000000));var b = RedisHelperNetCore.Default.StringGet(“redis”);//var c= RedisHelper.Default.KeyDelete(“redis”);#endregionreturn View();}

标签: #netcoreredis