Redis入门指南(第2版) - 电子书下载 -(百度网盘 高清版PDF格式) - Go语言中文社区

Redis入门指南(第2版) - 电子书下载 -(百度网盘 高清版PDF格式)



Redis入门指南(第2版)-李子骅

            在线阅读                   百度网盘下载(z793)


image.png

书名:Redis入门指南(第2版)

作者:李子骅

格式:EPUB, HTMLZ, PDF

路径:点击打开

排序作者:李子骅

排序书名:Redis入门指南(第2版)

日期:08 12月 2018

uuid:ed21285a-4c67-40ce-b811-4d407b40b4a9

id:500

出版日期:5月 2015

修改日期:08 12月 2018

大小:2.95MB

语言:中文


Redis如今已经成为Web开发社区中最火热的内存数据库之一,而它的诞生距现在不过才4年。随着Web 2.0的蓬勃发展,网站数据快速增长,对高性能读写的需求也越来越多,再加上半结构化的数据比重逐渐变大,人们对早已被铺天盖地地运用着的关系数据库能否适应现今的存储需求产生了疑问。而Redis的迅猛发展,为这个领域注入了全新的思维。

Redis 凭借其全面的功能得到越来越多的公司的青睐,从初创企业到新浪微博这样拥有着几百台Redis服务器的大公司,都能看到Redis的身影。Redis也是一个名副其实的多面手,无论是存储、队列还是缓存系统,都有它的用武之地。

本书将从Redis的历史讲起,结合基础与实践,带领读者一步步进入Redis的世界。

第2版说明

在本书第1版截稿的时候,加入了Lua脚本功能的Redis 2.6版刚刚发布,此时的Redis 正在逐渐地被国内的开发者所熟知。如今整整两年过去了,Redis也即将发布新的里程碑版本3.0版。在这两年中,Redis 增加了许多优秀的功能,同时也被越来越多的公司所采用与信赖。在写这段文字时,恰好Redis 的作者Salvatore Sanfilippo转述了别人的一句话:“如果把Redis 官网的‘谁在使用 Redis’页面改名为‘谁没在使用 Redis’,那么这个页面的内容一定会精简不少。”虽然是一句玩笑话,但是也从侧面体现出这两年里Redis的飞速发展。而继续编写《Redis入门指南》第2版的最大动力也是希望将Redis发展的成果及时地与广大读者分享,同时也借此感谢大家对本书第1版的积极反馈。

目标读者

本书假定读者是Redis的新手,甚至可能连Redis是什么都没听说过。本书将会详细地介绍Redis是什么以及为什么要使用Redis,旨在能让读者从零开始逐步晋升为一个优秀的Redis开发者。

本书还包含了很多Redis实践方面的知识,对于有经验的Redis开发者,大可以直接跳过已经掌握的内容,只阅读感兴趣的部分。每章的引言都简要介绍了本章要讲解的内容,供读者参考。

本书并不需要读者有任何Redis的背景知识,不过如果读者有Web后端开发经验或Linux系统使用经验,阅读本书将会更加得心应手。

组织结构

第1章介绍了Redis的历史与特性,主要回答两个初学者最关心的问题,即Redis是什么和为什么要使用Redis。

第2章讲解了如何安装和运行Redis。如果你身旁的计算机没有运行Redis,那么一定不要错过这一章,因为本书后面的部分都需要读者最好能一边阅读一边实践,以提高学习效率。本章中还会介绍Redis命令行客户端的使用方法等基础知识,这些都是实践前需要掌握的知识。

第3章介绍了Redis的数据类型。本章讲解的不仅是每个数据类型的介绍和命令的格式,还会着重讲解每个数据类型分别在实践中如何使用。整个第3章会带领读者从零开始,一步步地使用 Redis 构建一个博客系统,旨在帮助读者

在学习完本章的内容之后可以直接在自己的项目中上手实践Redis。

第4章引入了一些Redis的进阶知识,比如事务和消息系统等。同样本章还会继续以博客系统为例子,以实践驱动学习。

第5章介绍了如何在各个编程语言中使用 Redis,这些语言包括PHP、Ruby、Python和Node.js。其中讲解每种语言时最后都会以一个有趣的例子作为演示,即使你不了解某些语言,阅读这些例子也能让你收获颇丰。

第6章展示了Redis脚本的强大功能。本章会向读者讲解如何借助脚本来扩展Redis,并且会对脚本一些需要注意的地方(如沙盒、随机结果等)进行着重介绍。

第7章会介绍Redis持久化的知识。Redis持久化包含RDB和AOF两种方式,对持久化的支持是Redis之所以可以用作数据库的必要条件。

