前言
Redis(Remote DIctionary Server)作为一个开源/C 实现/高性能/基于内存的 key-value 存储系统,相信做 Java 的小伙伴都不会陌生。Redis 常用于缓存、分布式锁、队列(或有序集合)等场景,追求技术的小伙伴们肯定不只满足于 Redis 的使用上,肯定也想了解 Redis 背后的设计思想及对应的开发实践。
如果你是一位后端工程师,面试时八成会被问到 Redis,特别是大厂,不仅要求能简单使用 Redis,还要深入理解底层原理,具备解决常见问题的能力。可以说,熟练使用 Redis 是后端工程师的必备技能。
基于上述情况,今天给大家分享一份 我 亲笔撰写的阿里内部《 Redis 笔记》,这2份Redis核心笔记及面试高频解析,共888页,对 Redis 的相关知识做了系统全面的介绍,还是PDF版本,可自由复制,特别适合 Redis 初学者快速入门和提高。
本笔记适合人群:前半部分适合 Redis 初学者快速入门和提高;后半部分适合对于 Redis 有一定了解的开发者,深入挖掘其原理。由于篇幅原因,本文只展示了目录和内容截图
第一份笔记:Redis核心笔记
目录
一、缓存概念
二、Redis部署与使用
三、Redis高可用与集群
四、Memcached
1.缓存概念
缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较快的一方起到一个加速访问速度较慢的一方的作用,比如 CPU 的一级、二级缓存是保存了 CPU 最近经常访问的数据,内存是保存 CPU 经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的 raid 卡有也缓存,都是为了起到加速 CPU 访问硬盘数据的目的,因为 CPU 的速度太快了,CPU 需要的数据由于硬盘往往不能在短时间内满足 CPU 的需求,因此 PCU 缓存、内存、Raid 卡缓存以及硬盘缓存就在一定程度上满足了 CPU 的数据需求,即 CPU 从缓存读取数据可以大幅提高 CPU 的工作效率。
2.Redis 部署与应用
Redis和Memcached 是非关系型数据库也称为 NoSQL 数据库,MySQL、Mariadb、SQL Server、PostgreSQL、Oracle 数据库属于关系型数据(RDBMS, Relational Database Management System)
3.Redis 高可用与集群
虽然 Redis 可以实现单机的数据持久化,但无论是 RDB 也好或者 AOF 也好,都解决不了单点宕机问题,即一旦单台 Redis 服务器本身出现系统故障、硬件故障等问题后,就会直接造成数据的丢失,因此需要使用另外的技术来解决单点问题。
4.Memcached
Memcache 本身没有像 Redis 所具备的数据持久化功能,比如 RDB 和 AOF 都没有,但是可以通过做集群同步的方式,让各 memcache 服务器的数据进行同步,从而实现数据的一致性,即保证各 memcache 的数据是一样的,即使有任何一台 memcache 发生故障,只要集群种有一台 memcache 可用就不会出现数据丢失,当其他 memcache 重新加入到集群的时候可以自动从有数据的 memcache 当中自动获取数据并提供服务。
第二份笔记:Redis核心笔记
Redis高频面试题
这里只展示了14题,总共有75题解析
Redis 是互联网技术架构在存储系统中使用最为广泛的中间件,它也是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一,特别是那些优秀的、竞争激烈的大型互联网公司(比如 Twitter、新浪微博、阿里云、腾讯云、淘宝、知乎等),通常要求面试者不仅仅掌握 Redis 基础使用,更要求深层理解 Redis 内部实现的细节原理。毫不夸张地说,能把 Redis 的知识点全部吃透,你的半只脚就已经踏进心仪大公司的技术研发部。
重要的事再说亿遍,需要的朋友点