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;
            }
    
        }
  • 相关阅读:
    .NET中string和StringBuilder的区别
    Hashtable 类
    C#中null和""的区别
    Dictionary 泛型类
    宿主进程含义
    事件和委托
    关于SQLServer中索引使用及维护简介
    什么是序列化
    “锁定”语句(C# 参考)
    栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]
  • 原文地址:https://www.cnblogs.com/hurui1/p/12879812.html
Copyright © 2011-2022 走看看