.Net 5.0快速上手 Redis

1. Redis的安装地址:

 
2.开启服务:
找到redis目录 打开cmd 输入redis-server.exe redis.windows.conf
看到如下图说明服务开启成功

 
3.基本操作:
再开一个控制台同样是redis目录下
redis-cli.exe -h 127.0.0.1 -p 6379
set myKey abc(myKey即Key,abc即value,set存)
get myKey(get读)

 

 4.Redis在C#中的实际用法:

注意:在使用redis 缓存时,必须先启动服务 redis-server.exe redis.windows.conf
dll文件://files.cnblogs.com/files/lbjlbj/dll.7z
可能会存在ConfigurationManager会报错,还需自行搜索添加引用,

奉上RedisHelper类
/// <summary>
    /// Redis 操作类
    /// </summary>
    public class RedisHelper
    {
        /// <summary>
        /// 连接字符串
        /// </summary>
        private static readonly string _connectionStr = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString;

        /// <summary>
        ////// </summary>
        private readonly object _lock = new object();

        /// <summary>
        /// 连接对象
        /// </summary>
        private volatile IConnectionMultiplexer _connection;

        /// 数据库
        /// </summary>
        private IDatabase _db;


        public RedisHelper() {
            _connection = ConnectionMultiplexer.Connect(_connectionStr);
            _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(_connectionStr);
            }

            return _connection;
        }


        /// <summary>
        /// 获取数据库
        /// </summary>
        /// <param name="db"></param>
        /// <returns></returns>
        public IDatabase GetDatabase(int? db = null)
        {
            return GetConnection().GetDatabase(db ?? -1);
        }

        /// <summary>
        /// 设置缓存
        /// </summary>
        /// <param name="key"></param>
        /// <param name="data"></param>
        /// <param name="cacheDate">设置时间</param>
        public virtual void SetCache(string key,object data,int cacheDate)
        {
            if (data == null) return;
            var entryBytes = Serialize(data);
            var expiresIn = TimeSpan.FromMinutes(cacheDate);
            _db.StringSet(key, entryBytes, expiresIn);
        }

        public virtual T GetT<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="data"></param>
        /// <returns>byte[]</returns>
        private byte[] Serialize(object data)
        {
            var json = JsonConvert.SerializeObject(data);
            return Encoding.UTF8.GetBytes(json);
        }

        /// <summary>
        /// 判断是否设置
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public virtual bool IsSet(string key)
        {
            return _db.KeyExists(key);
        }
    }

AppConfig中配置:

 <connectionStrings>
    <add name="RedisConnectionString" connectionString="localhost"/>
  </connectionStrings>

最后功能实现:

internal class Program
    {
        static void Main(string[] args)
        {
            string data = "a";
            new RedisHelper().SetCache("abc",data,10);
            Console.WriteLine("ok");
            Console.ReadKey();
        }
    }

 

Tags: