官术网_书友最值得收藏!

前  言

作為數(shù)據(jù)庫領(lǐng)域的后起之秀,Redis如今已經(jīng)成為Web開發(fā)社區(qū)中最火熱的數(shù)據(jù)庫之一。隨著Web 2.0的蓬勃發(fā)展,網(wǎng)站數(shù)據(jù)快速增長,對高性能讀寫的需求也越來越多,再加上半結(jié)構(gòu)化數(shù)據(jù)的比重逐漸增大,人們對早已被鋪天蓋地地運用著的關(guān)系數(shù)據(jù)庫能否適應(yīng)現(xiàn)今的存儲需求產(chǎn)生了疑問,而Redis的迅猛發(fā)展為這個領(lǐng)域注入了全新的思維。

Redis憑借其全面的功能受到越來越多的公司的青睞,從初創(chuàng)企業(yè)到擁有幾百臺Redis服務(wù)器的大公司,都能看到Redis的身影。Redis也是一個名副其實的多面手,無論是存儲、隊列還是緩存系統(tǒng),都有它的用武之地。

本書將從Redis的歷史講起,結(jié)合基礎(chǔ)與實踐,帶領(lǐng)讀者一步步進(jìn)入Redis的世界。

第3版說明

距離本書第2版出版已經(jīng)過去了6年,Redis在這期間也發(fā)生了巨大的改變。從3.0版到6.0版,Redis的每個重大版本都給日益壯大的開發(fā)者群體帶來更多激動人心的新功能。從能更好地勝任消息中間件的流類型,到大大豐富Redis使用場景的模塊系統(tǒng),整個Redis的發(fā)展過程就是Redis的開發(fā)者與用戶良好互動的最佳印證。

截至2021年,在Stack Overflow發(fā)布的全球開發(fā)者調(diào)查報告中,Redis連續(xù)4年蟬聯(lián)“最受開發(fā)者喜愛的數(shù)據(jù)庫”以及“亞馬遜云使用最廣泛的數(shù)據(jù)庫”兩項殊榮。借此時機,本書第3版對這幾年中Redis推出的重要功能以及社區(qū)生態(tài)的變化進(jìn)行相應(yīng)更新,希望能將這些新的信息與廣大讀者分享。

目標(biāo)讀者

本書假定讀者是Redis新手,甚至可能連Redis是什么都沒聽說過。本書將詳細(xì)介紹Redis是什么以及為什么要使用Redis,旨在讓讀者從零開始,逐步晉級為一個優(yōu)秀的Redis開發(fā)者。

本書還包含很多Redis實踐方面的知識,有經(jīng)驗的Redis開發(fā)者完全可以直接跳過已經(jīng)掌握的內(nèi)容,只閱讀感興趣的部分。每章的引言都簡要介紹了這一章要講解的內(nèi)容,供讀者參考。

本書不需要讀者掌握任何Redis的背景知識,不過如果讀者有Web后端開發(fā)經(jīng)驗或Linux操作系統(tǒng)使用經(jīng)驗,閱讀本書將會更加得心應(yīng)手。

組織結(jié)構(gòu)

第1章介紹了Redis的歷史與特性,主要回答初學(xué)者最關(guān)心的兩個問題,即Redis是什么和為什么要使用Redis。

第2章介紹了如何安裝和運行Redis。如果你身旁的計算機沒有運行Redis,那么一定不要錯過這一章,因為本書后面的部分都希望讀者能一邊閱讀一邊實踐,以提高學(xué)習(xí)效率。這一章還會介紹Redis命令行客戶端的使用方法等基礎(chǔ)知識,這些都是實踐前需要掌握的知識。

第3章介紹了Redis的數(shù)據(jù)類型。這一章講解的不僅是每個數(shù)據(jù)類型和命令格式,還會著重講解每個數(shù)據(jù)類型在實踐中如何使用。這一章會帶領(lǐng)讀者從零開始,一步步地使用Redis構(gòu)建一個博客系統(tǒng)。讀者在學(xué)習(xí)完這一章的內(nèi)容之后可以直接在自己的項目中上手實踐Redis。

第4章介紹了一些Redis的進(jìn)階知識,例如事務(wù)和消息通知等。同樣這一章還會繼續(xù)以博客系統(tǒng)為例,以實踐驅(qū)動學(xué)習(xí)。

第5章介紹了如何在各種編程語言中使用Redis,這些語言包括PHP、Ruby、Python和Node.js。其中,講解每種編程語言時,都會用一個有趣的例子進(jìn)行演示,即使讀者不了解某些編程語言,閱讀這些例子也能讓你收獲頗豐。

第6章介紹了Redis腳本的強大功能。這一章會向讀者講解如何借助腳本擴展Redis,并且會對腳本中一些需要注意的知識(如沙盒、隨機結(jié)果等)進(jìn)行著重介紹。

