缓存20万数据的问题

haojialin 2014-04-18 09:26:39
我现在把用户的验证机制弄成了键值对,想存到内存里,不想每次都去数据库里去验证,因为我这个验证很频繁。这个东西存到哪里好呀?用application还是cache?还是什么东西呀?因为我这里数据量大,怎么也的有20万,不想总去库里取,我就不知道,用哪个存取这个方便快捷,因为这个验证机制取数据太频繁了。有人建议我放到内存里,怎么个放法呀,
...全文
212 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
haojialin 2014-04-18
  • 打赏
  • 举报
回复
看来就的借助外力了,不然容易挂掉呀,net 能和memcached 联合使用吗?
c02645 2014-04-18
  • 打赏
  • 举报
回复
20万,放缓存,那你的服务器内存要加到多大?服务器放内存池? memcached可行。
haojialin 2014-04-18
  • 打赏
  • 举报
回复
我是net的网站, memcached 或 redis 可以用吧?我们就会net,行不?
xiaofenggood 2014-04-18
  • 打赏
  • 举报
回复
数据量比较大 可以用 memcached 或 redis 减少本机的内存消耗
乾K大挪移 2014-04-18
  • 打赏
  • 举报
回复
来学习的,放在缓存中用户更改信息后需要刷新缓存吧
moonwrite 2014-04-18
  • 打赏
  • 举报
回复
application还是cache都是方在内存中的~ 看来你是需要代码~ using System.Runtime.Caching;
public static class CacheHelper
    {
        private static ObjectCache Cache
        {
            get
            {
                return MemoryCache.Default;
            }
        }

        public static T Get<T>(string key)
        {
            return (T)Cache[key];
        }

        /// <summary>
        /// 添加缓存(绝对过期)
        /// </summary>
        /// <param name="key"></param>
        /// <param name="data">要缓存的数据</param>
        /// <param name="cacheTime">要缓存时间,分钟</param>
        public static void Add(string key, object data, int cacheTime)
        {
            if (data == null)
                return;

            var policy = new CacheItemPolicy();
            policy.AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime);
            Cache.Add(new CacheItem(key, data), policy);
        }

        /// <summary>
        /// 添加缓存(滑动过期)
        /// </summary>
        /// <param name="key"></param>
        /// <param name="data">要缓存的数据</param>
        /// <param name="cacheTime">要缓存时间,分钟</param>
        public static void AddBySE(string key, object data, int cacheTime)
        {
            if (data == null)
                return;

            var policy = new CacheItemPolicy();
            policy.SlidingExpiration = TimeSpan.FromMinutes(cacheTime);
            Cache.Add(new CacheItem(key, data), policy);
        }

        /// <summary>
        /// 判断一个指定键是否有对应的缓存与之想关联
        /// </summary>
        /// <param name="key">key</param>
        /// <returns>Result</returns>
        public static bool IsContains(string key)
        {
            return (Cache.Contains(key));
        }

        /// <summary>
        /// 指定的键从缓存中删除值
        /// </summary>
        /// <param name="key">key</param>
        public static void Remove(string key)
        {
            Cache.Remove(key);
        }

        /// <summary>
        /// 清除所有缓存数据
        /// </summary>
        public static void Clear()
        {
            foreach (var item in Cache)
                Remove(item.Key);
        }
    }

//下面是我将省市区放进缓存

        IList<Region> RegionsCache()
        {
            const string key = "AllRegionsKey_2013-04-23 22:34:24";//缓存的键值,就如同字典
            if (!CacheHelper.IsContains(key))//判断键值是否存在缓存中
            {
                var data = _regionRepository.Table.ToList();//从数据库拿数据~
                CacheHelper.Add(key, data, 30);//将数据放进缓存~ 30分钟后过期~这是一个策略,
//不断地调用的情况下 每30分钟从数据库更新数据,没有调用那么30分钟后就释放内存了~ 我描述的不够好
            }
            return CacheHelper.Get<List<Region>>(key);//从缓存中取出数据~
        }
public void Search() { var result = RegionsCache().Where(x=>x.)//就可以用Linq来做各种查询了~ }
haojialin 2014-04-18
  • 打赏
  • 举报
回复
请大家给点指点呀。人都哪里去了饿
haojialin 2014-04-18
  • 打赏
  • 举报
回复
用哪个东西 用application还是cache?
  • 打赏
  • 举报
回复
lwj7891875 2014-04-18
  • 打赏
  • 举报
回复
放缓存 就可以
chen_ya_ping 2014-04-18
  • 打赏
  • 举报
回复
用个缓存,用.net自身带的,或者是 memcached,redis都可以,然后每个用户都用一个唯一的key,缓存这样的数据,多少时间自己定。然后就行了啦

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