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 储存对象的主要内容,如果未能解决你的问题,请参考以下文章