All Projects → MichaCo → Cachemanager

MichaCo / Cachemanager

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

Programming Languages

C#
18002 projects
HTML
75241 projects

Projects that are alternatives of or similar to Cachemanager

Scrapbook
PHP cache library, with adapters for e.g. Memcached, Redis, Couchbase, APC(u), SQL and additional capabilities (e.g. transactions, stampede protection) built on top.
Stars: ✭ 279 (-86.38%)
Mutual labels:  redis, cache, caching, memcached
Weixinmpsdk
微信全平台 SDK Senparc.Weixin for C#,支持 .NET Framework 及 .NET Core、.NET 6.0。已支持微信公众号、小程序、小游戏、企业号、企业微信、开放平台、微信支付、JSSDK、微信周边等全平台。 WeChat SDK for C#.
Stars: ✭ 7,098 (+246.41%)
Mutual labels:  redis, cache, memcached, dotnet-core
Easycaching
💥 EasyCaching is an open source caching library that contains basic usages and some advanced usages of caching which can help us to handle caching more easier!
Stars: ✭ 1,047 (-48.9%)
Mutual labels:  redis, cache, caching, memcached
Senparc.co2net
支持 .NET Framework & .NET Core 的公共基础扩展库
Stars: ✭ 289 (-85.9%)
Mutual labels:  redis, cache, memcached, dotnet-core
Sequelize Transparent Cache
Simple to use and universal cache layer for Sequelize
Stars: ✭ 137 (-93.31%)
Mutual labels:  redis, cache, caching, memcached
Overlord
Overlord是哔哩哔哩基于Go语言编写的memcache和redis&cluster的代理及集群管理功能,致力于提供自动化高可用的缓存服务解决方案。
Stars: ✭ 1,884 (-8.05%)
Mutual labels:  redis, cache, memcached
Cache
Cache library
Stars: ✭ 310 (-84.87%)
Mutual labels:  redis, cache, memcached
React Component Caching
Speedier server-side rendering with component caching in React 16
Stars: ✭ 365 (-82.19%)
Mutual labels:  redis, caching, memcached
Olric
Distributed cache and in-memory key/value data store. It can be used both as an embedded Go library and as a language-independent service.
Stars: ✭ 2,067 (+0.88%)
Mutual labels:  cache, caching, memcached
Phpfastcache
A high-performance backend cache system. It is intended for use in speeding up dynamic web applications by alleviating database load. Well implemented, it can drops the database load to almost nothing, yielding faster page load times for users, better resource utilization. It is simple yet powerful.
Stars: ✭ 2,171 (+5.95%)
Mutual labels:  redis, cache, memcached
Stackexchange.redis.extensions
Stars: ✭ 419 (-79.55%)
Mutual labels:  redis, cache, caching
Libmc
Fast and light-weight memcached client for C++ / #python / #golang #libmc
Stars: ✭ 429 (-79.06%)
Mutual labels:  cache, caching, memcached
Cash
HTTP response caching for Koa. Supports Redis, in-memory store, and more!
Stars: ✭ 122 (-94.05%)
Mutual labels:  redis, cache, caching
Smartsql
SmartSql = MyBatis in C# + .NET Core+ Cache(Memory | Redis) + R/W Splitting + PropertyChangedTrack +Dynamic Repository + InvokeSync + Diagnostics
Stars: ✭ 775 (-62.18%)
Mutual labels:  redis, cache, dotnet-core
Cachego
Golang Cache component - Multiple drivers
Stars: ✭ 148 (-92.78%)
Mutual labels:  redis, cache, memcached
Lada Cache
A Redis based, fully automated and scalable database cache layer for Laravel
Stars: ✭ 424 (-79.31%)
Mutual labels:  redis, cache, caching
Simple Spring Memcached
A drop-in library to enable memcached caching in Spring beans via annotations
Stars: ✭ 185 (-90.97%)
Mutual labels:  cache, caching, memcached
Ansible Role Redis
Ansible Role - Redis
Stars: ✭ 176 (-91.41%)
Mutual labels:  redis, cache, memcached
Aiocache
Asyncio cache manager for redis, memcached and memory
Stars: ✭ 496 (-75.79%)
Mutual labels:  redis, cache, memcached
Synchrotron
Caching layer load balancer.
Stars: ✭ 42 (-97.95%)
Mutual labels:  redis, cache, caching

