我有一个包含 15 个属性的对象。该对象存储在其自身类型的 List 中,但该列表有点大(330.000 个对象)。我确实将对象设置为存储在 Redis 中,一切都很好。我遇到的问题是从 Redis 获取列表时,我收到 System.OutOfMemoryException (请记住我有足够的内存和磁盘空间)。下面是异常的堆栈跟踪
at System.String.CreateStringFromEncoding(Byte* bytes, Int32 byteLength, Encoding encoding)
at System.Text.UTF8Encoding.GetString(Byte[] bytes, Int32 index, Int32 count)
at ServiceStack.StringExtensions.FromUtf8Bytes(Byte[] bytes)
at ServiceStack.Redis.RedisClient.GetValue(String key)
at ServiceStack.Redis.RedisClient.<>c__DisplayClass1c`1.<Get>b__1b(RedisClient r)
at ServiceStack.Redis.RedisClient.Exec[T](Func`2 action)
at ServiceStack.Redis.RedisClient.Get[T](String key)
at KaysisClientCache.RedisCacheProvider.GetCache[T](CacheNames key, Func`2 query) in d:\BBProjects\BBSunucu\KaysisClientCache\RedisCacheProvider.cs:line 32
以下是我设置缓存的方式
redisClient.Set(cacheOb.Name, cacheItem, DateTime.Now.AddMinutes(cacheOb.TimeoutInMin));
这是获取缓存的方式
return query != null ? redisClient.Get<List<T>>(key.ToString()).Where(query).ToList() : redisClient.Get<List<T>>(key.ToString()).ToList();
我使用 ServiceStack.Redis 版本的方式感谢任何帮助。4.0.35.0