redis 储存对象

Posted hurui12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
        }

    }

 

以上是关于redis 储存对象的主要内容,如果未能解决你的问题,请参考以下文章

Liunx下Redis集群的安装与测试,以及项目中的应用(redis中对象和集合的储存)。

jedis连接redis

redis存储对象大小2m

Redis hash(哈希)相关命令

Redis的基本知识

Redis 数据结构的底层实现 RealObject