[Redis]c# redis緩存輔助類


  /// <summary>
    /// 分布式緩存
    /// </summary>
    public static class RedisCache
    {
        /// <summary>
        /// 單例工廠,每次初始化redis客戶端從工廠中獲取
        /// </summary>
        private static IRedisClientFactory _factory = RedisCacheClientFactory.Instance;
        /// <summary>
        /// 設置redis緩存
        /// </summary>
        /// <typeparam name="T">泛型類</typeparam>
        /// <param name="key">緩存鍵</param>
        /// <param name="value">泛型實體</param>
        /// <param name="expire">過期時間</param>
        /// <returns></returns>
        public static bool Set<T>(string key, T value, DateTime expire)
        {
            try
            {
                using (var client = GetClient())
                {
                    return client.Set<T>(key, value, expire);
                }
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 獲取緩存
        /// </summary>
        /// <typeparam name="T">實體</typeparam>
        /// <param name="key">鍵值</param>
        /// <returns></returns>
        public static T Get<T>(string key)
        {
            try
            {
                using (var client = GetClient())
                {
                    return client.Get<T>(key);
                }
            }
            catch
            {
                //如果redis出現異常,則直接返回默認值
                return default(T);
            }
        }
        /// <summary>
        /// 移除緩存
        /// </summary>
        /// <param name="key"></param>
        public static void Remove(string key)
        {
            try
            {
                using (var client = GetClient())
                {
                    client.Remove(key);
                }
            }
            catch
            {

            }
        }
        public static void RemoveAll()
        {
            try
            {
                using (var client = GetClient())
                {
                    var keys = client.GetAllKeys();
                    client.RemoveAll(keys);
                }
            }
            catch
            {

            }
        }
        /// <summary>
        /// 獲取客戶端
        /// </summary>
        /// <returns></returns>
        private static IRedisClient GetClient()
        {
            RedisClient client = null;
            if (string.IsNullOrEmpty(ConfigManager.RedisServer))
            {
                throw new ArgumentNullException("redis server ip is empty.");
            }
            if (string.IsNullOrEmpty(ConfigManager.RedisPwd))
            {
                throw new ArgumentNullException("redis server pwd is empty.");
            }
            client = _factory.CreateRedisClient(ConfigManager.RedisServer, ConfigManager.RedisPort);
            client.Password = ConfigManager.RedisPwd;
            client.Db = ConfigManager.RedisServerDb;
            return client;
        }
    }

用到的程序集

功能描述

可以直接緩存實體類,設置過期時間,移除緩存,獲取緩存功能。

使用RedisClientFactory工廠獲取redis客戶端實例。如果Redis設置了密碼,在配置文件中添加修改

            client = factory.CreateRedisClient(ConfigManager.RedisServer, ConfigManager.RedisPort);
            client.Password = ConfigManager.RedisPwd;

修改redis的ip和端口號,密碼即可。

使用場景

具體的使用過程中,使用redis的超時可以對數據進行一些持久化管理,對於一些數據一致性不高的數據進行緩存,使得讀取速度提高,使用redis集群時可以是用主從復制功能,Redis集群沒有中心節點,並且帶有復制和故障轉移特性,這可以避免單個節點成為性能瓶頸,或者因為某個節點下線而導致整個集群下線。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM