GithubHelp home page GithubHelp logo

yigedakoudaiya / cachemanager Goto Github PK

View Code? Open in Web Editor NEW

This project forked from michaco/cachemanager

0.0 2.0 0.0 4.68 MB

CacheManager is a common interface and abstraction layer for caching written in C#.. It supports various cache providers and implements many advanced features.

Home Page: http://cachemanager.net

License: Apache License 2.0

Batchfile 0.19% Shell 0.14% C# 97.24% Smalltalk 2.43%

cachemanager's Introduction

CacheManager

CacheManager is an open source abstraction layer for caching written in C#. It supports various cache providers and implements many advanced features.

The main goal of the CacheManager package is to make developer's life easier to handle even very complex caching scenarios.
With CacheManager it is possible to implement multiple layers of caching, e.g. in-process caching in front of a distributed cache, in just a few lines of code.

CacheManager is not just an interface to unify the programming model for various cache providers, which will make it very easy to change the caching strategy later on in a project. It also offers additional features, like cache synchronization, concurrent updates, events, performance counters... The developer can opt-in to those features only if needed.

Build Status

Build Server Status
Windows, KoreBuild Build status
Windows, MSBuild Build status
Linux, Mono Build Status

Documentation

Documentation can be found within the articles folder of the Cache Manager's repository and hosted on my website:

There is also from source generated html documentation available online.

Examples

CacheManager Nuget Packages

Package Name .Net 4.0 .Net 4.5 DNX 4.5.1 DNX Core
[CacheManager.Core] Core.nuget x x x x
[CacheManager.StackExchange.Redis] Redis.nuget x x x -
[CacheManager.SystemRuntimeCaching] SystemRuntimeCaching.nuget x x x -
[CacheManager.Memcached] Memcached.nuget x x x -
[CacheManager.Web] Web.nuget - x x -
[CacheManager.Couchbase] Couchbase.nuget - x x -

Features in Version: 0.6.x

  • One common interface for handling different caching technologies: ICache<T>
  • Configurable via app/web.config or by code.
  • Support for different cache providers
  • Update values with lock or transaction for distributed caches. The interfaced provides a simple update method which internally ensures you work with the latest version. And CacheManager handles version conflicts for you.
  • Strongly typed cache interface.
  • Multiple layers By having multiple cache handles managed by CacheManager, you can easily implement layered caches. For example an in process cache infront of your distributed cache, to make read access faster. CacheManager will synchronize those layers for you.
    • Put and Add operations will always be excecuted on all cache handles registered on the manager.
    • On Get, there are different configuration options defined by CacheUpdateMode, if the item was available in one cache handle:
      • None: No update across the cache handles on Get
      • Up: Updates the handles "above"
      • All: Updates/Adds the item to all handles
  • Expiration: It is possible to configure the expiration per cache handle within the manager or per cache item. The following are the supported expiration modes:
    • Sliding expiration: On cache hit, the cache item expiration timeout will be extended by the configured amount.
    • Absolute expiration: The cache item will expire after the configured timeout.
  • Cache Regions: Even if some cache systems do not support or implement cache regions, the CacheManager implements the mechanism. This can be used to for example group elements and remove all of them at once.
  • Statistics: Counters for all kind of cache actions.
  • Performance Counters: To be able to inspect certain numbers with perfmon, CacheManager supports performance counters per instance of the manager and per cache handle.
  • Event System: CacheManager triggers events for common cache actions: OnGet, OnAdd, OnPut, OnRemove, OnClear, OnClearRegion
  • System.Web.OutputCache implementation to use CacheManager as OutputCache provider which makes the OutputCache extremly flexible, for example by using a distributed cache like Redis across many web servers.
  • Cache clients synchronization
    • Implemented with the Redis pub/sub feature
    • (Other implementations without Redis might be an option for a later version)
  • Supports .Net 4.0, .Net 4.5, ASP.NET DNX 4.5.1 and Core

[TOC]

cachemanager's People

Contributors

michaco avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.