作家
登录

十个问答助你了解 Redis 高可用架构及 Redis 运维

作者: 来源: 2018-03-28 12:39:54 阅读 我要评论

缺点:

  • 架构比较新,最佳实践较少
  • 多键操作支撑有限(驱动可以曲线救国)
  • 为了机能晋升,客户端须要缓存路由表信息
  • 节点发明、reshard 操作不敷主动化

二、Redis 通用

1:Redis 相对 MySQL、PostgreSQL 这些关系型数据库,有什么竽暌古缺点?

不雅点一:

Redis 主如果用来做缓存,它有持久化,但也执偾为了缓存的靠得住罢了。长处是数据全放内存,速度快。缺点就是,数据大年夜小不克不及跨越内存大年夜小。两个用在不合营业场景,Redis 无法代替传统关系型数据库。

不雅点二:

一、高可用相干

Redis 起首它是一种内存数据库,最大年夜的优势在于效力高。尤其在某些特定场合下,例如热点数据量异常大年夜,而数据大年夜内存和磁盘之间的换入换出价值比较高的情况下,Redis 就会表现它的价值。

传统关系型数据库在于它对数据的一致性保障,它的数据模型范式是遵守严格事务规矩的构造化数据,因为其数据的高度抽象化,它调剂到内存的数据一般场合下不会占用很大年夜的内存空间。

记住一句话:任何数据库都有本身的应用处景,应当存眷数据流、数据属性。

小我的经验来说,Redis 弗成能代替 MySQL 或者 PG。

2:Redis 有哪些应用处景,是否可以举例颂峦宦哪个公司用了?

Redis 是一个高机能的缓存,一般应用在 Session 缓存、队列、排行榜、计数器、比来最热文┞仿、比来最热评论、宣布订阅等。

可以如许讲,Redis 实用于 数据及时性请求高、数据存储有过时和镌汰特点的、不须要持久化或者只须要包管弱一致性、逻辑简单的场景。

国内的互联网公司,据我懂得,根本是都在用,个中新浪对 Redis 在国内普及起了重要的感化。

别的,Redis 官网有「Who's using Redis?」的链接。

3:新房办一个复杂的 Redis 集群(Sentinel 模式),若何懂得它

方才接办一套 Redis 集群,想要懂得这套集群的相干设备。应当若何入手。难道只能经由过程 info 敕令去查看各个设备吗?

这是笔者的建议:

通读 Sentinel 官方文档:https://redis.io/topics/sentinel

Google 搜刮 Redis Sentinel,找几篇中英文的文┞仿看看

不雅点三:

进入 Sentinel 集群后,应用 info 查看集群信息

查看 Sentinel 设备文件,合营文档搞清跋扈每个参数的含义

应用几台虚拟机模仿线上情况,然后做测试,在实践中深刻懂得

思虑当前 Sentinel 集群是否有不合理的处所,如有,提出场改进

三、Redis 故障排查

客户端 TCP 状况迁徙:

办事器 TCP 状况迁徙:

CLOSED->LISTEN->SYN 收到 ->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

这个状况存在于主动提议断开请求的一端,如不雅办事器存在大年夜量的┞封个状况,那么这个办事器就充当客户端的角色,如收集爬虫,出现的原因是因为客户端提议 FIN 请求停止连接之后,收到了办事端的应答之落后入 FIN_WAIT2,之后就充公到办事端发送的 FIN 旌旗灯号导致。

PS:线上 Web 客户端用的什么竽暌癸言?

此问题的评论值得一看:http://www.aixchina.net/Question/231035-1406575

请问大年夜神们, 经由过程什么方法,可以或许知道,当前某个 Redis 实例是处于壅塞状况啊? 能不克不及经由过程某个敕令萌芽出来 ? 求解, 感谢!

RDB 的持久化须要 vm.overcommit_memory=1,不然会持久化掉败

解答一:

随便 get 一个 key,然后卡着不动就行,简单粗暴。优雅一点是看 latency 的延迟,blocked_clients 的数量,rejected_connections 的数量等。

解答二:

办法一:登录 Redis,履行 info,查看 blocked_clients

2:若何知道,当前 Redis 实例是处于壅塞状况?

办法二:履行 redis-cli --latency -h -p 查看延时情况

3:Redis 运维的故障有哪些?

答复一:

常见的运维故障

应用 keys * 把库堵逝世,——建议应用别号把这个敕令改名

跨越内存应用后,部分数据被删除——这个有删除策略的,选择合适本身的即可

没开持久化,却重启了实例,数据全掉落——记得非缓存的信息须要打开持久化

没有持久化情况下,主大年夜,主重启太快,大年夜还没认为主挂的情况下,大年夜会清空本身的数据——工资重启主节点前,先封闭大年夜节点的同步

答复二:

我简单说下 Redis 故障的排查办法吧。

懂得清跋扈营业数据流是怎么样的

结合 Redis 监控查看 QPS、缓存射中率、内存应用率等信息

确认机械层面的资本是否有异常

故障时及时上机,应用 redis-cli monitor 打印出操作日记,然后分析(过后分析此条掉效)

和研发沟通,确认是否有大年夜 Key 在堵塞(大年夜 Key 也可以在日常的巡检中获得)

总的来说,两种数据库各有各的长处和缺点。不合的营业场合有特定的寻求目标,redis 重要的是效力,实用的是一些纯真二维构造化数据无法表达的数据模型,而关系型数据库处理的是可以用范式模型表达的二维数据,寻求的是数据的高度一致性。跟着 IT 的成长,每一类型的数据库都邑在其特定的场合内发挥出无可比较的优势,最终的趋势是大年夜家趋于均衡,没有最好,只有最合适。

CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

和组内同事沟通,确切是否有误操作

和运维同事、研发一路排查流量是否正常,是否存在被刷的情况

更多的排查须要对线上体系的分析。

四、Redis 机能优化

1:进步 Redis 内存数据库的机能,有哪些办法?

这个问题有点偏题了,照样答复下吧。整顿下工作中积聚的经验:

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)