Redis是當下極為流行的開源鍵值數據結構服務器。它提供瞭多種功能,可在此之上構建多種平颱。
本書定位為實用指南,旨在幫助讀者深入理解Redis數據結構,以便充分發揮Redis的優秀功能。讀者的Redis之旅始於對Redis需求的討論,然後講解瞭高級鍵管理方麵的內容。接下來,讀者將學習設計模式、在DevOps環境中使用Redis的*佳實踐,以及Docker容器化範式。在這之後,讀者將學習如何使用Redis集群和Redis Sentinel進行擴展,隨後將對Redis與其他NoSQL技術(如ElasticSearch和MongoDB)的結閤進行說明。*後,讀者將瞭解如何使用Redis為不相同的數據流構建實時數據分析儀錶闆。
◎探索Redis 3.2中的新增功能
◎選擇正確的Redis數據結構解決問題
◎理解Redis事件循環並實現自定義C命令
◎使用Redis服務器端腳本Lua解決復雜的工作流問題
◎配置Redis實例以達到*佳內存管理
◎使用Redis集群實現數據的分布式
◎使用Redis Sentinel提升Redis解決方案的穩定性
◎將Redis用作現存的數據庫和NoSQL環境的補充方案
◎充分利用Redis提供的各種功能,成為一位DevOps專傢
讓你的Redis技能産生質的飛躍,讓開發酷炫應用從此輕而易舉
本書以由淺入深、由原理到應用場景的方式介紹瞭Redis 這款NoSQL 數據庫産品。書中不僅細緻地講解瞭Redis 中的數據結構及流行的使用模式,還針對Redis 鍵的設計和管理,以及內存管理提齣瞭建設性的方案。同時,作者深入Redis 源碼,將其內部構造通過源代碼調試的方式進行呈現。本書適閤有一定NoSQL 經驗的開發者或者架構師閱讀。讀者可以從書中找到許多應用場景和解決方案,例如Docker 部署、Redis 消息隊列、基於Redis 的ETL 應用和基於Redis 的機器學習等。
汪佳南,擁有7年軟件開發經驗。對編程情有獨鍾,對産品設計很“感冒”,始終堅信技術可以改變世界。《RabbitMQ實戰 高效部署分布式消息隊列 》一書譯者。
Jeremy Nelson是科羅拉多斯普林市的一所四年製私立文理學院科羅拉多學院的一位元數據和係統圖書管理員。除瞭每周 8小時的圖書館研究技術支持工作,為大學生提供信息素養指導,並監督圖書館的係統和編目部門這三項工作之外,Nelson正在積極研究和開發 Catalog Pull平颱中的各種組件和開源工具,供科羅拉多大學、科羅拉多州研究圖書館聯盟和國會圖書館使用。他還是語義網絡初創公司 KnowledgeLinks.io的聯閤創始人和 CTO。
他之前在西部州科羅拉多大學和猶他大學有過圖書館工作經驗。在成為圖書管理員之前,他曾在各種軟件公司和金融服務機構中擔任程序員和項目經理。他的*一本書 Becoming a Lean Library於 2015年齣版,將精益創業和精益製造理念應用於圖書館和圖書館的運營。 Nelson從諾剋斯學院獲得瞭本科學位,並從 University of Illinois Urbana-Champaign獲得瞭圖書館和信息科學的科學碩士。
關於審校者
Emilien Kenler在從事瞭一些小型 Web項目之後,在 2008年高中時開始專注於遊戲開發。直到 2011年,他為不同的小組工作並專門從事係統管理。
2011年,在研究計算機科學工程的同時,他創立瞭一傢公司銷售 Minecraft服務器。他基於像 Node.js和 RabbitMQ這樣的新技術,創建瞭一個輕量級 IaaS(https://github.com/HostYourCreeper/)。
此後,他在 TaDaweb擔任係統管理員,構建基礎架構並創建管理部署和監控的工具。
2014年,他在東京 Wizcorp開啓瞭新的曆程。同年,他畢業於 University of Technology of Compiègne。
Emilien為 Packt Publishing編寫瞭 MariaDB Essentials。他還負責瞭 Learning Nagios 4、 MariaDB High Performance、OpenVZ Essentials、Vagrant Virtual Development Environment Cookbook和 Getting Started with MariaDB-Second Edition的審校。
Saurabh Minni擁有計算機科學專業的工程學位。他有超過 10年的工作經驗,通曉各種編程語言,包括匯編語言、 C、C++、Java、Delphi、JavaScript、Android、iOS、PHP、 Python、ZMQ、Redis、Mongo、Kyoto Tycoon、Cocoa、Carbon、Apache Kafka、Apache Storm和 ElasticSearch。總之,他是一位徹頭徹尾的程序員,喜歡每天學習與技術相關的新事物。
目前,他在 Near公司(這是一傢神奇的初創公司,正在搭建位置智能平颱)中擔任技術架構師一職。除瞭處理幾個項目之外,他還負責部署 Apache Kafka集群。這有助於簡化大數據處理係統中的數據消費。這些係統包括 Apache Storm、Hadoop,等等。
Saurabh同時也是 Apache Kafka Cookbook一書的作者。這是一本有關 Apache Kafka的書,由 Packt Publishing齣版。他還負責 Learning Apache Kafka一書的審校。該書由 Packt Publishing齣版。你可以在 Twitter上通過@the100rabh聯係他,也可以在 https://github.com/the100rabh/上找到他。
目錄
1 為何選擇Redis? 1
閤適之選? 2
嘗試使用Redis 4
流行的使用模式 9
Redis不閤心意?馬上再試試! 11
總結 13
2 高級鍵管理與數據結構 14
Redis鍵 14
Redis鍵模式 15
鍵分隔符和命名約定 17
手動創建Redis模式 19
解構Redis對象映射器 22
鍵過期 27
鍵的注意事項 27
大O符號 28
為自定義代碼計算大O符號 30
迴顧Redis數據結構的時間復雜度 32
字符串 32
哈希 33
列錶 34
集閤 35
有序集閤 36
高級有序集閤操作 39
位串和位操作 39
HyperLogLogs 41
總結 42
3 內存管理的建議與技巧 44
配置Redis 44
主從復製 45
32位Redis 45
INFO memory詳解 47
鍵過期 49
LRU鍵清除策略 54
創建內存高效的Redis數據結構 62
小巧的哈希、列錶、集閤和有序集閤 62
把位、字節和Redis字符串用作隨機訪問數組 68
優化哈希,高效存儲 69
硬件和網絡延遲 72
操作係統建議 74
總結 75
4 Redis編程第一部分:Redis核心、客戶端和編程語言 76
Redis的內部結構 76
理解redis.h和redis.c 83
Redis序列化協議 93
Redis RDB格式 97
使用Redis和Python創建協程 99
使用Node.js和Redis實現Todo列錶應用 103
復製與公共訪問 106
總結 106
5 Redis編程第二部分:Lua腳本、管理與DevOps 108
在Redis中使用Lua 108
使用Redis的KEYS和ARGV 117
Redis中的高級Lua腳本 121
MARC21數據提取 121
紙質文具在綫商店 123
讓JSON-LD、Lua和Redis協同工作 126
Redis Lua調試器 130
Redis的編程與管理 133
主從復製 134
使用MULTI和EXEC實現事務 136
Redis在DevOps中扮演的角色 139
總結 140
6 可伸縮性:Redis集群和Sentinel 142
數據分區的方法 142
範圍分區 143
列錶分區 145
哈希分區 148
復閤分區 149
鍵哈希標簽 150
使用Twemproxy實現Redis集群 151
使用關聯數據片段服務器測試Twemproxy 152
Redis集群的背景 158
Redis集群概覽 159
使用Redis集群 160
Redis集群實時重新配置及重新分片 165
故障轉移 168
在Redis集群中替換或者升級節點 170
使用Redis Sentinel進行監控 171
為區域代碼列錶分區配置Redis Sentinel 173
總結 176
7 Redis與互補的NoSQL技術 177
NoSQL技術的繁榮 177
Redis作為MongoDB的分析補充 181
Redis作為ElasticSearch的預處理組件 192
在BIBCAT中使用Redis和ElasticSearch 193
ElasticSearch、Logstash和Redis 198
Redis作為Fedora Commons的智能緩存補充 199
總結 205
8 Docker容器與雲端部署 206
Linux容器 206
與Redis相關的Docker基礎 211
Docker鏡像中的層 219
Docker文件係統後端 220
Docker和Redis的問題 227
使用Docker Compose打包應用程序 227
Redis和AWS 232
專門的雲托管選項 233
Redis Labs 234
DigitalOcean Redis 234
總結 235
9 任務管理與消息隊列 236
Redis的發布/訂閱模式概述 236
發布/訂閱RESP迴復 237
SUBSCRIBE和UNSUBSCRIBE RESP數組 237
PSUBSCRIBE和UNSUBSCRIBE數組 239
使用redis-cli進行發布/訂閱 240
Redis發布訂閱實戰 242
第一個工作站采用Python進行發布訂閱 244
第二個工作站采用Node.js進行發布訂閱 246
第三個工作站使用Lua客戶端進行發布訂閱 248
Redis鍵空間通知 251
使用Redis和Celery進行任務管理 255
GIS和RestMQ 259
使用RestMQ進行任務管理 262
使用Redis技術進行消息通信 264
使用Disque進行消息通信 264
總結 266
10 信息流的測量與管理 267
基於Redis的ETL方案 267
將JSON轉換成RESP 273
管理Redis時的安全考慮 279
使用Redis Web儀錶闆進行運營監測 282
機器學習 283
樸素貝葉斯與工作分類 284
使用Redis實現綫性規劃 294
總結 299
來源 300
譯者序
對不少互聯網企業來說,使用LNMP 架構可以快速搭建起一套係統,産品可以迅速迭代並盡早投放市場。但隨著訪問量的上升,那些使用傳統關係型數據庫(例如MySQL)的網站開始顯現齣性能方麵的問題。此外,越來越挑剔的用戶也要求網站不能僅專注於功能特性,同時也要追求極緻的産品體驗(即高性能和高可用)。
一方麵,架構師會在數據庫層麵做以下一係列優化。
1.配置主從
例如。為MySQL 服務器配置主從。一颱宕機,另一颱可以頂上繼續服務,以滿足高可用的要求。
2.讀寫分離
配置一主多從。因為一般係統80%的請求都是讀取操作,將這些操作分發到從服務器上可以有效地提升網站響應速度。
3.分庫分錶
隨著數據量的增長,單庫單錶已經難以滿足要求。一些諸如TDDL、Cobar、MyCAT等的MySQL 分布式數據庫中間件應運而生。
另一方麵,架構師也會通過係統化的分析,以安插緩存層的方式緩解數據庫的壓力。對應用係統來說,緩存都應在設計之初就納入考慮的範疇,成為係統不可或缺的一部分。我曾供職的一傢公司就采用Redis 作為緩存的實現方案。應用程序運行在兩個同等的Tomcat容器裏。Tomcat 之前則配置瞭一颱Nginx 用於Load Balance。由於用戶Session 存儲在Redis中(通過Spring 和Shiro 的簡單配置即可實現),應用的無狀態性使得係統可以很方便地進行水平擴縮。另外,我們的業務要求用戶每次瀏覽某個項目頁麵時進行訪問計數(counting)。
為瞭避免頻繁的數據庫讀寫,我們將每個項目的瀏覽量的計算和讀取交給瞭Redis。同時,為瞭避免意外導緻的數據丟失,我們開啓瞭Redis 的持久化功能,並啓動定時任務,每隔一段時間就將項目瀏覽次數同步到數據庫中。
至於為何選擇Redis 而沒有選擇Memcached,當時考慮的主要原因是Redis 支持更為豐富的數據模型。像上述頁麵訪問量計數的需求,可以直接通過Redis 的命令進行操作,而且利用Redis 的單綫程模型,應用程序無須編寫同步代碼。當然,緩存隻是Redis 的其中一個用途。一些典型的場景還包括排行榜、用戶訪問量統計、集閤運算、消息隊列等。國內外的一些大型互聯網企業(例如京東、新浪、Pinterest 等)都對Redis 有不同程度的部署和應用。希望讀者能夠在本書中找到自己想要的答案。
每次翻譯都帶給我不同的體驗,並為我的工作和生活帶來改變。在此,我要感謝電子工業齣版社的編輯張春雨和負責審校的同事,是你們的細心指導保證瞭本書的翻譯質量。
同時,感謝我的父母和我的太太,在你們的陪伴和支持下,我得以專心工作。
由於時間倉促,文中難免有所疏漏,望不吝斧正。
汪佳南
前言
本書旨在從兩方麵為讀者構建Redis 的基礎知識。一方麵,本書提供瞭Redis 及其技術背後的深層含義及理論;另一方麵,拓展瞭Redis 日常實用技能。本書書名中的精通(Mastering)二字暗示瞭精通Redis 是一個持續的過程,而非最終目的地。激動人心的是Redis 持續開放地演進成為瞭時下強大的數據操作和存儲技術。
Redis 背後的設計哲學
在整個項目的生命周期中,Salvatore Sanfilippo 對Redis 的發展方嚮與功能發錶瞭獨到的觀點和見解。在2015 年1 月的一篇有關Redis 對比其他數據庫的基準測試的博客中,
Sanfilippo 聲明“我不想說服開發者們采用Redis。我們隻是盡力提供一款閤適的産品。如果人們能夠使用這款産品完成工作,我們會感到非常開心。這就是我的營銷理念。”
Sanfilippo 和他的Redis 核心開發團隊遵循著成功的開源管理模型:“仁慈獨裁者”(BDL)
模型。該模型中隻能有單獨一個人作為最終獨裁者,來裁決哪些能被提交到Redis 代碼庫中。BDL 模型的成功已經被諸如Linux 內核開發和Python 編程語言等項目證明過瞭。作為主要開發者和維護者的Sanfilippo 成功地將BDL 模型復製到瞭Redis 中。
如果獨裁者拋棄項目,或者更糟的是因病或者死亡而導緻無法工作時,BDL 模型的失效將是災難性的。Redis 浮現齣來的另一個重大問題是當潛在的貢獻者提交Pull Request 時,針對這些提交的行動會被延遲,或者更多時候是被忽略。說句公道話,那些必須經過檢查、測試並閤並到主代碼庫上的變更的數量非常巨大,需要激情和專門的看門人。作為Linux內核項目的初創者及當前的BDL,Linus Torvalds 已經看到自己的角色發生瞭轉變,更多是在閤並那些由其他開發者貢獻的代碼,同時相比親自編寫代碼,他做的更多的是為Linux提供願景和領導力。Sanfilippo 在Redis 主要的電子郵件通信上的一篇主題帖中確認瞭該問題,他給齣瞭以下兩大主要理由來繼續Redis 當前的BDL 模型:
? 項目開發與未來方嚮的一緻性視角
? 對任何新的或者齣現的更改采取問責製
在Sanfilippo 看來,Redis 作為鍵值數據存儲,其易於部署、內存占用少(就Redis 本身來說,而不是指它的數據集!)、安全可靠等特性一直是Redis 在開發者和組織中人氣持續上升的關鍵因素。他的觀點確實造成瞭緊張的關係,特彆是當提齣Redis 的新功能,例如使哈希中具體子值(sub-values)過期,或者為可選功能提供可加載模塊時,這些特性都被拒之門外。Sanfilippo 對於保持Redis 的小巧並專注於使其成為內存數據庫的渴望,推動發展,在2011 年的博客中,他用有關Redis 和Redis 開發過程的七條宣言闡明瞭他的觀點,簡述如下。
1.用於抽象數據類型的DSL。Redis 是一門領域特定語言(DSL),用於抽象數據結構的錶達和使用。這些數據結構不僅包括瞭操作(Redis 命令),還包括瞭使用Redis 相關命令存儲和操作這些數據結構的內存效率和時間復雜度。
2.內存存儲是第一要務。通過將所有數據存儲在計算機內存中,跨係統的Redis 的性能更為一緻,用於實現這些數據結構的眾多算法以更為可預測的方式運行,同時諸如有序集閤這樣的更為復雜的數據類型在內存數據庫中更容易實現。
3.基礎數據結構對應基礎API。Redis 為基礎數據結構實現瞭一套基礎API。這套API由Redis 命令和對應的數據結構組成。它嘗試清晰地反映API 從計算機內存中讀取和寫入的數據結構。Redis 遵循這一設計理念,通過更簡單的數據結構操作來組閤實現更為復雜的操作。
4.代碼如詩。這是所有七條宣言之中最難以滲透的。Sanfilippo 將他的審美偏好融入到代碼之中以契閤Redis 這一長篇巨著。他認為Redis 的編碼風格和方法能夠幫助人們書寫一段敘述。因此,是否包含第三方代碼部分取決於它能否很好地契閤Redis 的敘述和Redis的源代碼。
5.我們反對復雜。避免代碼復雜性。如果要在使用大量代碼來實現小型功能與捨棄該功能之間做齣選擇的話,那麼Redis 會選擇後者,以捨棄額外的復雜性和嚮代碼庫中添加復雜性所帶來的開銷。
6.兩層API。一套是API 的子集,以分布式的方式運行;另一套更大型、功能更為豐富,用來支持多鍵操作。這種分離設計支持像Redis 主從和Redis 集群操作模式這樣重要的功能。
7.我們以優化為樂。通常對於開發者和技術運營者來說,這是一種情感訴求,也是一段非常聰明的聲明。調優技術來解決疑難雜癥所帶來的刺激能夠激起快樂的感覺及對Redis未來無限可能的興奮。
本書涵蓋內容
閱讀本書時你會發現其貫穿著兩大主題,以平行的方式展示瞭流行時尚的運營和過程的開發/運營二元論,即眾所周知的DevOps。為瞭有助於讀者更有針對性地學習章節中包含的內容,每個章節的主題會被歸類為軟件開發或者係統運營。由於兩者之間的邊界越來越模糊,對每個趨勢中主題的深刻理解能夠增強你和你團隊的能力,以便快速高效地為項目開發和部署Redis 解決方案,或者將Redis 作為技術基礎設施需求的一部分。
第1 章介紹瞭由Redis 之父和主要維護者Salvatore Sanfilippo 所闡明的Redis 開發哲學。
第2 章通過詳細闡述和解釋Redis 數據結構和鍵管理為讀者構建起Redis 的基礎知識,其中包括瞭如何為應用程序構造既有意義又有錶達力的鍵模式這一重要主題。
第3 章講解瞭Redis 提供的用來優化應用程序內存使用的各種選項,其中包括瞭Redis支持的基於最近較少使用(LRU)的各種緩存和Redis 中的鍵驅逐(evict)策略。
第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》這個名字本身就充滿瞭挑戰和誘惑,尤其對於我這種對技術細節有著不懈追求的人來說,更是無法抗拒。翻開書本,驚喜接踵而至。作者在講解 Redis 的綫程模型時,深入剖析瞭單綫程 IO 復用模型的工作原理,以及在多核 CPU 環境下如何利用多進程或多綫程來提升 Redis 的吞吐量,例如 Redis 6.0 引入的多綫程 IO。這一點對於我理解 Redis 在高並發場景下的性能瓶頸以及如何進行性能調優至關重要。我還特彆喜歡書中關於 Redis 內存迴收和淘汰策略的討論,作者詳細對比瞭 LRU、LFU 等不同淘汰算法的優劣,以及它們在實際應用中的適用場景。這本書的優點在於,它不僅僅停留在理論層麵,而是結閤瞭大量的實際代碼和配置參數,讓你能夠將學到的知識立刻應用到實踐中去。讀完這本書,我感覺自己不再是那個隻會敲擊命令的“小白”,而是真正能夠洞察Redis運行機製的“內行”。
評分《深入理解Redis》這本書,真的給我帶來瞭前所未有的閱讀體驗。作者以一種非常平易近人的方式,將Redis的復雜性娓娓道來。最讓我印象深刻的是關於Redis事務的講解,作者不僅清晰地解釋瞭MULTI、EXEC、DISCARD、WATCH等命令的作用,還深入剖析瞭Redis事務的原子性問題以及如何通過Watch機製來處理並發衝突。這對於我之前在實際開發中遇到的數據一緻性問題,提供瞭非常寶貴的解決思路。另外,書中對Redis的Lua腳本執行機製的介紹也讓我大開眼界。作者詳細講解瞭如何編寫高效的Lua腳本,以及如何在Redis中執行這些腳本,並且還解釋瞭Redis的EVAL命令是如何保證Lua腳本執行的原子性的。這讓我能夠更好地利用Redis來處理一些復雜的業務邏輯,而無需將這些邏輯遷移到應用層,從而大大提升瞭係統的效率。這本書的結構安排非常閤理,循序漸進,讓我在不知不覺中就掌握瞭Redis的諸多核心技術。
評分我是一名對技術有著強烈好奇心的開發者,一直想深入瞭解Redis這個高性能的鍵值存儲係統。在閱讀《深入理解Redis》之前,我對Redis的認知僅限於它的基本用法,但這本書徹底改變瞭我的看法。作者在講解Redis的發布/訂閱(Pub/Sub)機製時,用非常生動的例子說明瞭它的工作原理,以及如何在實時消息推送、聊天室等場景中應用。這一點對於我開發基於消息隊列的應用非常有啓發。更讓我驚喜的是,書中還詳細介紹瞭Redis的Streams數據結構,它提供瞭更強大、更靈活的消息隊列功能,包括消息持久化、消費者組、消息確認等,這讓我看到瞭Redis在消息隊列領域的巨大潛力。作者還對Redis的性能監控和診斷工具進行瞭深入的講解,包括INFO命令、MONITOR命令以及如何使用Redis的慢查詢日誌來定位性能瓶頸。總而言之,這本書不僅僅是一本關於Redis的指南,更是一本關於如何高效利用Redis解決實際問題的寶典。
評分對於我這個長期與數據庫打交道的開發者來說,Redis一直是個神秘而又強大存在的工具。在遇到《深入理解Redis》這本書之前,我大多時候隻是停留在API調用的層麵,對於它背後的工作原理知之甚少。這本書就像一把鑰匙,為我打開瞭Redis的內部世界。作者在講解過程中,沒有迴避復雜的底層細節,而是用生動形象的比喻和圖文並茂的方式,將那些原本抽象的概念變得易於理解。比如,在解釋Redis的事件驅動模型時,作者將其類比於一個高效的餐廳服務員,能夠同時處理多個顧客的點餐、上菜和結賬,而不會因為某一項任務的耗時而影響整體效率。此外,書中對Redis集群的講解也是一大亮點,從一緻性哈希的原理到Redis Cluster的實現細節,再到如何應對腦裂等分布式係統常見的問題,作者都給齣瞭詳盡的闡述。讀完之後,我對於如何構建高可用、可擴展的Redis集群有瞭清晰的思路,這對於我參與的多個需要高並發數據訪問的項目來說,無疑是雪中送炭。
評分這本書的封麵設計給我一種沉靜而力量的感覺,深藍色的背景搭配燙金的“深入理解Redis”幾個大字,仿佛預示著一場關於數據存儲的深度探索。在翻開書的第一頁,我就被作者嚴謹的邏輯和清晰的結構所吸引。從最基礎的鍵值對存儲開始,逐步深入到數據結構(字符串、列錶、哈希、集閤、有序集閤)的底層實現原理,再到持久化機製(RDB和AOF)的權衡與選擇,以及主從復製和哨兵模式的高可用方案,作者都進行瞭抽絲剝繭般的講解。尤其讓我印象深刻的是關於Redis的內存管理部分,對於jemalloc和Redis的內存分配策略的剖析,讓我對Redis的性能優化有瞭更深層次的認識。書中還穿插瞭不少實際應用場景的案例,比如如何用Redis構建高性能的緩存係統、如何利用Sorted Set實現排行榜功能等,這些實戰性的內容極大地增強瞭本書的實用價值。讀完這本書,感覺自己對Redis的理解已經從“能用”提升到瞭“能用好”,甚至能夠根據具體場景選擇最閤適的Redis配置和實現方式。
評分redis內存數據庫,推薦學習
評分還可以!還可以!還可以!
評分隻有自己在樓下你不上課
評分好好好好好好好好好好好好好好好好好好好好好好
評分書不錯,學習使用,寫的挺通俗易懂的
評分書內容充實,深入淺齣,可以好好學習啦
評分挺不錯,京東買書配送快,質量也好!!!買過好多書瞭,在京東!
評分還可以!還可以!還可以!
評分特價屯書......
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有