【七天玩转Redis实战营】答疑汇总Day3 Redis的运维实战

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 【第三讲,Redis的运维实战】 讲师:仲肥,阿里云NoSQL内核工程师;Redis Core Team member;课程内容:Redis社区简介及运营方式介绍;云Redis的账号、监控、巡检、安全等性能介绍;审计,热点,大key等一般性解法;高级容灾。答疑汇总:特感谢班委@邱谦 同学

【第三讲,Redis的运维实战】
讲师:仲肥,阿里云NoSQL内核工程师;Redis Core Team member;
课程内容:Redis社区简介及运营方式介绍;云Redis的账号、监控、巡检、安全等性能介绍;审计,热点,大key等一般性解法;高级容灾。
答疑汇总:特感谢班委@邱谦 同学

文字答疑封面.jpg

Q1. 开源Redis在高并发连接下面存在的问题怎么修复?

 

比较早的时候,是贡献给社区的feature,发现问题会反馈给社区。Redis是怎么维护客户端的呢?它是存在一个list上,每次一个连接新建之后都会把这个连接的Client丢到一个list里面,在释放的时候,需要遍历这个list,这个时间复杂度是O(n),效率比较低。我们做了一个小优化,每次连接建立之后,不仅放入list里面,同时还记录下在list里的位置,可以实现在释放的时候只有O(1)的时间复杂度。本身Redis是单线程的,在高并发下虽然有epoll来做多路复用,但是本身的cpu只能用到一个核心,在多IO的时候(企业版),提升了网络的能力,连接量比较大的时候,会有更好的性能。

 

Q2. Redis建议做分布式锁吗?有什么有点或缺点?

 

主要看业务场景。Redis本身是不提供分布式锁的,但是可以用它去做一个分布式锁的方案,这个在控制台上的文档会有详细的介绍。优点是可以相对简单地搭建起来一个分布式锁系统,但在一些特别边缘地case上,可能会有一些死锁或者其他问题。

 

Q3. Redis集群如何提高性能?

 

最简单地方式就是扩节点,Redis虽然是单线程地,但是可以用多进程的方式,一个节点只能用一个cpu,两个节点可以用两个cpu,节点越多,性能吞吐就会越强。要注意的是社区的方案是要用SmartClient,需要做一些路由。如果后面的路由信息发生变化的话,客户端需要处理这些语义。云上有proxy这一层,也就是命令过来以后proxy本身会去做这些路由,把命令分发到不同的节点,使用起来和普通的主从版就没有什么区别。

 

Q4.Redis为何单线程效率这么高?为什么使用跳表不使用B+树?

 

Redis本身的跳表是在有序集合里用的数据结构。Redis的存储是用的哈希表,哈希表时间复杂度是O(1),但是会额外占用一些空间,是一种典型的用空间换时间的优化。虽然Redis是单线程的,但执行命令的路径是很短的。

 

Q5. 有没有办法看到集群版上某个节点是什么数据?

 

云上可以直接点到某个节点上面,如果有proxy,也提供自研的指定用某个DB节点迭代数据。

 

Q6. 单机Redis增加服务器CPU是否可以优化性能?

 

可以看一下Redis日常跑的时候,CPU到底跑到多少。工作线程是只有一个的,但还有一些bio线程,比如关文件,fsync等操作通常来说都不会占用也别多的CPU。最好还是观察一下。正常来说,社区版的Redis没有开6.0的多IO的话,23核的CPU已经足够了,再往上升也就没有什么太大的效果。

 

Q7. 秒杀场景是如何使用Redis的?

 

再后续的课程中(第六节)会详细的介绍这种使用场景。

 

Q8. 内存回收机制

 

Redis除了正常读写之外,还支持设置过期时间。到了过期时间之后,逻辑上是不能够再访问这个key了,但是它并不是马上做物理删除操作的,因为做物理删除需要做整个遍历,对于单线程的Redis来说任务就比较重。它会周期性地有一些任务,随机地挑选一些key,看它有没有过期,如果过期,那就做真正的物理删除。在访问这个key的时候,会提前看一下,看这个key有没有过期。如果过期,会主动删掉这个keyRedis还支持逐出操作。如果内存使用超过MaxMemory,就会挑一些key做逐出或者删除。这就要根据自己设置的MaxMemory策略来看了。从4.0之后,还支持对操作系统碎片进行整理回收,它也是后台的一种周期性任务,可以去遍历rediskey-value,看看能不能有优化的空间,但起到的作用有限。

 

Q9. 阿里的Redis如何快速查找出大key

 

在缓存分析中有hotkeybigheybigkey会打一个RDB快照,从RDB快照中的后台任务去把RDB做遍历找出大key。这是一种离线分析方式。另外也有正在开发的在线实时的大key的定位,即将上线。

 

Q10. Redis 6.x适合生产环境吗?

 

Redis6.0有很多新的特性。6.0在阿里云上已经跑了很长时间了,在生产环境上是没有什么问题的,但是多IO并没有去支持。因为社区实现多IO的时候,虽然有多线程去做网络IO,但是它并不是IOworker是并行的,而是由worker把主线程分发,等所有的线程IO执行完之后,再进行下面的步骤。这让容易造成CPU把整个机器跑满。所以多IO这个特性并不建议再生产环境上使用。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
打赏
0
0
0
0
12298
分享
相关文章
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
196 64
Redis游戏积分排行榜项目中通义灵码的应用实战
Redis游戏积分排行榜项目中通义灵码的应用实战
71 4
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
303 3
自动化运维的利剑:Ansible实战应用
【9月更文挑战第24天】在现代IT基础设施的快速迭代与扩展中,自动化运维成为提升效率、保障稳定性的关键。本文将深入探讨Ansible这一流行的自动化工具,通过实际案例分析其如何简化日常运维任务,优化工作流程,并提高系统的可靠性和安全性。我们将从Ansible的基础概念入手,逐步深入到高级应用技巧,旨在为读者提供一套完整的Ansible应用解决方案。
自动化运维的利器:Ansible实战应用
【10月更文挑战第41天】在现代IT运维领域,自动化已成为提高效率、减少错误的关键。Ansible作为一种简单而强大的自动化工具,正被越来越多的企业采纳。本文将通过实际案例,展示如何使用Ansible简化日常运维任务,包括配置管理和批量部署等,旨在为读者提供一种清晰、易懂的自动化解决方案。
32 1
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
75 4
消息队列运维实战:攻克消息丢失、重复与积压难题
消息队列(MQ)作为分布式系统中的核心组件,承担着解耦、异步处理和流量削峰等功能。然而,在实际应用中,消息丢失、重复和积压等问题时有发生,严重影响系统的稳定性和数据的一致性。本文将深入探讨这些问题的成因及其解决方案,帮助您在运维过程中有效应对这些挑战。
43 1
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
127 5
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
185 2

相关产品

  • 云数据库 Tair(兼容 Redis)
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等