写点什么

12 年高级工程师的“飞升之路”,如何解决 redis 的并发竞争 key 问题

发布于: 7 小时前

咱先来聊聊 Redis

像 Redis 的基础入门,掌握下图这几个列出来的知识点足以了。



进阶的话,就得下点功夫了,事务、主从复制、哨兵、集群等等之类的搞不明白你就上不去呀。



再看美团亿级流量 Redis 实战,Redis 分布式锁、session、缓存与数据库一致性问题、缓存雪崩等之类的都是重中之重的技术点,必须掌握,没得商量。



看了这些个技术点,那么我现在就来考考你一些 Redis 面试问题(准备好,接招吧):


  1. 为什么要用 redis? /为什么要用缓存?

  2. 为什么要用 redis 而不用 map/guava 做缓存?

  3. 如何保证缓存与数据库双写时的数据一致性?

  4. redis 常见数据结构以及使用场景分析?(String/Hash/List/Set/Sorted Set)

  5. redis 如何设置过期时间?

  6. redis 内存淘汰机制(MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?

  7. Redis 持久化有哪几种方式,怎么选?(怎么保证 redis 挂掉之后再重启数据可以进行恢复?)

  8. redis 事务?

  9. Redis 常见异常及解决方案?(缓存穿透/缓存雪崩/缓存预热/缓存降级)

  10. 分布式环境下常见的应用场景?(分布式锁/分布式自增 ID)

  11. Redis 集群模式?(主从模式/哨兵模式/Cluster 集群模式)

  12. 如何解决 Redis 的并发竞争 Key 问题?



接不住的请看下方答案截图(解析不少,截取不完,可提供完整的答案解析原件):




接得住的继续,**Redis 必备 70 题(概念+数据结构与指令+高并发处理策略+集群+缓存管理与持久化机制+应用场景设计)**答案已都整理好


  • 第一部分:Redis 的概念理解

  • 1. 什么是 Redis?

  • 2. Redis 的特点有哪些?

  • 3. Memcache 与 Redis 的区别都有哪些?

  • 4. Redis 相比 Memcached 有哪些优势?

  • 5. 如何实现本地缓存?请描述一下你知道的方式

  • 6. Redis 通讯协议是什么?有什么特点?

  • 第二部分:Redis 数据结构与指令

  • 1. Redis 支持的数据类型

  • 2. Redis 常用的命令有哪些?

  • 3. 一个字符串类型的值能存储最大容量是多少?

  • 4. Redis 各个数据类型最大存储量分别是多少?

  • 5. 请介绍一下 Redis 的数据类型 SortedSet(zset)以及底层实现机制?

  • 6. Redis 事务相关命令有哪些?

  • 7. 什么是 Redis 事务?原理是什么?

  • 8. Redis 事务的注意点有哪些?

  • 9. Redis 为什么不支持回滚?

  • 10. 请介绍一下 Redis 的 Pipeline(管道),以及使用场景

  • 11. 请说明一下 Redis 的批量命令与 Pipeline 有什么不同?

  • 12. 请介绍一下 Redis 的发布订阅功能

  • 13. Redis 的链表数据结构的特征有哪些?

  • 14. 请介绍一下 Redis 的 String 类型底层实现?

  • 15. Redis 的 String 类型使用 SSD 方式实现的好处?

  • 16. 设置键的生存时间和过期时间有哪些命令?

  • 第三部分:Redis 高并发处理策略

  • 1. 为什么 Redis 需要把所有数据放到内存中?

  • 2. Redis 是单线程的吗?

  • 3. Redis 为什么设计成单线程的?

  • 4. 什么是缓存穿透?怎么解决?

  • 5. 什么是缓存雪崩? 怎么解决?

  • 6. 缓存的更新策略有几种?分别有什么注意事项?

  • 7. 请介绍几个可能导致 Redis 阻塞的原因

  • 8. 怎么去发现 Redis 阻塞异常情况?

  • 第四部分:Redis 集群结构以及设计理念

  • 1. Redis 集群架构模式有哪几种?

  • 2. Redis 集群最大节点个数是多少?

  • 3. Redis 集群的主从复制模型是怎样的?

  • 4. 请介绍一下 Redis 集群实现方案

  • 5. Redis 集群会有写操作丢失吗?为什么

  • 6. Redis 慢查询是什么?通过什么配置?

  • 7. Redis 的慢查询修复经验有哪些?怎么修复的?

  • 8. 如何优化 Redis 服务的性能?

  • 9. Redis 的主从复制模式有什么优缺点?

  • 10. Redis sentinel(哨兵)模式优缺点有哪些?

  • 11. 如何设置 Redis 的最大连接数?查看 Redis 的最大连接数?查看 Redis 的当前

  • 12. 介绍一些 Redis 常用的安全设置?

  • 第五部分:Redis 缓存管理与持久化机制

  • 1. Redis 持久化机制有哪些?

  • 2. Redis 持久化机制 AOF 和 RDB 有哪些不同之处?

  • 3. 请介绍一下 RDB 持久化机制的优缺点

  • 4. 请介绍一下 AOF 持久化机制的优缺点

  • 5. 如果 AOF 文件的数据出现异常, Redis 服务怎么处理?

  • 6. 常见的淘汰算法有哪些?

  • 7. Redis 淘汰策略有哪些?

  • 8. Redis 缓存失效策略有哪些?

  • 9. Redis 如何做内存优化?

  • 10. 什么是 bigkey? 有什么影响?

  • 11. 怎么发现 bigkey?

  • 12. Redis 的内存消耗分类有哪些?内存统计使用什么命令?

  • 13. 简单介绍一下 Redis 的内存管理方式有哪些?

  • 14. 如何设置 Redis 的内存上限?有什么作用?

  • 15. Redis 报内存不足怎么处理?

  • 第六部分:Redis 应用场景设计

  • 1. Redis 适用场景有哪些?

  • 2. Redis 常用的业务场景有哪些?

  • 3. Redis 支持的 Java 客户端有哪些? 简单说明一下特点。

  • 4. 请简单描述一下 Jedis 的基本使用方法?

  • 5. Jedis 连接池链接方法有什么优点?

  • 6. 什么是分布式锁?有什么作用?

  • 7. 分布式锁可以通过什么来实现?

  • 8. 介绍一下分布式锁实现需要注意的事项?

  • 9. Redis 怎么实现分布式锁?

  • 10. 缓存命中率表示什么?

  • 11. 怎么提高缓存命中率?

  • 12. 请介绍一下 Spring 注解缓存


聊完面试,该动手了,看看 Redis 实战,比如下方这本翻译过来的**《Redis In Action》**就是很不错的参考材料



全书是分三个部分:入门、核心概念、进阶内容。


  • 第一部分对 Redis 进行了介绍,说明了 Redis 的基本使用方法、它拥有的 5 种数据结构以及操作这 5 种数据结构的命令,并讲解了如何使用 Redis 去构建文章聚合网站、cookie、购物车、网页缓存、数据库行缓存等一系列程序。



  • 第二部分对 Redis 命令进行了更详细的介绍,并展示了如何使用 Redis 去构建更为复杂的辅助工具和应用程序,并在最后展示了如何使用 Redis 去构建一个简单的社交网站。



  • 第三部分对 Redis 用户经常会遇到的一些问题进行了介绍,讲解了降低 Redis 内存占用的方法、扩展 Redis 性能的方法以及使用 Lua 语言进行脚本编程的方法。


Redis 就说这么多,别忘了还有 MongDB


MongDB 从入门到进阶再到实战,以上的技术点我都有全部列出,掌握了你就是大佬咯~


为帮助你迅速成为大牛级人物,我想这**《MongoDB 用起来-快速上手》+《MongoDB 用起来-集群安全》**两本笔记 pdf 你还是不能错过。


第一本:MongoDB 快速上手


1 MongoDB 相关概念


  • 1.1 业务应用场景

  • 1.2 MongoDB 简介

  • 1.3 体系结构

  • 1.4 数据模型

  • 1.5 MongoDB 的特点


2 单机部署


  • 2.1 Windows 系统中的安装启动

  • 2.2 Shell 连接(mongo 命令)

  • 2.3 Compass-图形化界面客户端

  • 2.4 Linux 系统中的安装启动和连接


3 基本常用命令


  • 3.1 案例需求

  • 3.2 数据库操作

  • 3.3 集合操作

  • 3.4 文档基本 CRUD

  • 3.5 文档的分页查询

  • 3.6 文档的更多查询


4 索引-Index


  • 4.1 概述

  • 4.2 索引的类型

  • 4.3 索引的管理操作

  • 4.4 索引的使用


5 文章评论


  • 5.1 需求分析

  • 5.2 表结构分析

  • 5.3 技术选型

  • 5.4 文章微服务模块搭建

  • 5.5 文章评论实体类的编写

  • 5.6 文章评论的基本增删改查

  • 5.7 根据上级 ID 查询文章评论的分页列表

  • 5.8 MongoTemplate 实现评论点赞




第二本:MongoDB 集群和安全


1 副本集-Replica Sets


  • 1.1 简介

  • 1.2 副本集的三个角色

  • 1.3 副本集架构目标

  • 1.4 副本集的创建

  • 1.5 副本集的数据读写操作

  • 1.6 主节点的选举原则

  • 1.7 故障测试

  • 1.8 Compass 连接副本集

  • 1.9 SpringDataMongoDB 连接副本集


2 分片集群-Sharded Cluster


  • 2.1 分片概念

  • 2.2 分片集群包含的组件

  • 2.3 分片集群架构目标

  • 2.4 分片(存储)节点副本集的创建

  • 2.5 配置节点副本集的创建

  • 2.6 路由节点的创建和操作

  • 2.7 Compass 连接分片集群

  • 2.8 SpringDataMongDB 连接分片集群

  • 2.9 清除所有的节点数据(备用)


3 安全认证


  • 3.1 MongoDB 的用户和角色权限简介

  • 3.2 单实例环境

  • 3.3 副本集环境

  • 3.4 分片集群环境(扩展)



知其然不知其所以然,大厂常问面试技术如何复习?

1、热门面试题及答案大全


面试前做足功夫,让你面试成功率提升一截,这里一份热门 350 道一线互联网常问面试题及答案助你拿 offer


开源分享:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】



2、多线程、高并发、缓存入门到实战项目 pdf 书籍





3、文中提到面试题答案整理



4、Java 核心知识面试宝典


覆盖了 JVM 、JAVA 集合、JAVA 多线程并发、JAVA 基础、Spring 原理、微服务、Netty 与 RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA 算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm 的大量技术点且讲解的非常深入





用户头像

VX:Lzzzzzz63 领取资料 2021.07.29 加入

还未添加个人简介

评论

发布
暂无评论
12年高级工程师的“飞升之路”,如何解决redis的并发竞争key问题