《Redis 小白指南(一)- 簡介、安裝、GUI 和 C# 驅動介紹》 講的是 Redis 的介紹,以及如何在 Windows 上安裝並使用,一些 GUI 工具和本身簡單封裝的 RedisHelper。html
《Redis 小白指南(二)- 聊聊五大類型:字符串、散列、列表、集合和有序集合》講的是 Redis 中最核心的內容,最經常使用的就是和數據類型打交道。前端
事務是一組命令的集合,事務和命令同樣都是 Redis 的最小執行單位。即一個事務中的命令,要麼都執行,要麼都不執行。能夠思考關係型數據庫中的事務特性 ACID:git
(1)原子性(Atomicity):在事務結束時,其中包含的更新處理要麼所有執行,要麼徹底不執行。github
(2)一致性(Consistency):事務中包含的處理,要知足數據庫提早設置的約束,也稱完整性。redis
(3)隔離性(lsolation):保證不一樣事務以前互不干擾的特性。數據庫
(4)持久性(Durability):事務一旦結束,DBMS 會保證該時點的數據狀態得以保存的特性,也稱耐久性。設計模式
Redis 能夠保證一個事務中的命令依次執行而不會被其它命令插入。如:Client A 須要執行多條指令,同時 Client B 也執行多條指令,由於網絡傳輸或者時間等因素形成指令發送到 Redis 服務器的順序有前後,即有可能會出現 A 發送的指令和 B 發送的指令造成了交叉,使用事務就能夠避免這種狀況。緩存
遺憾的是,Redis 不支持回滾。服務器
MULTI //開啓事務的指令 EXEC //執行事務,依次執行
當客戶端發送了 EXEC 的指令後,即便客戶端此時忽然斷開與服務器的連接,事務中的操做依然會依次執行,由於他們都已經被緩存到 Redis 事務的隊列中了。網絡
1.設置過時時間意味着一段時間後就會刪除 redis 中指定的數據。
2.應用場景:限時優惠活動、緩存、學校成績排名和遊戲積分排名按期刷新。
3.命令:
(1)EXPIRE:
EXPIRE key seconds //seconds 參數表示鍵的過時時間,單位是秒
(2)TTL:查看剩餘時間
TTL key
(3)DEL:刪除
DEL key
(4)PERSIST:取消鍵的過時時間設置(將該鍵切換成永久性質的)
PERSIST key
1.什麼狀況纔會使用呢?
答:好比,咱們的網站進行一些比較耗時的操做時,如發送郵件、複雜的數據運算和 IO 日誌記錄等均可以使用,由於這樣能夠避免阻塞前端頁面的渲染,避免用戶進行長時間的等待。通常咱們會使用多線程和異步進行處理這種耗時操做的問題。
2.什麼是消息通知?
答:你能夠理解爲常說的消息隊列,相似設計模式中的生產/消費模式,一邊是生產者(producer),一邊是消費者(consumer)。生產者負責把要處理的任務丟到隊列裏,消費者負責取出隊列中的任務進行執行。
3.特色:
鬆耦合:沒有語言限制,開發團隊能夠分別使用不一樣的開發語言,雙方約定好數據的傳輸格式便可。
易於擴展:消費者能夠有多個,部署在多臺服務器上,輕鬆減輕單臺服務器的壓力。
不過,從大局來看,企業常採用第三方更爲專業的 MQ,如 RabbitMQ 替代 Redis 的消息隊列機制。《[.NET] RabbitMQ 的行爲藝術》
客戶端和 Redis 採用的是 TCP 進行鏈接。
咱們對 Redis 發送一條指令後進行等待,完畢後返回執行結果;接着,發送第二條指令,再次等待 Redis 執行完畢後的執行結果;第三次發送指令 ... ...。
雖然如今的網絡帶寬已經足夠快,不過若是執行的命令過多,性能消耗依然是挺明顯的。
管道機制,它把多條命令一次性組合起來發送到 Redis 服務器執行,再返回全部的執行結果,與以前的相比減小了兩端網絡請求的次數從而提升了性能。
雖然在如今這個年代,內存條的價格已經很是便宜,但相對於硬盤來講,價格依然很是高昂,進行內存空間成本的控制和資源的有效利用也是一個迫切的主題。
1.精簡鍵名和鍵值。不過須要本身把握精簡的尺度,由於要基於可讀性的基礎上進行精簡,過於精簡不易於維護也容易形成命名衝突。
2.選擇合適的數據類型進行存儲。
3.定時清理(刪除)無效的緩存數據,或者設置自動過時時間。
4.配置 Redis 可用的最大空間大小,進行資源的合理分配。
《Redis 小白指南(一)- 簡介、安裝、GUI 和 C# 驅動介紹》
《Redis 小白指南(二)- 聊聊五大類型:字符串、散列、列表、集合和有序集合》
《Redis 小白指南(三)- 事務、過時、消息通知、管道和優化內存空間》
【博主】反骨仔
【原文】http://www.cnblogs.com/liqingwen/p/6920680.html
【GitHub】https://github.com/liqingwen2015/Wen.Helpers/blob/master/Wen.Helpers.Common/Redis/RedisHelper.cs
【參考】《Redis 入門指南》