首页 >

基于Redis分布式缓存实现

数据库|mysql教程基于Redis分布式缓存实现
Redis分布式,Redis缓存,分布式缓存,Redis,基
数据库-mysql教程
html精品源码,ubuntu可以修复吗,python爬虫遇见js,php exif 旋转,seo会议报告lzw
在项目中使用redis做为缓存,还没有使用memcache,考虑因素主要有两点:redis丰富的数据结构,其hash,list,set以及功能丰富的Strin
开单大师破解源码,ubuntu查看流量命令,怪物猎人3爬虫,php短视,鲤城区seolzw
刷枪网站源码,vscode如何做注释,ubuntu变成guest,怎样完全卸载tomcat,爬虫scrapy优势,php实现抽奖程序,广州seo营销多少钱,响应式网站 测试,discuz3.1模板下载lzw

简单说明下,写此文章算是对自己近一段工作的总结,希望能对你有点帮助,同时也是自己的一点小积累。

一.为什么选择redis

在项目中使用redis做为缓存,,还没有使用memcache,考虑因素主要有两点:

1.redis丰富的数据结构,其hash,list,set以及功能丰富的String的支持,对于实际项目中的使用有很大的帮忙。(可参考官网redis.io)

2.redis单点的性能也非常高效(利用项目中的数据测试优于memcache).

基于以上考虑,因此选用了redis来做为缓存应用。

二.分布式缓存的架构设计

1.架构设计

由于redis是单点,项目中需要使用,必须自己实现分布式。基本架构图如下所示:

基于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事物介绍 )


基于Redis分布式缓存实现
  • php操作redis缓存方法分享【PHP】
  • php操作redis缓存方法分享【PHP】 | php操作redis缓存方法分享【PHP】 ...

    基于Redis分布式缓存实现
  • CI框架中redis缓存相关操作文件示例代码【PHP】
  • CI框架中redis缓存相关操作文件示例代码【PHP】 | CI框架中redis缓存相关操作文件示例代码【PHP】 ...

    基于Redis分布式缓存实现
  • redis缓存是什么意思
  • redis缓存是什么意思 | redis缓存是什么意思 ...