redis學習總結(一)

1. 目的


學習任何一門技術都是有原因的,個人還是比較帶着問題去學習。然後通過學習對每個問題進行回答,這樣也就對此技術達到學習目的,只有真正理解,纔可以在我們以後的項目中大膽放心的使用。

問題列表:

(1). redis是什麼,何爲redis?

(2). 爲什麼要使用redis,能幫我們解決什麼問題,能做什麼?

(3). redis的優缺點?

(4). redis的安裝、配置?

(5). redis中有哪些技術點?

(6). redis如何在項目中使用,項目實戰?

(7). 技術進階,redis如何實現,實現原理,源碼分析,技術架構?

(8). 參考資料


2. 回答問題

針對第1節中提出的問題,邊學習邊分別進行解答。

2.1 redis是什麼,何爲redis?

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,
並提供多種語言的API。
從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。

redis是一個key-value存儲系統。與Memcached類似,它支持存儲的value類型相對更多,包括5種數據類型。
redis和memcached一樣,爲了保證效率,數據都是緩存在內存中。redis會週期性的把更新的數據寫入
磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。

redis提供五種數據類型:string,hash,list,set及zset(sorted set)。


redis的版本

2012年08月02日,Redis 2.4.16 小更新版本 NoSQL。 
2012年08月31日 ,Redis 2.4.17 小更新版本 NoSQL。
2012年11月7日 Redis 2.6.3 發佈,高性能K/V服務器。
2013年4月30日Redis 2.6.13 發佈,高性能K/V服務器。
2013年11月25日,Redis 2.8.1發佈。
2015年2月,Redis3.0.0發佈(支持集羣)。

2.2 爲什麼要使用redis,能幫我們解決什麼問題,能做什麼?

redis是NoSQL數據庫;

redis是memcached+MySql的升級版;

NoSQL主要用於解決以下幾種問題
1. 少量數據存儲,高速讀寫訪問。此類產品通過數據全部in-momery 的方式來保證高速訪問,同時提供數據落地的功能,
實際這正是Redis最主要的適用場景。
2. 海量數據存儲,分佈式系統支持,數據一致性保證,方便的集羣節點添加/刪除。
3. 這方面最具代表性的是dynamo和bigtable 2篇論文所闡述的思路。前者是一個完全無中心的設計,
節點之間通過gossip方式傳遞集羣信息,數據保證最終一致性,後者是一箇中心化的方案設計,
通過類似一個分佈式鎖服務來保證強一致性,數據寫入先寫內存和redo log,然後定期compat歸併到磁盤上,
將隨機寫優化爲順序寫,提高寫入性能。
4. Schema free,auto-sharding等。比如目前常見的一些文檔數據庫都是支持schema-free的,直接存儲json格式數據,
並且支持auto-sharding等功能,比如mongodb。

redis特點
1. Redis使用最佳方式是全部數據in-memory。
2. Redis更多場景是作爲Memcached的替代者來使用。
3. 當需要除key/value之外的更多數據類型支持時,使用Redis更合適。
4. 當存儲的數據不能被剔除時,使用Redis更合適。

2.3 redis的優缺點?

優點

與memcached+Mysql比較,redis的優點:
非常豐富的數據結構,且這些數據結構的操作都是原子性的;
高速讀寫,memcached提供cas命令,可以保證多個併發訪問操作同一份數據的一致性;
mysql使用了鎖,來實現數據一致性;redis沒有使用cas命令和鎖,redis提供了事物功能,可以保證一串命令的原子性。

缺點

1. 持久化

redis直接把數據存儲在內存中,可以通過兩種方式持久化。
(1). 定時快照 -snapshot
redis會每隔一段時間將整個數據庫的數據寫入到磁盤中,每次都是全部寫,代價很高;
(2). 基於語句的追加 - appendOnlyFile,aof
aof只是追加變化的數據,但是追加log可能很大,同時所有操作均要重新執行一遍,恢復速度慢。

2. 耗內存
雖然redis採用壓縮算法存儲,但是對內存消耗還是很大

2.4 redis的安裝、配置?

redis的版本說明
redis版本號中,小數點後的數字爲偶數是穩定版本,奇數爲非穩定版,建議使用穩定版。在3.0以後有cluster集羣功能。
由於redis沒有針對於windows的版本,打開redis的windows下載頁面,會有一段數據大意就是 Redis官方是不支持windows的,
只是 Microsoft Open Tech group 在 GitHub上開發了一個Win64的版本,項目地址是:

github下載地址
https://github.com/MSOpenTech/redis/releases

配置

2.5 redis中有哪些技術點?

1. 5種數據類型介紹、命令
2. 事物、過期時間、排序
3. 持久化
4. 集羣
5. java操作redis基本功能(Main方法)
6. redis相關工具

見後面的連載章節


2.6 redis如何在項目中使用,項目實戰?

1. 使用spring+redis集羣

見後面的連載章節


2.7 技術進階,redis如何實現,實現原理,源碼分析,技術架構

1. redis技術架構
2. redis實現原理
3. redis性能調優
4. redis源碼分析

見後面的連載章節


2.8 參考資料

1. redis官網地址


2. 下載地址


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章