CacheManager is an open source caching abstraction layer for .NET 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, serialization, events, performance counters... The developer can opt-in to those features only if needed.

Build Status

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

CacheManager Nuget Packages

Package Name FullFramework .NET Standard
CacheManager.Core 4.5 2.0
CacheManager.StackExchange.Redis 4.6.1 2.0
CacheManager.SystemRuntimeCaching 4.5 2.0
CacheManager.Microsoft.Extensions.Caching.Memory (4.6.1) 2.0
CacheManager.Microsoft.Extensions.Configuration 4.6.1 2.0
CacheManager.Microsoft.Extensions.Logging (4.6.1) 2.0
CacheManager.Serialization.DataContract 4.5 2.0
CacheManager.Serialization.Bond 4.5 2.0
CacheManager.Serialization.Json 4.5 2.0
CacheManager.Serialization.ProtoBuf 4.5 2.0
CacheManager.Web 4.5 -
CacheManager.Memcached 4.5 -
CacheManager.Couchbase 4.5 2.0

Supported framework targets changed since CacheManager 2.0. In case you have to target .NET 40 for example, you can still use CacheManager 1.x!

Beta Packages

Beta versions of the CacheManager packages are getting pushed to https://www.myget.org/gallery/cachemanager on each build. Add the following feed, if you want to play with the not yet released bits:

https://www.myget.org/F/cachemanager/api/v3/index.json

To find which check-in created which build, use this build history.

Documentation

Documentation can be found on cachemanager.michaco.net:

Generated API documentation is also available.

Blog Posts

CacheManager related blog posts can be found on my website

Examples

Benchmarks

See benchmarks results on GitHub.

List of Features

  • One common interface for handling different caching technologies: ICache<T>
  • Configurable by
    • Code with many different paths and a fluent configuration builder
    • Microsoft.Extensions.Configuration
    • App/Web.config
    • See configuration docs
  • Support for different cache providers
  • Serialization can now be configured. Serialization is only needed in distributed caches. If no additional serialization package is installed and configured, Binary serialization will be used (if available) The following are the currently available serialization options:
    • Binary (build in if the full CLR is being used)
    • Json based on the popular Newtonsoft.Json library
    • Json with Gzip compression
    • Bond based on Microsoft.Bond supporting all three available variants
    • DataContract based on System.Runtime.Serialization library supporting binary, Json & Json with Gzip compression
    • Protocol Buffer Google's protobuf. The package uses Mark's protobuf-net implementation.
  • 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.
  • Logging CacheManager comes with an extensible logging API.
    • All standard cache operations are logged
    • Based on log levels more or less information will be logged (try Trace and Debug)
    • Current concrete implementation is based on the ASP.NET Core logging. Other implementation of CacheManager's ILoggerFactory might follow.
  • 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 in front of your distributed cache, to make read access faster. CacheManager will synchronize those layers for you.
    • Put and Add operations will always be executed 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.
    • Since 1.0.0, evictions triggered by the cache vendor can trigger events and updates
  • 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
    • Events also get triggered by the backplane (if enabled) when multiple instances are sharing the same cache.
    • New OnRemoveByHandle events triggered by actual expiration or memory pressure eviction by the cache vendor
    • Events also get triggered through the backplane and via Redis keyspace events (if configured)
  • System.Web.OutputCache implementation to use CacheManager as OutputCache provider which makes the OutputCache extremely flexible, for example by using a distributed cache like Redis across many web servers.
  • Cache clients synchronization
    • Implemented with the Redis pub/sub feature
  • Supports .Net 4.5, and can be used in cross platform projects with the new .NET Core runtime
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].