1. 介绍

EnyimMemcachedCore 是一个支持 .NET Core 的 Memcached 客户端,是从 EnyimMemcached 迁移至 .NET Core的,源代码托管在 GitHub 上:https://github.com/cnblogs/EnyimMemcachedCore ,NuGet 包地址:https://www.nuget.org/packages/EnyimMemcachedCore

2. 使用说明

2.1 安装 NuGet 包

  1. Install-Package EnyimMemcachedCore

2.2 配置

2.2.1 在 appsetting.json 中进行配置

1)不带验证的配置

  1. {
  2. "enyimMemcached": {
  3. "Servers": [
  4. {
  5. "Address": "memcached",
  6. "Port": 11211
  7. }
  8. ]
  9. }
  10. }

2)带验证的配置

  1. {
  2. "enyimMemcached": {
  3. "Servers": [
  4. {
  5. "Address": "memcached",
  6. "Port": 11211
  7. }
  8. ],
  9. "Authentication": {
  10. "Type": "Enyim.Caching.Memcached.PlainTextAuthenticator",
  11. "Parameters": {
  12. "zone": "",
  13. "userName": "username",
  14. "password": "password"
  15. }
  16. }
  17. }
  18. }

3)Startup.cs 中的配置代码

  1. public class Startup
  2. {
  3. public void ConfigureServices(IServiceCollection services)
  4. {
  5. services.AddEnyimMemcached(options => Configuration.GetSection("enyimMemcached").Bind(options));
  6. }
  7.  
  8. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  9. {
  10. app.UseEnyimMemcached();
  11. }
  12. }

2.2.2 直接硬编码配置(无需配置文件)

Startup.cs 中的硬编码配置代码

  1. public class Startup
  2. {
  3. public void ConfigureServices(IServiceCollection services)
  4. {
  5. services.AddEnyimMemcached(options =>
  6. {
  7. options.AddServer("memcached", );
  8. //options.AddPlainTextAuthenticator("", "usename", "password");
  9. });
  10. }
  11.  
  12. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  13. {
  14. app.UseEnyimMemcached();
  15. }
  16. }

2.3 调用

2.3.1 使用 IMemcachedClient 接口

  1. public class TabNavService
  2. {
  3. private ITabNavRepository _tabNavRepository;
  4. private IMemcachedClient _memcachedClient;
  5.  
  6. public TabNavService(
  7. ITabNavRepository tabNavRepository,
  8. IMemcachedClient memcachedClient)
  9. {
  10. _tabNavRepository = tabNavRepository;
  11. _memcachedClient = memcachedClient;
  12. }
  13.  
  14. public async Task<IEnumerable<TabNav>> GetAll()
  15. {
  16. var cacheKey = "aboutus_tabnavs_all";
  17. var result = await _memcachedClient.GetAsync<IEnumerable<TabNav>>(cacheKey);
  18. if (!result.Success)
  19. {
  20. var tabNavs = await _tabNavRepository.GetAll();
  21. await _memcachedClient.AddAsync(cacheKey, tabNavs, );
  22. return tabNavs;
  23. }
  24. else
  25. {
  26. return result.Value;
  27. }
  28. }
  29. }

2.3.2 使用 IDistributedCache 接口(来自 Microsoft.Extensions.Caching.Abstractions )

  1. public class CreativeService
  2. {
  3. private ICreativeRepository _creativeRepository;
  4. private IDistributedCache _cache;
  5.  
  6. public CreativeService(
  7. ICreativeRepository creativeRepository,
  8. IDistributedCache cache)
  9. {
  10. _creativeRepository = creativeRepository;
  11. _cache = cache;
  12. }
  13.  
  14. public async Task<IList<CreativeDTO>> GetCreatives(string unitName)
  15. {
  16. var cacheKey = $"creatives_{unitName}";
  17. IList<CreativeDTO> creatives = null;
  18.  
  19. var creativesJson = await _cache.GetStringAsync(cacheKey);
  20. if (creativesJson == null)
  21. {
  22. creatives = await _creativeRepository.GetCreatives(unitName)
  23. .ProjectTo<CreativeDTO>().ToListAsync();
  24.  
  25. var json = string.Empty;
  26. if (creatives != null && creatives.Count() > )
  27. {
  28. json = JsonConvert.SerializeObject(creatives);
  29. }
  30. await _cache.SetStringAsync(
  31. cacheKey,
  32. json,
  33. new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes()));
  34. }
  35. else
  36. {
  37. creatives = JsonConvert.DeserializeObject<List<CreativeDTO>>(creativesJson);
  38. }
  39.  
  40. return creatives;
  41. }
  42. }

