Example #1
0
        /// <summary>
        /// hash的值类型委托存储(针对值类型)
        ///</summary>
        /// <typeparam name="T">值类型</typeparam>
        /// <param name="key">缓存key</param>
        /// <param name="hashName">hash字段</param>
        /// <param name="func">获取数据的委托方法</param>
        /// <returns></returns>
        public static T HashGetValueType <T>    (string key, string hashName, Func <T> func) where T : struct
        {
            if (func == null)
            {
                return(default(T));
            }

            key = GetFullCacheKey(key);
            var db = RedisDatabase.GetDatabase();

            T value = default(T);

            if (!RedisManager.HashExists(key, hashName))
            {
                value = func();
                db.HashSet((RedisKey)key, (RedisValue)hashName, (RedisValue)ToJson(value), 0, 0);
            }
            else
            {
                var result = db.HashGet((RedisKey)key, (RedisValue)hashName, 0);
                value = result.HasValue ? FromJson <T>
                            (result) : default(T);
            }

            return(value);
        }