本書深入淺出地介紹了Redis的5種數據類型,并通過多個實用示例展示了Redis的用法。除此之外,書中還講述了Redis的優化方法以及擴展方法,是一本對于學習和使用 Redis 來說不可多得的參考書籍。
本書一共由三個部分組成。首部分對Redis進行了介紹,說明了Redis的基本使用方法、它擁有的5種數據結構以及操作這5種數據結構的命令,并講解了如何使用Redis去構建文章展示網站、cookie、購物車、網頁緩存、數據庫行緩存等一系列程序。第二部分對Redis命令進行了更詳細的介紹,并展示了如何使用Redis去構建更為復雜的輔助工具和應用程序,并在結尾展示了如何使用Redis去構建一個簡單的社交網站。第三部分對Redis用戶經常會遇到的一些問題進行了介紹,講解了降低Redis內存占用的方法、擴展Redis性能的方法以及使用Lua語言進行腳本編程的方法。
當你需要以接近實時的速度訪問快速變動的數據流時,Redis這樣的鍵值數據庫就是你的極好選擇。通過接納散列、字符串、列表等多種數據類型,Redis對鍵值對模式進行了擴展,它既提供了極其快速的內存數據集操作,又可以在運行時輕松地將這些數據持久化到磁盤上面。除此之外,Redis還是免費的、開源的。
本書對Redis本身以及它的鍵值對模型進行了介紹,讀者將接觸到包括緩存、分布式廣告定向等實際使用案例,學到如何從小型的作業任務開始,擴展Redis以適應大規模的數據集,以及如何與其他傳統的關系數據庫或是其他NoSQL存儲系統進行集成。有經驗的開發者應該會對集群和服務器腳本編程等較為深入的內容感興趣。
本書主要內容
介紹Redis
預處理實時數據
管理內存數據集
/訂閱及配置
持久化到磁盤
本書面向熟悉數據庫概念的開發者。閱讀本書既不要求讀者預先了解NoSQL數據庫概念,也不要求讀者有任何Redis使用經驗。本書也適合具備編程能力的系統管理員閱讀。
要下載本書代碼可以訪問manning.com/RedisinAction。
作者介紹
Josiah L. Carlson博士既是一位經驗豐富的數據庫專家,也是一位活躍的Redis社區貢獻者。
譯者簡介
黃健宏(huangz),男,1990年出生,目前是程序員、技術圖書作者和譯者。著有《Redis設計與實現》,翻譯了《Redis命令參考》《Disque使用教程》等技術文檔。想要了解更多關于黃健宏的信息,請訪問他的個人網站huangz.me。
目錄
及時部分入門
第1章初識Redis2
1.1Redis簡介3
1.1.1Redis與其他數據庫和軟件的對比3
1.1.2附加特性4
1.1.3使用Redis的理由5
1.2Redis數據結構簡介6
1.2.1Redis中的字符串7
1.2.2Redis中的列表9
1.2.3Redis的集合10
1.2.4Redis的散列11
1.2.5Redis的有序集合12
1.3你好Redis13
1.3.1對文章進行投票15
1.3.2并獲取文章17
1.3.3對文章進行分組19
1.4尋求幫助21
1.5小結21
第2章使用Redis構建Web應用23
2.1登錄和cookie緩存24
2.2使用Redis實現購物車28
2.3網頁緩存29
2.4數據行緩存30
2.5網頁分析33
2.6小結34
第二部分核心概念
第3章Redis命令38
3.1字符串39
3.2列表42
3.3集合44
3.4散列46
3.5有序集合48
3.6與訂閱52
3.7其他命令54
3.7.1排序54
3.7.2基本的Redis事務56
3.7.3鍵的過期時間58
3.8小結60
第4章數據安全與性能保障61
4.1持久化選項61
4.1.1快照持久化62
4.1.2AOF持久化66
4.1.3重寫/壓縮AOF文件67
4.2復制68
4.2.1配置Redis的配置選項69
4.2.2Redis復制的啟動過程70
4.2.3主從鏈71
4.2.4檢驗磁盤寫入72
4.3處理系統故障73
4.3.1驗證快照文件和AOF文件74
4.3.2更換故障主服務器75
4.4Redis事務76
4.4.1定義用戶信息和用戶包裹77
4.4.2將物品放到市場上銷售78
4.4.3購買物品80
4.5非事務型流水線82
4.6關于性能方面的注意事項85
4.7小結87
第5章使用Redis構建支持程序88
5.1使用Redis來記錄日志88
5.1.1日志89
5.1.2常見日志90
5.2計數器和統計數據91
5.2.1將計數器存儲到Redis里面91
5.2.2使用Redis存儲統計數據96
5.2.3簡化統計數據的記錄與發現98
5.3查找IP所屬城市以及國家100
5.3.1載入位置表格100
5.3.2查找IP所屬城市102
5.4服務的發現與配置103
5.4.1使用Redis存儲配置信息103
5.4.2為每個應用程序組件分別配置一個Redis服務器104
5.4.3自動Redis連接管理106
5.5小結107
第6章使用Redis構建應用程序組件109
6.1自動補全109
6.1.1自動補全近聯系人110
6.1.2通訊錄自動補全112
6.2分布式鎖115
6.2.1鎖的重要性116
6.2.2簡易鎖118
6.2.3使用Redis構建鎖119
6.2.4細粒度鎖122
6.2.5帶有超時限制特性的鎖124
6.3計數信號量126
6.3.1構建基本的計數信號量126
6.3.2公平信號量128
6.3.3刷新信號量131
6.3.4消除競爭條件132
6.4任務隊列133
6.4.1先進先出隊列133
6.4.2延遲任務136
6.5消息拉取139
6.5.1單接收者消息的發送與訂閱替代品140
6.5.2多接收者消息的發送與訂閱替代品141
6.6使用Redis進行文件分發145
6.6.1根據地理位置聚合用戶數據146
6.6.2發送日志文件148
6.6.3接收日志文件149
6.6.4處理日志文件150
6.7小結152
第7章基于搜索的應用程序153
7.1使用Redis進行搜索153
7.1.1基本搜索原理154
7.1.2對搜索結果進行排序160
7.2有序索引162
7.2.1使用有序集合對搜索結果進行排序162
7.2.2使用有序集合實現非數值排序164
7.3廣告定向166
7.3.1什么是廣告服務器?167
7.3.2對廣告進行索引167
7.3.3執行廣告定向操作170
7.3.4從用戶行為中學習174
7.4職位搜索180
7.4.1逐個查找合適的職位180
7.4.2以搜索方式查找合適的職位181
7.5小結182
第8章構建簡單的社交網站184
8.1用戶和狀態185
8.1.1用戶信息185
8.1.2狀態消息186
8.2主頁時間線187
8.3關注者列表和正在關注列表188
8.4狀態消息的與刪除191
8.5流API194
8.5.1流API提供的數據195
8.5.2提供數據196
8.5.3對流消息進行過濾199
8.6小結205
第三部分進階內容
第9章降低內存占用208
9.1短結構208
9.1.1壓縮列表表示209
9.1.2集合的整數集合編碼211
9.1.3長壓縮列表和大整數集合帶來的性能問題212
9.2分片結構214
9.2.1分片式散列215
9.2.2分片集合218
9.3打包存儲二進制位和字節221
9.3.1決定被存儲位置信息的格式221
9.3.2存儲打包后的數據223
9.3.3對分片字符串進行聚合計算224
9.4小結226
第10章擴展Redis227
10.1擴展讀性能227
10.2擴展寫性能和內存容量230
10.2.1處理分片配置信息232
10.2.2創建分片服務器連接裝飾器233
10.3擴展復雜的查詢234
10.3.1擴展搜索查詢量235
10.3.2擴展搜索索引大小235
10.3.3對社交網站進行擴展240
10.4小結247
第11章Redis的Lua腳本編程248
11.1在不編寫C代碼的情況下添加新功能248
11.1.1將Lua腳本載入Redis249
11.1.2創建新的狀態消息251
11.2使用Lua重寫鎖和信號量254
11.2.1使用Lua實現鎖的原因254
11.2.2重寫鎖實現255
11.2.3使用Lua實現計數信號量257
11.3移除WATCH/MULTI/EXEC事務258
11.3.1回顧群組自動補全程序259
11.3.2再次對物品買賣市場進行改進261
11.4使用Lua對列表進行分片263
11.4.1分片列表的構成263
11.4.2將元素推入分片列表265
11.4.3從分片里面里面彈出元素266
11.4.4對分片列表執行阻塞彈出操作267
11.5小結270
附錄A快速安裝指南271
附錄B其他資源和參考資料279
要構建一個文章投票網站,我們首先要做的就是為了這個網站設置一些數值和限制條件:如果一篇文章獲得了至少200張支持票(up vote),那么網站就認為這篇文章是一篇有趣的文章;假如這個網站每天1000篇文章,而其中的50篇符合網站對有趣文章的要求,那么網站要做的就是把這50篇文章放到文章列表前100位至少24小時;另外,這個網站暫時不提供投反對票(down.vote)的功能。
為了產生一個能夠隨著時間流逝而不斷減少的評分,程序需要根據文章的時間和當前時間來計算文章的評分,具體的計算方法為:將文章得到的支持票數量乘以一個常數,然后加上文章的時間,得出的結果就是文章的評分。
我們使用從UTC時區1970年1月1日到現在為止經過的秒數來計算文章的評分,這個值通常被稱為Unix時間。之所以選擇使用Unix時間,是因為在所有能夠運行Redis的平臺上面,使用編程語言獲取這個值都是一件非常簡單的事情。另外,計算評分時與支持票數量相乘的常量為432,這個常量是通過將24小時的秒數(86400)除以文章展示24小時所需的支持票數量(200)得出的:文章每獲得一張支持票,程序就需要將文章的評分增加432分。
……
“這本書對于Redis的生態系統非常有幫助。”
——摘自“Redis之父”Salvatore Sanfilippo為本書寫的序
“書中介紹的示例都來源于真實的使用案例,這是本書的一個主要優點。”
——Filippo Pacini,SG咨詢公司
“本書通過真實而的示例,幫助讀者從新手成長為專家。”
——Felipe Gutierrez,VMware/Spring Source公司
“這本書提供了極佳的深入分析以及富有洞察力的真實案例。”
——Bobby Abraham,Integri有限責任公司
“此書自有黃金屋,此書自有顏如玉!”
——Leo Cassarani,Unboxed咨詢公司
趁著11.11前后,給員工采購的一批書。不敢說是不是正版,但是一如既往支持當當,同樣是活動購買的書籍,比另一常用電商平臺號太多。書籍質量和包裝都很不錯。希望以后多多提供折扣活動。
內容不錯,很好很實用
作為redis入門是一本很好的書,推薦
到手先簡單翻看了下,還不錯的樣子
當當自營 正品保證
值得一看的好書,講解的很細致
這本書講解的是Redis 的核心功能,注重功能的講解,凝結了作者對Redis的使用心得。
大概瞄了下,可能更想研究下memcached
網上買書就是不能挑,寄過來的書書皮破了,應該是人工分揀時候弄的,懶得換了,就這樣看吧。
主要還是實戰,不適合作為入門。并且案例使用的是Python語言
送貨速度超乎我的想象,早上下單,下午送達,真快~
很喜歡的,起碼是正版,只是書到的時候有點變形,不過還好。
實戰的案例很多,適合剛開始接觸學習,并需要快速上手的朋友
書中的示例用的是python,要是用java就完美了
如其名,篇實際應用的一本書,值得架構師與高級開發好好讀一下
今天上班用到了這本書上的內容處理并發問題 很贊
內容還是很好的,注意這本書是Python寫的,是Python寫的,是Python寫的,重要的事情說三遍!
看了作者的簡介和序言,感覺被喂了一大把狗糧
書很不錯,介紹的例子,應用于場景很多,是一本很實用的書,可惜沒有講到集群配置操作,但是還是十分推薦購買
這個看過了,寫的很不錯,代碼都是結合python,很贊
很好的書籍,使用Python語言對redis進行操作。
書很不錯,非常專業,講解簡明扼要,適合快速上手
物流包裝很差,送來的時候書的包裝皮已經破了,其他的沒問題
當當買書從來沒讓我失望過,真的,價格最低,物流也快
收到包裹的時候看著外邊薄薄的一層包裝還擔心里面的書會不會有破損,回家打開后發現每本書都完好,感謝物流。開始學習。
不是很實用,案例很多,用法很高級,但不是常用場景。第四章及九章往后涉及到些原理、調優,其他都是高級用法案例,但正常情況主要還是以緩存作用為主,以及持久化為輔。不會替代數據庫,也不會用其事務,隊列
在京 東上買的話 就是58.6元,一點不便宜的,講的好聽,還打了個85折。。。。
一本介紹KeyValue數據庫Redis的好書,全面,詳細,值得好好閱讀,并仔細做好筆記。
還不錯的,只不過使用python寫的,需要看清楚下手