Welcome 微信登录

首页 / 数据库 / MySQL / 基于Redis分布式缓存实现

简单说明下,写此文章算是对自己近一段工作的总结,希望能对你有点帮助,同时也是自己的一点小积累。一.为什么选择redis在项目中使用redis做为缓存,还没有使用memcache,考虑因素主要有两点:1.redis丰富的数据结构,其hash,list,set以及功能丰富的String的支持,对于实际项目中的使用有很大的帮忙。(可参考官网redis.io)2.redis单点的性能也非常高效(利用项目中的数据测试优于memcache).基于以上考虑,因此选用了redis来做为缓存应用。二.分布式缓存的架构设计1.架构设计由于redis是单点,项目中需要使用,必须自己实现分布式。基本架构图如下所示:2.分布式实现通过key做一致性哈希,实现key对应redis结点的分布。一致性哈希的实现:hash值计算:通过支持MD5与MurmurHash两种计算方式,默认是采用MurmurHash,高效的hash计算。一致性的实现:通过java的TreeMap来模拟环状结构,实现均匀分布3.client的选择对于jedis修改的主要是分区模块的修改,使其支持了跟据BufferKey进行分区,跟据不同的redis结点信息,可以初始化不同的ShardInfo,同时也修改了JedisPool的底层实现,使其连接pool池支持跟据key,value的构造方法,跟据不同ShardInfos,创建不同的jedis连接客户端,达到分区的效果,供应用层调用4.模块的说明脏数据处理模块,处理失败执行的缓存操作。屏蔽监控模块,对于jedis操作的异常监控,当某结点出现异常可控制redis结点的切除等操作。整个分布式模块通过hornetq,来切除异常redis结点。对于新结点的增加,也可以通过reload方法实现增加。(此模块对于新增结点也可以很方便实现)对于以上分布式架构的实现满足了项目的需求。另外使用中对于一些比较重要用途的缓存数据可以单独设置一些redis结点,设定特定的优先级。另外对于缓存接口的设计,也可以跟据需求,实现基本接口与一些特殊逻辑接口。对于cas相关操作,以及一些事物操作可以通过其watch机制来实现。(参考 redis事物介绍 http://www.linuxidc.com/Linux/2012-11/74362.htm)
  • 1
  • 2
  • 下一页
Redis事物介绍与应用Redis 2.6 新功能介绍及安装相关问题相关资讯      Redis  Redis分布式  Redis缓存  分布式缓存 
  • Redis 非关系型数据库 ( Nosql )  (07月01日)
  • 关于 Redis的订阅发布  (04月15日)
  • 分布式缓存Memcached  (02月13日)
  • C基础 redis缓存访问  (06月12日)
  • Java中使用Jedis操作Redis  (04月08日)
  • MongoDB仲裁节点的理解及Memcached  (02月13日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数