zoukankan      html  css  js  c++  java
  • redis 储存对象

    如果我们储存的对象为数组或集合,我们可以采用转json的方法开存储。

    保存

             var objStr = JsonConvert.SerializeObject(postList);//这里的postList为数据库取出的对象集合
                    byte[] bytes = Encoding.UTF8.GetBytes(objStr);
                    db.StringSet(dbKey, bytes, TimeSpan.FromMinutes(5));

    取出

     if (db.KeyExists(dbKey))
                {
                    var resStr = db.StringGet(dbKey);
                    var resStrEncoding = Encoding.UTF8.GetString(resStr);
                    var res = JsonConvert.DeserializeObject<List<Post>>(resStr);
                }

    对于没那么复杂的对象我们的hash就更好用了

      public class RedisHelper
        {
            public static HashEntry[] ToHashEnties(object obj)
            {
                PropertyInfo[] properties = obj.GetType().GetProperties();
                return properties.Select(proterty => new HashEntry(proterty.Name, proterty.GetValue(obj).ToString())).ToArray();
            }
            public static T ConvertFromRedis<T>(HashEntry[] hashEntries)
            {
                PropertyInfo[] properties = typeof(T).GetProperties();
                var obj = Activator.CreateInstance(typeof(T));
                foreach (var property in properties)
                {
                    HashEntry entry = hashEntries.FirstOrDefault(g => g.Name.ToString().Equals(property.Name));
                    if (entry.Equals(new HashEntry()))
                    {
                        continue;
                    }
                    property.SetValue(obj, Convert.ChangeType(entry.Value.ToString(), property.PropertyType));
                }
                return (T)obj;
            }
    
        }
  • 相关阅读:
    函数
    拉取代码到本地
    逻辑位运算符 以及 布尔运算符&&、||
    JS中substr与substring的区别
    ? :和!:的用法含义及es6语法...
    JS中attribute和property的区别
    并发、并行的理解
    斑鸠云商小程序记住账号和密码
    js中的foreach用法
    指针与数组
  • 原文地址:https://www.cnblogs.com/hurui1/p/12879812.html
Copyright © 2011-2022 走看看