.Net Core 项目简单使用 Redis 方法

397 阅读1分钟

一共三个步骤:

一、引入管理Nuget包:StackExchange.Redis

image.png

二、书写Redis辅助类

我这里帮大家写好了,直接复制过去使用即可

using Microsoft.Extensions.Caching.Distributed;
using Newtonsoft.Json;
using StackExchange.Redis;
using System;
using System.Collections.Generic;

namespace ReadJson_.Net6._0.Utils
{
    public class RedisHelper
    {
        private static RedisHelper instance; //单例
        public static RedisHelper Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new RedisHelper(Connection);
                }
                return instance;
            }
        }

        /// <summary>
        /// redis连接字符串  默认等于本地redis连接
        /// </summary>
        public static string Connection { get; set; } = "127.0.0.1:6379";
        /// <summary>
        /// DB索引  默认等于0  比如 有两个同名的redis库  默认读取第一个
        /// </summary>
        public static int DataBaseIndex { get; set; } = 0 ;
        /// <summary>
        /// redis连接类   默认连接本地redis库
        /// </summary>
        public ConnectionMultiplexer Redis { get; set; }
        /// <summary>
        /// redis库连接  数据读取
        /// </summary>
        public IDatabase DB { get; set; }

        //redis连接
        //构造方法为private,可以避免外界通过利用new创建此类实例的可能
        private RedisHelper(string connection)
        {
            Redis = ConnectionMultiplexer.Connect(connection);
            DB = Redis.GetDatabase(DataBaseIndex);
        }

        /// <summary>
        /// 删除redis Key
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public bool DeleteKey(string key)
        {
            return DB.KeyDelete(key);
        }

        /// <summary>
        /// 根据key获取对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <returns></returns>
        public T GetObjectByKey<T>(string key)
        {
            string value = DB.StringGet(key);
            if (value == null)
            {
                return default;
            }

            return JsonConvert.DeserializeObject<T>(value);
        }

        /// <summary>
        /// 根据key和obj保存数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="obj"></param>
        /// <param name="time">数据保存时间,到时自动删除</param>
        /// <returns></returns>
        public bool SetObjectWithKey<T>(string key, T obj)
        {
            string json = JsonConvert.SerializeObject(obj);
            return DB.StringSet(key, json);
        }
        public bool SetObjectWithKey<T>(string key, T obj, TimeSpan time)
        {
            string json = JsonConvert.SerializeObject(obj);
            return DB.StringSet(key, json, time);
        }
    }
}

三、在接口中调用对应操作方法

image.png

图中写明了 可以进行你都 增删查的方法,增(默认为 去比对同键的key 是否存在,存在的覆盖),所以不需要改的方法,只有增删查!

Redis 还有更多的操作方法,我这只是罗列了最简单的使用,欢迎大家继续深度挖掘更深的技术,我们互相学习!!!