写点什么

2021 年 Java 者未来的出路在哪里,让人抓狂的 Nginx 性能调优

发布于: 49 分钟前

Redis 常用的数据类型

Redis 的五种常用的数据类型分别是:String、Hash、List、Set 和 Sorted set


Redis 的使用场景

1.Counting(计数)2.展示最近、最热、点击率最高、活跃度最高等等条件的 top list3.用户最近访问记录也是 redis list 的很好应用场景 4.通过 list 的 lpop 及 lpush 接口进行队列的写入和消费 5.Redis 的 Lua 的功能扩展实际给 Redis 带来了更多的应用场景,你可以编写若干 command 组合作为一个小型的非阻塞事务或者更新逻辑 6.Redis 提供的主从数据同步功能,其实是对 cache 的一个强有力功能扩展


小结


如此多的应用无非离不开 Redis 的所有特性

揭开 Redis 的神秘面纱

Redis 是一个开源(KEY-VALUE 键值对),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。采用单进程单线程模型,并发能力强大,是当前互联网架构中主流的分布式缓存工具。


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 方法实现增加。(此模块对于新增结点也可以很方便实现)

读者福利

分享一份自己整理好的 Java 面试手册,还有一些面试题 pdf


开源分享:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】


不要停下自己学习的脚步




用户头像

VX:Lzzzzzz63 领取资料 2021.07.29 加入

还未添加个人简介

评论

发布
暂无评论
2021年Java者未来的出路在哪里,让人抓狂的Nginx性能调优