第8章详细说明了多个Redis实例的维护方法,包括使用复制实现读写分离、借助哨兵来自动完成故障恢复以及通过集群来实现数据分片。

第9章介绍了Redis安全和协议相关的内容,并向会推荐几个第三方的Redis管理工具。

附录A收录了Redis命令的不同属性,以及属性的特征。

附录B收录了Redis部分配置参数的章节索引。

附录C收录了Redis使用的CRC16实现代码。

排版约定

本书排版使用字体遵从以下约定。

● 等宽字:表示在命令行中输入的命令以及返回结果、程序代码、Redis 的命令(包括命令语句和命令定义)。

● 等宽斜体字(或夹在其中的中文楷体字):表示命令或程序代码中由读者自行替换的参数或变量。

● 等宽粗体字:表示命令行中用户的输入内容、伪代码中的Redis 命令。

● 命令行的输入和输出以如下格式显示:

$ redis-cli PING

PONG

● Redis命令行客户端的输入和输出以如下格式显示:

redis> SET foo bar

OK

● 程序代码以如下格式显示:

var redis = require("redis");

var client = redis.createClient();

//将两个对象 JSON 序列化后存入数据库中

client.mset(

'user:1', JSON.stringify(bob),

'user:2', JSON.stringify(jeff)

);

代码约定

本书的部分章节采用了伪代码来讲解,这种伪代码类似Ruby和PHP,例如:

def hsetnx($key, $field, $value)

$isExists = HEXISTS $key, $field

if $isExists is 0

HSET $key, $field, $value

return 1

else

return 0

其中变量使用$符号标识,Redis命令使用的粗体表示并省略了括号以便于阅读。在命令调用和print等语句中没有$符号的字符串会被当作字符串字面值。

附加文件

本书第5章中每一节都包含了一个完整的程序,通常来讲读者最好自己输入这些代码来加深理解,当然如果要先看到程序的运行结果再开始学习也不失为一个好办法。

