- Redis入門指南(第3版)
- 李子驊
- 2250字
- 2021-10-27 17:10:11
前 言
作為數(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,也正是從這段時間開始的。
- 大學(xué)計算機基礎(chǔ)(第二版)
- Node.js 10實戰(zhàn)
- ReSharper Essentials
- Learn to Create WordPress Themes by Building 5 Projects
- Access 數(shù)據(jù)庫應(yīng)用教程
- 程序員面試算法寶典
- Mastering QGIS
- 實戰(zhàn)Java程序設(shè)計
- C#程序設(shè)計教程
- 網(wǎng)店設(shè)計看這本就夠了
- CKA/CKAD應(yīng)試教程:從Docker到Kubernetes完全攻略
- iOS編程基礎(chǔ):Swift、Xcode和Cocoa入門指南
- Serverless computing in Azure with .NET
- Visual Studio Code 權(quán)威指南
- Apache Solr for Indexing Data