16、说说 Redis 哈希槽的概念?
Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念 , Redis 集群有 16384 个哈希槽 , 每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽 , 集群的每个节点负责一部分 hash 槽 。

文章插图
17、Redis 集群的主从复制模型是怎样的?
为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用 , 所以集群使用了主从复制模型,每个节点都会有 N-1 个复制品.
18、Redis 集群会有写操作丢失吗?为什么?
Redis 并不能保证数据的强一致性 , 这意味这在实际中集群在特定的条件下可能会丢失写操作 。
【Redis高性能缓存数据库面试题】19、Redis 集群之间是如何复制的?
异步复制
20、Redis 集群最大节点个数是多少?
16384 个
21、Redis 集群如何选择数据库?
Redis 集群目前无法做数据库选择 , 默认在 0 数据库 。
22、Redis 中的管道有什么用?
一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应 , 这样就可以将多个命令发送到服务器 , 而不用等待回复 , 最后在一个步骤中读取该答复 。23、怎么理解 Redis 事务?
这就是管道(pipelining) , 是一种几十年来广泛使用的技术 。例如许多 POP3 协议已经实现支持这个功能 , 大大加快了从服务器下载新邮件的过程 。
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行 , 事务在执行的过程中 , 不会被其他客户端发送来的命令请求所打断 。事务是一个原子操作:事务中的命令要么全部被执行 , 要么全部都不执行 。
24、Redis 事务相关的命令有哪几个?
MULTI、EXEC、DISCARD、WATCH
25、Redis key 的过期时间和永久有效分别怎么设置?
EXPIRE 和 PERSIST 命令
26、Redis 如何做内存优化?
尽可能使用散列表(hashes) , 散列表(是说散列表里面存储的数少)使用的内存非常小 , 所以你应该尽可能的将你的数据模型抽象到一个散列表里面 。27、Redis 回收进程如何工作的?
比如你的 web 系统中有一个用户对象 , 不要为这个用户的名称 , 姓氏 , 邮箱 , 密码设置单独的 key,而是应该把这个用户的所有信息存储到一张散列表里面 。
一个客户端运行了新的命令 , 添加了新的数据 。Redi 检查内存使用情况 , 如果大于 maxmemory 的限制, 则根据设定好的策略进行回收 。一个新的命令被执行 , 等等 。
所以我们不断地穿越内存限制的边界 , 通过不断达到边界然后不断地回收回到边界以下 。
如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保存到一个新的键) , 不用多久内存限制就会被这个内存使用量超越

文章插图
28.加锁机制
29.锁互斥机制
30.watch dog 自动延期机制
31.可重入加锁机制
32.释放锁机制
33.上述 Redis 分布式锁的缺点
34.使用过 Redis 分布式锁么 , 它是怎么实现的?
先拿 setnx 来争抢锁 , 抢到之后 , 再用 expire 给锁加一个过期时间防止锁忘记了释放 。
如果在 setnx 之后执行 expire 之前进程意外 crash 或者要重启维护了 , 那会怎么样?
set 指令有非常复杂的参数 , 这个应该是可以同时把 setnx 和 expire 合成一条指令来用的!
35.使用过 Redis 做异步队列么 , 你是怎么用的?有什么缺点?
般使用 list 结构作为队列 , rpush 生产消息 , lpop 消费消息 。当 lpop 没有消息的时候 , 要适当 sleep一会再重试 。
缺点:
- 在消费者下线的情况下 , 生产的消息会丢失 , 得使用专业的消息队列如 rabbitmq 等 。
- 能不能生产一次消费多次呢?
- 使用 pub/sub 主题订阅者模式 , 可以实现 1:N 的消息队列 。
缓存穿透
一般的缓存系统 , 都是按照 key 去缓存查询 , 如果不存在对应的 value , 就应该去后端系统查找(比如DB) 。一些恶意的请求会故意查询不存在的 key,请求量很大 , 就会对后端系统造成很大的压力 。这就叫做缓存穿透 。
推荐阅读
- 对一次 redis 未授权写入攻击的分析以及学习
- Redis快的秘诀
- 你的苹果手机多久清理一次垃圾 苹果手机缓存怎么清理
- Redis内存又不够用了?教你几种集群方案轻松甩掉存储难题
- 浏览器缓存机制
- Redis实现分布式锁与Zookeeper实现分布式锁区别
- 基于redis来实现的分布式锁
- 解析redis备份文件rdb的两种方法及对比
- Redis如何保证接口的幂等性?我前后看了10遍,果断收藏
- Redis桌面管理工具Redis Desktop Manager 2019.2发布
