4.3 可配置的分布式缓存(下)

上节,我们说明了封装分布式缓存的接口、配置以及在startup中的注册方式。下面的,我们具体介绍下,分布式缓存的具体实现。

第一个实现,将本地缓存作为分布式缓存,主要用于没有分布式缓存的情况,这样就可以不修改程序的情况下直接使用本地缓存。

 1     public class DefaultCacheHandler : BaseCacheHandler
 2     {
 3         private IDistributedCache memoryCache;
 4
 5         public DefaultCacheHandler(CachingConfigInfo configInfo) : base(configInfo)
 6         {
 7             this.memoryCache = new MemoryDistributedCache(new MemoryCache(new MemoryCacheOptions()));
 8         }
 9
10         protected override IDistributedCache _Cache
11         {
12             get
13             {
14                 return this.memoryCache;
15             }
16         }
17     }

第二个实现,使用redis作为分布式缓存。

 1     public class RedisCacheHandler : BaseCacheHandler
 2     {
 3         private IDistributedCache _RedisCache;
 4
 5         public RedisCacheHandler(CachingConfigInfo configInfo) : base(configInfo)
 6         {
 7             IOptions<RedisCacheOptions> optionsAccessor = new RedisCacheOptions();
 8
 9             optionsAccessor.Value.Configuration = string.Join(",", _ConfigInfo.Servers.Select(s => s.HostName + ":" + s.Port));
10             optionsAccessor.Value.InstanceName = "Runtime";
11
12             _RedisCache = new RedisCache(optionsAccessor);
13         }
14
15         protected override IDistributedCache _Cache
16         {
17             get
18             {
19                 return _RedisCache;
20             }
21         }
22     }

如果想使用Memcached等缓存,具体做法是,首先根据IDistributedCache接口实现对于memcached的存取,然后参照根据以上实现BaseCacheHandler类即可。如何根据IDistributedCache接口实现对于memcached的存取,这是一个难点,不过如果之前使用过.net 访问memcached的时候,应该对Enyim.memcached不陌生吧。博客园使用.net core改写了Enyim.memcached,具体请见.NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存

其实从这个类库的源代码我们可以发现,MemcachedClient是IDistributedCache接口的实现,因此这个我们拿过来直接使用就行,剩下再利用MemcachedClient编写一个实现BaseCacheHandler类就万事大吉了:)

面向云的.net core开发框架目录

MemcachedClient
时间: 2025-01-03 13:27:32

4.3 可配置的分布式缓存(下)的相关文章

Hadoop DistributedCache分布式缓存的使用

做项目的时候遇到一个问题,在Mapper和Reducer方法中处理目标数据时,先要去检索和匹配一个已存在的标签库,再对所处理的字段打标签.因为标签库不是很大,没必要用HBase.我的实现方法是把标签库存储成HDFS上的文件,用分布式缓存存储,这样让每个slave都能读取到这个文件. main方法中的配置: //分布式缓存要存储的文件路径 String cachePath[] = { "hdfs://10.105.32.57:8020/user/ad-data/tag/tag-set.csv&qu

php5.4之分布式缓存memcache(windows7下安装配置)

一.安装memcache memcached在windows7上的安装问题 现在安装包:http://www.jb51.net/softs/44843.html   memcache的安装包 错误: 通过cmd命令行进入到D:\webEve\memcached(下载后的解压目录) 运行 memcached.exe -d install 报错" failed to install service or service already installed" 解决方法: www.2cto.c

Spring-ehcache RMI形式的分布式缓存配置

ehcache所需jar:ehchache-core 和spring注解所需 spring-context <dependency>    <groupId>net.sf.ehcache</groupId>    <artifactId>ehcache-core</artifactId>    <version>2.6.6</version> </dependency> <dependency>  

分布式环境下配置中心实现思考

转载注明出处: 季义钦的博客 最近在考虑分布式环境下配置中心实现. 对于配置中心很难设计. 光用Zookeeper吧,发现一是跨语言支持不好,需要大量跨语言支持的开发,而且没办法在上面增加大量的算法和逻辑. 如果在Zookeeper前面加一层服务的话,又怕成为单点压力. 下面是我画的一个架构图,希望大家帮忙看看,踊跃讨论. 希望各位不管有什么意见和建议.都在下面评论里面留下自己的想法,帮助我改进,谢谢 分布式环境下配置中心实现思考,布布扣,bubuko.com

MapReduce分布式缓存程序,无法在Windows下的Eclipse中执行问题解决

在写mapreduce程序中经常要用到hadoop自动的分布式缓存DistributedCache(新版本已经换新的API),但是在windows下Eclipse中执行,会出现类似如下错误: 2016-03-03 10:53:21,424 WARN [main] util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(62)) - Unable to load native-hadoop library for your platform..

C# Azure 存储-分布式缓存Redis在session中的配置

1. 开始 对于分布式的缓存,平常的session的处理是一个用户对应一台分布式的机器,如果这台机器中途挂机或者不能处理这个用户session的情况发生,则此用户的session会丢失,会发生不可预知的错误.如下图: 如果用Redis的分布式缓存,则能避免上面的情况.因为session是保存在Redis中,不会有丢失的情况,就算中途有服务器A挂掉.如下图: 2. 代码 1)在包管理器中,输入下面的包,安装 Install-Package Microsoft.Web.RedisSessionSta

C# Azure 分布式缓存Redis的新建与配置

1. 介绍 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键包括 string,hash,list,set,sorted set,bitmap 和 hyperloglog,所以常常被称为数据结构服务器.你可以在这些类型上面运行原子操作,例如,追加字符串,增加哈希中的值,加入一个元素到列表,计算集合的交集.并集和差集,或者是从有序集合中获取最高排名的元素. 为了满足高性能,Redis 采用内

.net 下分布式缓存(Memcached)实现

准备给一个查询非常平凡的数据加上缓存,综合多种考虑,考虑使用Memcached Memcached是什么? Memcached是高性能的,分布式的内存对象缓存,用于动态应用中可减少数据库负载,提升访问速度. Mencached能缓存什么? 通过在内存里维护一个统一的巨大的hash表,Memcached能缓存各种格式的数据.如:图像.视频.文本以及数据库检索的结果等. 1.服务器端安装方法: 安装Memcached for win64 网络上的地址很多,下载后,在CMD里运行文件夹里的安装程序 m

【分布式缓存系列】集群环境下Redis分布式锁的正确姿势

一.前言 在上一篇文章中,已经介绍了基于Redis实现分布式锁的正确姿势,但是上篇文章存在一定的缺陷——它加锁只作用在一个Redis节点上,如果通过sentinel保证高可用,如果master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况: 客户端1在Redis的master节点上拿到了锁 Master宕机了,存储锁的key还没有来得及同步到Slave上 master故障,发生故障转移,slave节点升级为master节点 客户端2从新的Master获取到了对应同一个资源的锁 于是,客