跳至主要內容
Redis面试 - redis问题总结

Redis面试 - redis问题总结

Redis 面试会有哪些问题呢?或者学完整个体系,如何去用问题测试自己的理解呢?

常规问题

  • 什么是redis,为什么要使用它
  • redis一般有哪些使用场景
  • redis为什么快

数据类型和数据结构

  • redis有哪些数据类型
  • redis数据类型有哪些命令
  • 谈谈redis的对象机制(redisObject)
  • redis数据类型有哪些底层数据结构
  • 为什么要设计sds?
  • 一个字符串类型的值能存储最大容量是多少?512M
  • 为什么会设计Stream
  • Stream用在什么样场景
  • 消息ID的设计是否考虑了时间回拨的问题

gavin-james大约 4 分钟NoSQL RedisNoSQL Redis
Redis大厂经验 - 美团:Redis 高负载下的中断优化

Redis大厂经验 - 美团:Redis 高负载下的中断优化

本文是美团技术团队在Redis日访问量到达万亿次级别时出现网卡丢包问题的优化。文章中涉及很多会涉及内核相关的知识,不了解的可以简单看下,但是分析的思路和一步一步解决问题的方式是值得很多开发者学习的。

背景

2017年年初以来,随着Redis产品的用户量越来越大,接入服务越来越多,再加上美团点评Memcache和Redis两套缓存融合,Redis服务端的总体请求量从年初最开始日访问量百亿次级别上涨到高峰时段的万亿次级别,给运维和架构团队都带来了极大的挑战。


gavin-james大约 28 分钟NoSQL RedisNoSQL Redis
Redis大厂经验 - 微博:万亿级日访问量下,Redis在微博的9年优化历程

Redis大厂经验 - 微博:万亿级日访问量下,Redis在微博的9年优化历程

再分享一篇微博使用redis的经验的文章,因为Redis在微博内部分布在各个应用场景,比如像现在春晚必争的“红包飞”活动,还有像粉丝数、用户数、阅读数、转评赞、评论盖楼、广告推荐、负反馈、音乐榜单等等都有用到Redis;我们可以通过大厂使用redis的经验来强化对redis使用上的认知。

Redis在微博的应用场景

Redis在微博内部分布在各个应用场景,比如像现在春晚必争的“红包飞”活动,还有像粉丝数、用户数、阅读数、转评赞、评论盖楼、广告推荐、负反馈、音乐榜单等等都有用到Redis。


gavin-james大约 18 分钟NoSQL RedisNoSQL Redis
Redis进阶 - 性能调优:Redis性能调优详解

Redis进阶 - 性能调优:Redis性能调优详解

Redis 的性能问题,涉及到的知识点非常广,几乎涵盖了 CPU、内存、网络、甚至磁盘的方方面面;同时还需要对上文中一些基础或底层有详细的了解。针对Redis的性能调优,这里整理分享一篇水滴与银弹(公众号)的文章,这篇文章可以帮助你构筑Redis性能调优的知识体系。

前言

Redis 作为优秀的内存数据库,其拥有非常高的性能,单个实例的 OPS 能够达到 10W 左右。但也正因此如此,当我们在使用 Redis 时,如果发现操作延迟变大的情况,就会与我们的预期不符。


gavin-james大约 41 分钟NoSQL RedisNoSQL Redis
Redis进阶 - 运维监控:Redis的监控详解

Redis进阶 - 运维监控:Redis的监控详解

Redis实战中包含开发,集群 和 运维,Redis用的好不好,如何让它更好,这是运维要做的;本文主要在 Redis自身状态及命令可视化监控工具,以及Redis监控体系等方面帮助你构建对redis运维/监控体系的认知,它是性能优化的前提。

如何理解Redis监控呢

Redis运维和监控的意义不言而喻,我认为主要从如下三方面去构建认知体系:


gavin-james大约 30 分钟NoSQL RedisNoSQL Redis
Redis进阶 - 版本特性: Redis4.0、5.0、6.0特性整理

Redis进阶 - 版本特性: Redis4.0、5.0、6.0特性整理

在学习Redis知识体系时,我们难免会需要查看版本实现之间的差异,本文主要整理Redis较为新的版本的特性。

Redis 4

模块系统

Redis 4.0 发生的最大变化就是加入了模块系统, 这个系统可以让用户通过自己编写的代码来扩展和实现 Redis 本身并不具备的功能,因为模块系统是通过高层次 API 实现的, 它与 Redis 内核本身完全分离、互不干扰, 所以用户可以在有需要的情况下才启用这个功能。目前已经有人使用这个功能开发了各种各样的模块, 比如 Redis Labs 开发的一些模块就可以在 http://redismodules.com 看到。模块功能使得用户可以将 Redis 用作基础设施, 并在上面构建更多功能, 这给 Redis 带来了无数新的可能性。


gavin-james大约 19 分钟NoSQL RedisNoSQL Redis
Redis进阶 - 缓存问题:一致性, 穿击, 穿透, 雪崩, 污染等

Redis进阶 - 缓存问题:一致性, 穿击, 穿透, 雪崩, 污染等

Redis最常用的一个场景就是作为缓存,本文主要探讨Redis作为缓存,在实践中可能会有哪些问题?比如一致性, 穿击, 穿透, 雪崩, 污染等。

为什么要理解Redis缓存问题

在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问Mysql等数据库。这样可以大大缓解数据库的压力。

当缓存库出现时,必须要考虑如下问题:


gavin-james大约 15 分钟NoSQL RedisNoSQL Redis
Redis进阶 - 高可拓展:分片技术(Redis Cluster)详解

Redis进阶 - 高可拓展:分片技术(Redis Cluster)详解

前面两篇文章,主从复制哨兵机制保障了高可用,就读写分离而言虽然slave节点扩展了主从的读并发能力,但是写能力存储能力是无法进行扩展,就只能是master节点能够承载的上限。如果面对海量数据那么必然需要构建master(主节点分片)之间的集群,同时必然需要吸收高可用(主从复制和哨兵机制)能力,即每个master分片节点还需要有slave节点,这是分布式系统中典型的纵向扩展(集群的分片技术)的体现;所以在Redis 3.0版本中对应的设计就是Redis Cluster。


gavin-james大约 29 分钟NoSQL RedisNoSQL Redis
Redis进阶 - 高可用:哨兵机制(Redis Sentinel)详解

Redis进阶 - 高可用:哨兵机制(Redis Sentinel)详解

在上文主从复制的基础上,如果注节点出现故障该怎么办呢? 在 Redis 主从集群中,哨兵机制是实现主从库自动切换的关键机制,它有效地解决了主从复制模式下故障转移的问题。

哨兵机制(Redis Sentinel)

Redis Sentinel,即Redis哨兵,在Redis 2.8版本开始引入。哨兵的核心功能是主节点的自动故障转移。

下图是一个典型的哨兵集群监控的逻辑图:


gavin-james大约 6 分钟NoSQL RedisNoSQL Redis
Redis进阶 - 高可用:主从复制详解

Redis进阶 - 高可用:主从复制详解

我们知道要避免单点故障,即保证高可用,便需要冗余(副本)方式提供集群服务。而Redis 提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的方式。本文主要阐述Redis的主从复制。

主从复制概述

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。


gavin-james大约 16 分钟NoSQL RedisNoSQL Redis