这些程序代码都存放在GitHub上(https://github.com/luin/redis-book-assets),可以在GitHub上查看与下载。

致谢

在本书写作的过程中,得到了很多朋友的帮助。请允许我在这里占用少许篇幅,向他们致以诚挚的谢意。

感谢人民邮电出版社的杨海玲老师对本书的支持,没有她的悉心指导,本书就无法顺利完成。

感谢刘亚晨、李欣越、寇祖阳和余尧,他们承担了许多额外的工作,使得我可以全身心地投入到写作中。

感谢所有浏览本书初稿并提出意见和建议的人们:张沈鹏、陈硕实、刘其帅、扈煊、李其超、朱冲宇、王诗吟、黄山月、刘昕、韩重远、李申申、杨海朝、田琪等。感谢你们的支持。

另外还要感谢“宋老师”,是的,就是书中的主人公之一。几年前,我刚创业时,办公场所是和某个教育机构合租的,宋老师是该机构的一名英语老师,同时他也是国内一个知名的嘻哈乐团成员之一。他平日风趣的谈吐带给了我们很多欢乐,伴随我们走过了艰苦的创业初期,而我接触Redis,也正是从这段时间开始的。

最后,感谢我的父母和女朋友马梦妍,你们是我生命中最重要的人,感谢你们的理解和支持。

第1章 简介

Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求。同时 Redis 的诸多高层级功能使其可以胜任消息队列、任务队列等不同的角色。

本章将分别介绍Redis的历史和特性,以使读者能够快速地对Redis有一个全面的了解。

第2章 准备

“纸上得来终觉浅,绝知此事要躬行。”

——陆游《冬夜读书示子聿》

学习 Redis 最好的办法就是动手尝试它。在介绍 Redis 最核心的内容之前,本章先来介绍一下如何安装和运行Redis,以及Redis的基础知识,使读者可以在之后的章节中一边学习一边实践。

第3章 入门

学会如何安装和运行Redis,并了解Redis的基础知识后,本章将详细介绍Redis的5种主要数据类型及相应的命令,带领读者真正进入 Redis 的世界。在学习的时候,手边打开一个 redis-cli 程序来跟着一起输入命令将会极大地提高学习效率。尽管在目前多数公司和团队的Redis的应用是以缓存和队列为主。

在之后的章节中你会遇到两个学习伙伴:小白和宋老师。小白是一个标准的极客,最近刚开始他的 Redis 学习之旅,而他大学时的计算机老师宋老师恰好对 Redis 颇有研究,于是就顺理成章地成为了小白的私人Redis教师。这不,小白想基于Redis开发一个博客,于是找到宋老师,向他请教。在本章中宋老师会向小白介绍 Redis 最核心的内容——数据类型,从他们的对话中你一定能学到不少知识!

3.2节到3.6节这5节将分别介绍Redis的5种数据类型,其中每节都是由4个部分组成,依次是“介绍”、“命令”、“实践”和“命令拾遗”。“介绍”部分是对数据类型的概述,“命令”部分会对“实践”部分将用到的命令进行介绍,“实践”部分会讲解该数据类型在开发中的应用方法,“命令拾遗”部分会对该数据类型其他比较有用的命令进行补充介绍。

第4章 进阶

没过几天,小白就完成了博客的开发并将其部署上线。之后的一段时间,小白又使用Redis开发了几个程序,用得还算顺手,便没有继续向宋老师请教Redis的更多知识。直到一个月后的一天,宋老师偶然访问了小白的博客„„

本章将会带领读者继续探索Redis,了解Redis的事务、排序与管道等功能,并且还会详细地介绍如何优化Redis的存储空间。

第5章 实践

小白把宋老师向自己讲解的知识总结成了一篇帖子发到了学校的网站上,引起了强烈的反响。很多同学希望宋老师能够再写一些关于 Redis 实践方面的教程,宋老师爽快地答应了。

在此之前我们进行的操作都是通过 Redis 的命令行客户端 redis-cli 进行的,并没有介绍实际编程时如何操作Redis。本章将会通过4个实例分别介绍Redis的PHP、Python、Ruby和 Node.js 客户端的使用方法,即使你不了解其中的某些语言,粗浅地阅读一下也能收获很多实践方面的技巧。

第6章 脚本

小白花了5天时间看完了宋老师发在学校网站上的4个编程语言的Redis客户端教程,感觉收获颇丰,但还有一件事一直挂在心上:宋老师提到过很多次 Redis 的脚本功能,但到现在还没具体讲解过。一天中午他来到了宋老师的办公室想向其请教脚本的知识,看到宋老师正在睡觉,便想先出去转转等会儿再来问。正回身要走突然瞥到了宋老师的电脑屏幕,上面打开着一篇文档,而文档的标题正是“Redis脚本功能介绍”。

过了几天小白就收到了发自宋老师的邮件——“Redis脚本功能介绍”。

第7章 持久化

多亏了 Redis,小白的博客虽然运行在了一台配置很差的服务器上,但是访问速度依旧很快。

Redis的强劲性能很大程度上是由于其将所有数据都存储在了内存中,然而当Redis重启后,所有存储在内存中的数据就会丢失。在一些情况下,我们会希望 Redis 在重启后能够保证数据不丢失,例如:

(1)将Redis作为数据库使用时。这也是小白现在的情况。

(2)将 Redis 作为缓存服务器,但缓存被穿透后会对性能造成较大影响,所有缓存同时失效会导致缓存雪崩,从而使服务无法响应。

这时我们希望 Redis 能将数据从内存中以某种形式同步到硬盘中,使得重启后可以根据硬盘中的记录恢复数据。这一过程就是持久化。

Redis支持两种方式的持久化,一种是RDB方式,另一种是AOF方式。前者会根据指定的规则“定时”将内存中的数据存储在硬盘上,而后者在每次执行命令后将命令本身记录下来。两种持久化方式可以单独使用其中一种,但更多情况下是将二者结合使用。

第8章 集群

作为一个小型项目,小白的博客使用一台 Redis 服务器已经非常足够了,然而现实中的项目通常需要若干台Redis服务器的支持:

(1)从结构上,单个 Redis 服务器会发生单点故障,同时一台服务器需要承受所有的请求负载。这就需要为数据生成多个副本并分配在不同的服务器上;

(2)从容量上,单个 Redis 服务器的内存非常容易成为存储瓶颈,所以需要进行数据分片。

同时拥有多个 Redis 服务器后就会面临如何管理集群的问题,包括如何增加节点、故障恢复等操作。

为此,本章将依次详细介绍 Redis 中的复制、哨兵(sentinel)和集群(cluster)的使用和原理。

第9章 管理

虽然小白的博客已经运行有一段时间了,可是小白对如何管理 Redis 依然完全没有概念。比如怎样给 Redis 设置密码以防其他未经授权的客户端连接呢?又如,怎么能够知道哪些命令执行得比较慢呢?带着这些疑惑,小白再一次找到了宋老师。

本章将会讲解 Redis 的管理知识,包括安全和协议等内容,同时还会介绍一些第三方的Redis管理工具。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1133

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/xiaohuanglv/article/details/89034970
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 22:35:35
  • 阅读 ( 1760 )
  • 分类:Redis

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