0

次のコードを使用して、各州の項目を Appfabric キャッシュに追加します。

GetObjectsInRegion メソッドを使用して、キャッシュから州リストを取得します。

ただし、120 レコードの場合、SQL サーバーよりも非常に低速です。

Appfabric では 3000 ミリ秒以上かかり、SQL サーバーでは約 30 ミリ秒かかります。

理由とは?

私を助けてください!!!!

try
        {
            using (CacheEntities context = new CacheEntities())
            {
                if (force)
                {
                    Cache.RemoveRegion(ObjectName);
                }
                if (Cache.CreateRegion(ObjectName))
                {
                    List<Province> province = (from t in context.Province select t).ToList<Province>();
                    if (province != null && province.Count() > 0)
                    {
                        foreach (Province provinceItem in province)
                        {
                            CommonFunctions.Add(ObjectName, provinceItem.ProvinceID, provinceItem);
                            totalItemsCached++;
                        }
                    }
                }

            }
        }
        catch (Exception ex)
        {
            CommonFunctions.ErrorInfo(ObjectName, ex);
        }

編集:コメントからのキャッシュ取得コード:

using System.Collections.Generic;
using System.Threading.Tasks;

public class Sample
{
    public List<object> GetListObjectsInRegion(string region)
    {
        var cache = GetCache();
        IEnumerable<KeyValuePair<string, object>> rawResult = 
              cache.GetObjectsInRegion(region);

        List<object> result = new List<object>();
        Parallel.ForEach(rawResult, rawResultItem => 
              { result.Add(rawResultItem.Value); });
        return result;
    }
}

更新: これは GetCache 関数のコードです

private static DataCacheFactory _factory;
    private static DataCache _cache;
    private static DataCache GetCache()
    {
        if (_cache != null) return _cache;

        DataCacheFactoryConfiguration configuration = new DataCacheFactoryConfiguration();
        configuration.IsCompressionEnabled = true;
        _factory = new DataCacheFactory(configuration);
        _cache = _factory.GetCache("default");
        return _cache;
    }

更新: これは appfabric 構成です

  </configSections>
  <dataCacheClient>
    <localCache isEnabled="true" sync="TimeoutBased" objectCount="1000" ttlValue="600" />
    <hosts>
      <host name="localhost" cachePort="22233" />
    </hosts>
  </dataCacheClient>
4

0 に答える 0