前言
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
今天给大家分享的是阿里P8专家纯手打的深入理解redis技术文档,花了5个月才吃透,最后成功入职阿里拿到p6的职级,p7的薪水!!!
目录总纲
主要内容
为了有助于读者更有针对性地学习章节中包含的内容,每个章节的主题会被归类为软件开发或者系统运营。
由于两者之间的边界越来越模糊,对每个趋势中主题的深刻理解能够增强你和你团队的能力,以便快速高效地为项目开发和部署Redis 解决方案,或者将Redis 作为技术基础设施需求的一部分。
第1章介绍了由Redis之父和主要维护者Salvatore Sanfilippo所阐明的Redis开发哲学。为何选择Redis?或者说,我们选择任何一项技 术的缘由是什么?每当新的技术或服务出现时,我们总能听到那些勇敢的、愤世嫉俗的或是博学之人低声谈论这类问题。有时答案显而易见,新的技术或服务所提供的特点和功能正好能满足我们迫切的需要,或者能够解决棘手的问题。大多数情况下,采用一门技术的理由并非显而易见,有时深藏在晦涩难懂的营销行话之中。不同的需求左右着我们的选择,你可能并不能通晓Redis的所有功能,也不清楚其他公司是如何使用Redis的。Redis不仅以执行速度快著称,而且采用Redis构建的解决方案能够快速迭代,这全靠Redis简单的配置、设置、运行和使用。
第2章通过详细阐述和解释Redis数据结构和键管理为读者构建起Redis的基础知识,其中包括了如何为应用程序构造既有意义又有表达力的键模式这一重要主题。
在应用程序中将Redis用作数据存储需要先考虑以下两点:键和其对应的数据结构。制定一套良好的键模式、语法和命名约定是高效稳定的解决方案和技术混乱的分水岭。
Redis允许绝大多数的字符串经序列化后作为键,这种灵活性值得我们在设计基于Redis的项目时仔细斟酌与精心设计。对采用Redis 构建的应用来说,为键选用合适的数据结构将对系统的可用性和功能性产生直接影响。
第3章讲解了Redis提供的用来优化应用程序内存使用的各种选项,其中包括了Redis支持的基于最近较少使用( LRU)的各种缓存和Redis中的键驱逐( evict )策略。
相较于大多数数据存储技术,想要高效地使用Redis 需要充分理解计算机的内存技术及网络和硬盘延迟,以便追踪性能瓶颈、处理资源规划及分配。Redis将所有数据都加载到RAM时,应用程序的读写受到硬件和网络连接的技术限制,然后才受到诸如Oracle 或MySQL等传统关系型数据库所使用的更慢的磁盘读写操作限制。
第4章是有关应用程序编程的高级主题。本章从概述Redis核心的C语言实现开始,通过对精心挑选的C代码片段进行深入地讲解来加深你对Redis的理解。然后讲到了如何使用三种不同的Redis客户端,并展示了分别使用Python、Node.js 和Haskell的编程实例。
第5章是有关应用程序编程的高级主题。本章从概述Redis服务器端Lua脚本及如何在Redis中更高效地使用Lua开始讲起。之后,拓展讲解了一些流行的Redis编程设计模式,列举了几个具体实例,描述了不同的个体和公司在运营操作中是如何使用这些模式的。本章最后从软件开发者的角度描述了Redis是如何应用于典型的DevOps场景中。
第6章探索了两个最近添加到Redis中的Redis集群和Redis Sentinel。 Redis Sentinel是一种特殊的高可用模式,用来监控主从服务器的健康状况,并能够在任意Redis 主从实例故障时进行切换。之前提到的Redis 集群现在可用于产品环境中了。对于那些太大而不能存入单台机器的大型数据来说,Redis集群能够通过运行多个实例并将键进行分片的方式来完成存储。虽然这些主题更关注运营方面,但是在采用Redis的工程解决方案时至少应该知道Redis群集的好处和局限性。
第7章一开始就承认了一-件事,那就是对绝大多数组织来说,它们的信息技术栈包含了不同类型的数据和处理解决方案的异构混合。Redis 是一种用来扩展其他NoSQL数据存储选项的理想方式。同时,在本章中,我们将看到Redis是如何与MongoDB、ElasticSearch和Fedora Digital Repository 一起使用的。那些需要使用多种解决方案来开发并支持复杂业务需求的开发者和系统管理员会对本章的内容感兴趣。
第8章介绍了如何通过在Docker容器和镜像中使用Redis的方式来简化管理并提升基于Redis 的解决方案的安全性和可靠性。Docker 是一种开源 容器技术,正快速地被许多企业采用。在那之后我们将研究在最为流行的计算云供应商上使用Redis所面临的具体挑战,这些供应商包括最大、最为成熟的Amazon Web Services. Google 的Compute Engine 和Microsoft Azure,并特别提到了其他云服务供应商,例如Rackspace和Digital Ocean。本章最后会研究专门用于Redis的云服务。这些云服务专注于托管和管理Redis实例。
第9章一开始深入探索了Redis的发布/订阅命令。首先通过不同的示例展示了不同进程间、不同程序间、不同的Redis客户端、不同的操作系统,以及远程计算机上的发布者和消费者是如何进行通信的。之后,将拓展Redis 的发布/订阅模式,并简要介绍将Redis用作企业计算生态中不同层之间的消息通信队列。本章最后会通过使用Redis 和Celery作为任务管理和支持发布/订阅模式的消息通信队列这一-详细示例总结提到的所有概念。
第10章在前面章节的基础上展示了Redis作为实时数据聚合器是如何将组织中来自各种技术系统的不同数据流聚合起来的。之后,将研究Redis安全模型和最新Redis版本新加入的安全特性。还有-款基于Web的运营仪表板将采用我们关于Redis客户端的知识,将输入到Redis中的数据进行可视化。接下来,将展示如何将机器学习算法(如朴素贝叶斯)应用到这些基于Redis 的信息流,以提供更为丰富的概况,并加深你对组织或者部门]内发生的操作的理解。
附深入理解Redis学习视频
希望大家学习的时候,不仅能够掌握理论上的知识,同时配合视频来学习,这样子能够更好地来提升自己,灵活运用知识,在实践中检测真理!!!
实践是检验真理唯一标准!!
深入理解Redis
Redis是当下最流行的开源键值数据结构服务器。它提供了多种功能,可在此之上构建多种平台。
本文定位为实用指南,旨在帮助读者深入理解Redis数据结构,以便充分发挥Redis的优秀功能。读者的Redis之旅始于对Redis需求的讨论,然后讲解了高级键管理方面的内容。
接下来,读者将学习设计模式、在DevOps环境中使用Redis的最佳实践,以及Docker容器化范式。
在这之后,读者将学习如何使用Redis集群和Redis Sentinel进行扩 展,随后将对Redis与其他NoSQL技术(如ElasticSearch和MongoDB )的结合进行说明。
最后,读者将了解如何使用Redis为不相同的数据流构建实时数据分析仪表板。
学完还不懂redis,那你就不必学了!