IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> redis的一些注意点:从单机版到集群版 -> 正文阅读

[大数据]redis的一些注意点:从单机版到集群版

redis的一些注意点:从单机版到集群版

之前有个项目,人流比较大。然后压测上不去,看监控,发现redis的cpu满了。当时提出一个说法,redis的单线程导致cpu只会用到一核,这样的话,如果连接数太多,没开启aof,导致rdb太多次。大key/value,keys耗时操作。内存太少,导致内存满了以后一直在驱逐无用内存都容易导致cpu打满,然后导致体现在前端的话就是很卡。现在就是要优化访问速度。

当时提出的方案是主从架构,加哨兵。但是这个架构不是只能保证高可用性吗,对性能没提升的。

然后就打算搭redis集群。但是我们没有搭redis集群的经验,那只能去阿里云买了。

然后发现阿里云有两个版本的集群,一种是redis5.0集群版,他的架构其实是通过代理,然后分发到各个分片上,这样的话,对外表现其实还是一个redis,但是内部实现其实扩容了。一个是redis6.0版社区版,他的架构可能是跟redis的自己集群一致的,虽然连接上还是一个节点,但是后续可能是通过这个节点可以获取其他的节点信息。

当时方案是,将生产的数据导入到阿里云5.0,阿里云的导入数据,只能通过他的工具来导入,然后我们测试了下,我们生产的数据是6.0的,然后导入不支持。

然后方案我们切换为阿里云6.0,然后发现连接连不上,然后排错来排错去。1.是白名单的问题。2.是vpc的问题,不同网段是连不上的。3.代码的问题。

阿里云redis6.0的集群连接,跟redis的普通连接一样,要带上一个参数-c,redis-cli -c -h 地址 -p 端口。而我们的普通的代码连接redispool这样的都是不带c的。自然操作不了。然后我修改了代码,改成jediscluster(这个还不和jedis适配,工具类都要大改),redisson的版本还要高一点,不然报错。然后连接和启动的时候,成功连上了,但是集群版不支持keys操作。改代码是不可能了,时间不够。

怎么办呢,然后发现我们有个服务是也用的阿里云的redis集群版,但是代码是没问题的啊,keys也能用啊。然后一看,发现了阿里云的6.0和5.0的架构区别。

那现在方案是我们生产6.0导入到本地5.0,然后本地5.0导入到阿里云5.0,然后测试。

redis6.0降级到本地5.0的话,当时是打算直接rdb直接放入然后启动,然后发现好像代码连接有问题,部分数据结构(zset)读取有问题,其他没问题。(可能是r代码的原因,redisson客户端升级了,导致key的序列化不同了,导致拿不到数据)。

然后怀疑到redis的RDB文件不是向下兼容的,所以不能直接使用RDB文件进行迁移,然后就找工具。找到了rdbtools

https://www.cnblogs.com/gaojinshun/p/15497214.html

然后测试了还是拿不到。

然后又找了,redisdump

https://www.cnblogs.com/yanjieli/p/13085481.html

都不行,都要怀疑人生了,然后发现。emmm,代码的pom依赖没还原,导致redisson的客户端版本不一致 估摸是不同版本的客户端key的序列化不同,不能混用。

后来就还原版本,就没问题了。压测了下,发现确实瓶颈不在redis了,压测的时候cpu打满,redis的cpu才25。现在瓶颈估计是tomcat或者nginx了。

qps1000到4000,能用了。

现在思路就是找个时间,停服。将生产的数据导入到本地5.0,然后导入阿里云5.0。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:46:53  更:2022-04-07 22:50:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:58:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码