使用一个项目C#更新缓存

时间:2015-03-02 17:10:12

标签: c# asp.net-mvc caching

我从外部网络服务获取用户及其数据。我缓存这些项目是因为我不想每次都打网页服务。现在,如果用户更新了他们的任何信息,我将通过webservice保存它。但是我不想从Web服务获取最新数据,因为它需要很多时间。相反,我想更新我的缓存。我能这样做吗?如果是这样,最好的方法是什么?这是我的代码

List<User> users = appSecurity.SelectUsers();
var CacheKey = string.Format("GetUserList_{0}", currentUser);
CacheFactory.AddCacheItem(CacheKey, users, 300);

CacheFactory是我处理添加,清除和删除缓存的类。以下是代码

 public static void RemoveCacheItem(string key)
    {
        Cache.Remove(key);
    }

public static void ClearCache()
    {
        System.Collections.IDictionaryEnumerator enumerator = Cache.GetEnumerator();

        while (enumerator.MoveNext())
        {
            RemoveCacheItem(enumerator.Key.ToString());
        }
    }
  public static void AddCacheItem<T>(string key, T value, double timeOutInSeconds)
    {
        var Item = GetCacheItem<T>(key);
        if (Item != null)
        {
            RemoveCacheItem(key);
            Item = value;
        }
        Cache.Insert(key, value, null, DateTime.Now.AddSeconds(timeOutInSeconds), System.Web.Caching.Cache.NoSlidingExpiration);
    }

1 个答案:

答案 0 :(得分:0)

答案是肯定的,可以做到。它也可以通过许多不同的方式完成,具体取决于您要解决的问题。在基本级别,您可以使用List<T>Dictionary<T,T>来存储数据来创建缓存。

当您从外部Web服务获取信息时,您将数据推送到列表或词典中。然后,您可以在整个应用程序中使用该数据。当您需要更新该缓存时,您将更新列表/字典中的值。

你可以像这样更新你的dictonary

Dictionary<string, int> list = new Dictionary<string, int>();

然后你可以设置键的值&#34; test&#34;如下

list["test"] = list["test"] + 1;

准备好将更新的数据推送到外部源时。您需要做的就是将数据正确地解析为源所期望的格式并将其发送出去。

就像我说的那样,有很多不同的方法可以做到这一点,但这是完成它的基本示例方式。您可以使用此示例来构建并从那里开始。