3. 问题支持

如果在使用中遇到问题,麻烦您在 GitHub 上提交 Issue

支持 .NET Core 的 Memcached 客户端 EnyimMemcachedCore的更多相关文章

  1. php memcache 缓存与memcached 客户端的详细步骤

    缓存服务器有Memcache.Redis,我主要介绍了PHP中的Memcache,从Memcache简介开始,详细讲解了如Memcache和memcached的区别.PHP的 Memcache所有操作 ...

  2. CoreWCF 1.0 正式发布,支持 .NET Core 和 .NET 5+ 的 WCF

    CoreWCF 1.0 正式发布,支持 .NET Core 和 .NET 5+ 的 WCF https://devblogs.microsoft.com/dotnet/corewcf-v1-relea ...

  3. [开源].NET高性能框架Chloe.ORM-完美支持.NET Core

    扯淡 这是一款轻量.高效的.NET C#数据库访问框架(ORM).查询接口借鉴 Linq(但不支持 Linq).借助 lambda 表达式,可以完全用面向对象的方式就能轻松执行多表连接查询.分组查询. ...

  4. MySQL官方.NET Core驱动已出,支持EF Core

    千呼万唤始出来MySQL官方.NET Core驱动已出,支持EF Core. 昨天MySQL官方已经发布了.NET Core 驱动,目前还是预览版,不过功能已经可用. NuGet 地址:https:/ ...

  5. PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)

    我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有 ...

  6. .NET平台上的Memcached客户端介绍

    早上接到一个任务,需要对Linux服务器的Memcached的update操作进行性能测试,我发现我是一个典型的“手里拿着锤子, 就把所有问题都当成钉子”的人.我第一个念头就是,上Memcached的 ...

  7. memcached客户端的使用

    一. 概念 Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能. 二. 适用场合 1. 分布式应用 ...

  8. .NET平台上的Memcached客户端介绍(Memcached Providers)

    早上接到一个任务,需要对Linux服务器的Memcached的update操作进行性能测试,我发现我是一个典型的“手里拿着锤子,就把所有问题都当成钉子”的人.我第一个念头就是,上Memcached的官 ...

  9. NET Core驱动已出,支持EF Core

    NET Core驱动已出,支持EF Core 千呼万唤始出来MySQL官方.NET Core驱动已出,支持EF Core. 昨天MySQL官方已经发布了.NET Core 驱动,目前还是预览版,不过功 ...

随机推荐

  1. 清空Github上某个文件的历史版本

    title: 清空Github上某个文件的历史版本 author: 青南 date: 2015-01-08 16:04:53 categories: [经验] tags: [Github,histor ...

  2. 玩转spring boot——结合AngularJs和JDBC

    参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...

  3. RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密

    最近换了一份工作,工作了大概一个多月了吧.差不多得有两个月没有更新博客了吧.在新公司自己写了一个iOS的比较通用的可以架构一个中型应用的不算是框架的一个结构,并已经投入使用.哈哈 说说文章标题的相关的 ...

  4. error C4430:missing type specifier 解决错误

    错误    3    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int ...

  5. cocos2dx调用浏览器打开网址

    安卓端cocos2dx/platform/android路径下CCApplication.h: virtual void openURL(const char* pszUrl); CCApplicat ...

  6. C#语法糖大汇总

    首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...

  7. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  8. Linux学习

    Linux 命令英文全称su:Swith user 切换用户,切换到root用户cat: Concatenate 串联uname: Unix name 系统名称df: Disk free 空余硬盘du ...

  9. MMORPG大型游戏设计与开发(攻击区域 扇形)

    距离上次发布已经有了很长一段时间,期间由于各种原因没有更新这方面的技术分享,在这里深表遗憾.在MMO或其他的游戏中,会有针对各种形状的计算,通常在攻击区域里不会很复杂,常见的为矩形.圆形.扇形.今天分 ...

  10. python selenium

    https://segmentfault.com/a/1190000007249396?_ea=1293878