We have moved!

You are currently looking at documentation for Umbraco 8 and older versions.
Go to docs.umbraco.com for documentation for Umbraco 9 and newer versions.

    Getting/Adding/Updating/Inserting Into Cache

    This section describes how you should be getting/adding/updating/inserting items in the cache.

    Use RuntimeCache

    To use the RuntimeCache you have to inject AppCaches and create a field like so:

    public class MyClass
        private readonly IAppPolicyCache _runtimeCache;
        public MyClass(AppCaches appCaches)
            _runtimeCache = appCaches.RuntimeCache;

    Read more about how to inject AppCaches).

    Adding and retrieving items in the cache

    The recommended way to put data in and get data out is to use one of the many overloaded methods of: GetCacheItem. The GetCacheItem methods (all except one) are designed to "Get or Add" to the cache. For example, the following will retrieve an item from the cache and if it doesn't exist will ensure that the item is added to it:

    var cachedItem = _runtimeCache.GetCacheItem("MyCacheKey", () => new MyObject());

    Notice 2 things:

    • The GetCacheItem method is strongly typed and
    • We are supplying a callback method which is used to populate the cache if it doesn't exist.

    The example above will retrieve a strongly typed object of MyObject from the cache with the key of "MyCacheKey", if the object doesn't exist in the cache a new instance of MyObject will be added to it with the same key.

    There are many overloads of GetCacheItem allowing you to customize how your object is cached from cache dependencies to expiration times.

    To use this generic implementation, add the Umbraco.Core.Cache namespace to your code.

    Retrieving an item from the cache without a callback

    One of the overloads of GetCacheItem doesn't specify a callback, this will allow you to retrieve an item from the cache without populating it if it doesn't exist.

    An example of usage:

    var cachedItem = _runtimeCache.GetCacheItem<MyObject>("MyCacheKey");

    Inserting an item into the cache without retrieval

    Sometimes you might want to put something in the cache without retrieving it. In this case there is an InsertCacheItem<T> method with a few overloads. This method will add or update the cache item specified by the key so if the item already exists in the cache, it will be replaced.