Redis快速上手神册,17W字详解其实Redis也就那么一回事!

195 阅读3分钟

开始使用Redis

Redis是一个开源的数据库,经常被用来构建高性能的可扩展网络应用。它使用内存数据库,这使得它比其他数据库更快。

Redis用于我们的应用程序中的短期数据。它经常被用于会话或网页头数。

通过使用内存数据库,我们不需要有大的数据集,相反,我们使用小的数据块,让我们把数据存储在机器的内存中,而不是磁盘的内存中。
Redis是一个键值存储,类似于我们在JavaScript中处理对象的方式。有几种语言和框架使用Redis;包括Python,以及Node.js等后端JavaScript框架。

Redis不仅功能强大,而且稳定,理所当然地成为了大型互联网公司的首选。众多大厂在招聘的时候,不仅会要求面试者能简单地使用Redis,还要能深入地理解底层实现原理,并且具备解决常见问题的能力。可以说,熟练掌握Redis已经成为了技术人的一个必备技能。

但是,在学习和使用Redis的过程中,总不可避免地遇见一些棘手的问题
我根据自己多年的从业经验,梳理了一套系统的Redis学习方法。将纷繁复杂的Redis知识和问题归纳在“两大维度,三大主线”这个框架之中【+jcc4261获取】,帮助读者建立起系统观和全局观,从而彻底搞懂底层实现原理

Redis简介

  • Redis与Memcached区别

  • Redis优点

  • Redis缺点

Redis数据类型

  • String

  • Hash

  • List

  • Set

  • Sorted set

Redis事务

  • MULTI&EXEC(原子执行,并非互斥)

  • WATCH&UNWATCH(原子执行+乐观锁)

Redis分布式锁

  • 排他锁 SETNX

  • 带有超时特性的锁

Redis持久化机制

  • RDB(Redis Database,全量模式)

  • AOF(Append Only File,增量模式)

  • 触发方式

  • 相互比较

  • RDB最佳策略

  • AOF最佳策略

  • Redis消息队列

Redis高级数据结构

  • BitMap(String的一些其他命令)

  • 过期策略

  • 内存淘汰策略

  • 主从复制(数据是同步的,类似于MySQL Replication)

  • 哨兵 sentinel(数据是同步的)

  • 集群(数据是分片的,sharing)

  • Hash映射(并非一致性哈希,而是哈希槽)

  • 数据分片

  • 节点间通信协议——Gossip

  • 主从选举——Raft

  • 功能限制

  • 数据迁移/在线扩容

  • Codis

  • twemproxy

配置文件+应用场景+Lua脚本+与DB保持一致

Redis源码

  • 线程模型——单线程

  • RedisObject

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的学习使用教程了