# EnyimMemcachedCore **Repository Path**: LucasDot/EnyimMemcachedCore ## Basic Information - **Project Name**: EnyimMemcachedCore - **Description**: memcached .net core版本,配置等修改,保证其不依赖于mvc. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-16 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Enyim Memcached Client This is a .NET Core client library for Memcached migrated from [EnyimMemcached](https://github.com/enyim/EnyimMemcached). Available on Nuget https://www.nuget.org/packages/EnyimMemcachedCore [![Build Status](https://travis-ci.org/cnblogs/EnyimMemcachedCore.svg?branch=dotnetcore)](https://travis-ci.org/cnblogs/EnyimMemcachedCore) ## Configure ### The appsettings.json Without Authentication ```json { "enyimMemcached": { "Servers": [ { "Address": "memcached", "Port": 11211 } ] } } ``` #### The appsettings.json With Authentication ```json { "enyimMemcached": { "Servers": [ { "Address": "memcached", "Port": 11211 } ], "Authentication": { "Type": "Enyim.Caching.Memcached.PlainTextAuthenticator", "Parameters": { "zone": "", "userName": "username", "password": "password" } } } } ``` ### Startup.cs ```cs public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddEnyimMemcached(); //services.AddEnyimMemcached(Configuration); //services.AddEnyimMemcached(Configuration, "enyimMemcached"); //services.AddEnyimMemcached(Configuration.GetSection("enyimMemcached")); //services.AddEnyimMemcached(options => options.AddServer("memcached", 11211)); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { app.UseEnyimMemcached(); } } ``` ## Example usage ### Use IMemcachedClient interface ```cs public class HomeController : Controller { private readonly IMemcachedClient _memcachedClient; private readonly IBlogPostService _blogPostService; public HomeController(IMemcachedClient memcachedClient, IBlogPostService blogPostService) { _memcachedClient = memcachedClient; _blogPostService = blogPostService; } public async Task Index() { var cacheKey = "blogposts-recent"; var cacheSeconds = 600; var posts = await _memcachedClient.GetValueOrCreateAsync( cacheKey, cacheSeconds, async () => await _blogPostService.GetRecent(10)); return Ok(posts); } } ``` ### Use IDistributedCache interface ```cs public class CreativeService { private ICreativeRepository _creativeRepository; private IDistributedCache _cache; public CreativeService( ICreativeRepository creativeRepository, IDistributedCache cache) { _creativeRepository = creativeRepository; _cache = cache; } public async Task> GetCreatives(string unitName) { var cacheKey = $"creatives_{unitName}"; IList creatives = null; var creativesJson = await _cache.GetStringAsync(cacheKey); if (creativesJson == null) { creatives = await _creativeRepository.GetCreatives(unitName) .ProjectTo().ToListAsync(); var json = string.Empty; if (creatives != null && creatives.Count() > 0) { json = JsonConvert.SerializeObject(creatives); } await _cache.SetStringAsync( cacheKey, json, new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(5))); } else { creatives = JsonConvert.DeserializeObject>(creativesJson); } return creatives; } } ```