第7章介紹了Redis持久化的知識。Redis持久化包含RDB和AOF兩種方式,對持久化的支持是Redis可以用作數(shù)據(jù)庫的必要條件。

第8章介紹了多個Redis實例的維護(hù)方法,包括使用復(fù)制實現(xiàn)讀寫分離、借助哨兵來自動完成故障恢復(fù)以及通過集群來實現(xiàn)數(shù)據(jù)分片。

第9章介紹了Redis安全和通信協(xié)議相關(guān)的內(nèi)容,并推薦了幾個第三方的Redis管理工具。

附錄A收錄了Redis命令的不同屬性以及這些屬性的特征。

附錄B收錄了Redis部分配置參數(shù)的章節(jié)索引。

附錄C收錄了Redis使用的CRC16實現(xiàn)代碼。

排版約定

本書排版使用字體遵從以下約定。

● 等寬字:表示在命令行中輸入的命令以及返回結(jié)果、程序代碼、Redis的命令(包括命令語句和命令定義)。

● 等寬斜體字(或夾在其中的中文楷體字):表示命令或程序代碼中由用戶自行替換的參數(shù)或變量。

● 等寬粗體字:表示命令行中用戶的輸入內(nèi)容、偽代碼中的Redis命令。

● 命令行的輸入和輸出以如下格式顯示:

$ redis-cli PING
PONG

 Redis命令行客戶端的輸入和輸出以如下格式顯示:

redis> SET foo bar
OK

 程序代碼以如下格式顯示:

var redis = require("redis");
var client = redis.createClient();

// 將兩個對象JSON序列化后存入數(shù)據(jù)庫中
client.mset(
    'user:1', JSON.stringify(bob),
    'user:2', JSON.stringify(jeff)
);

代碼約定

本書的部分章節(jié)采用偽代碼講解,這種偽代碼類似于Ruby和PHP代碼,例如:

def hsetnx($key, $field, $value)
    $isExists = HEXISTS $key, $field
    if $isExists is 0
       HSET $key, $field, $value
       return 1
    else
       return 0

其中,變量使用$符號標(biāo)識,Redis命令使用粗體表示并省略括號,以便于閱讀。在命令調(diào)用和print等語句中,沒有$符號的字符串會被當(dāng)作字符串字面值。

附加文件

本書第5章中每一節(jié)都包含一個完整的程序,讀者最好自己輸入這些代碼來加深理解,當(dāng)然,先查看程序的運行結(jié)果再開始學(xué)習(xí)也不失為一個好辦法。

這些程序代碼都存放在GitHub上(https://github.com/luin/redis-book-v3-code),供讀者查看和下載。讀者也可以從異步社區(qū)(https://www.epubit.com)本書頁面下載程序代碼。

致謝

在寫作本書的過程中,我得到了很多朋友的幫助。請允許我在這里占用少許篇幅,向他們致以誠摯的謝意。

感謝人民郵電出版社的楊海玲編輯對本書的支持,沒有她的悉心指導(dǎo),本書就無法順利完成。

感謝劉亞晨、李欣越、寇祖陽和余堯,他們幫我承擔(dān)了許多額外的工作,使得我可以全身心地投入寫作。

感謝所有瀏覽本書初稿并提出意見和建議的人:張沈鵬、陳碩實、劉其帥、扈煊、李其超、朱沖宇、王詩吟、黃山月、劉昕、韓重遠(yuǎn)、李申申、楊海朝、田琪等,感謝你們的支持。

另外,還要感謝“宋老師”,是的,就是書中的主人公之一。幾年前我剛創(chuàng)業(yè)時,辦公場所是和某教育機構(gòu)合租的。宋老師是該機構(gòu)的一名老師,同時他也是國內(nèi)一個知名嘻哈樂團的成員。他平日風(fēng)趣的談吐給我們帶來了很多歡樂,伴隨我們度過了艱苦的創(chuàng)業(yè)初期。而我接觸Redis,也正是從這段時間開始的。

主站蜘蛛池模板: 章丘市| 竹溪县| 三穗县| 鹤峰县| 绩溪县| 河北省| 宜宾市| 琼中| 榆中县| 颍上县| 新邵县| 那坡县| 常德市| 武威市| 万山特区| 顺昌县| 遂宁市| 龙泉市| 山阳县| 贡觉县| 余姚市| 武城县| SHOW| 南京市| 利津县| 渝中区| 裕民县| 武隆县| 广德县| 堆龙德庆县| 闸北区| 维西| 海阳市| 天等县| 勃利县| 蕲春县| 鄢陵县| 南澳县| 柳江县| 云安县| 德格县|