redis理論知識

來源:互聯網
上載者:User

標籤:redis 緩衝

Redis理論

 

Redis 和memcached 基本類似,只是redis可以把資料同步到磁碟

Redis是一個開源,記憶體儲存的資料結構伺服器,可用作資料庫,快取和訊息佇列代理。

雲資料庫RDS 是一個穩定可靠。可Auto Scaling的線上資料服務庫服務。基于飛天分布式系統和全SSD盤高效能儲存,支援Mysql sql server PPAS(相容ORICAL)

 

redis 是一個高效能的 key-value 資料庫。 redis 的出現,很大程度補償了memcached 這類 key:value 儲存的不足,在部分場合可以對關聯式資料庫起到很好的補充作用。它提供了 java,C,C++,perl,JavaScript,Python,Ruby,Erlang,PHP 等用戶端,使用很方便。

Redis與memcached一樣所有資料都是儲存在記憶體中,不同的是redis不週期性通過非同步方式儲存到磁碟上 (這稱為“半持久化模式”);也可以把每一次資料變化都寫入到一個 append only file(aof)裡面(這稱為“全持久化模式”)。

Redis支援主從同步,資料可以從master向任意數量的slave上同步,slave可以是關聯其他slave的master。

 

Redis的優點

1.redis不僅僅支援簡單的key-values類型的資料,也支援list set zset hash等資料類型的儲存

2.Redis支援資料的備份,master-slave模式的資料備份

3.Redis 支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入使用

Redis只會緩衝所有的key資訊,如果redis發現記憶體的使用超過了一定的閥值,將觸發swap的操作,根據計算得出哪些key對應的values需要swap到磁碟,同時在記憶體中清除。這種特性可以使得redis保持超過其機器本身記憶體大小的資料。當然,機器本身的記憶體必須要能夠保持所有的key,這些資料是不會進行swap操作的。同時,由於將記憶體中的資料swap到了磁碟中的時候,提供服務的主線程和進行swap操作的子線程會共用這部分記憶體,所以,如果需要更新,則會阻塞這個操作,直到swap完成操作後才會進行修改。

當從redis中讀取資料的時候,若是需要從swap中載入相應的資料,再返回給請求方,這裡就存在一個IO線程池的問題。在預設情況下,redis會出現阻塞,即完成swap載入後,才會響應。所以,設定適當的IO線程池的大小,從swap中載入資料的讀取請求做並發處理,減小阻塞的時間。

 

Redis Sentinel 提供高可用

Redis Cluster 提供自動分區

 

 

Gearman

利用gearman實現redis緩衝mysql

Gearman 是一個支援分布式的任務分發架構:

Gearman Job Server:Gearman 核心程式,需要編譯安裝並以守護進程形式運行在後台。後台守護進程,維護一個隊列。

Gearman Client:可以理解為任務的要求者。

Gearman Worker:任務的真正執行者,一般需要自己編寫具體邏輯並通過守護進程方式運行,Gearman Worker 接收到 Gearman Client 傳遞的任務內容後,會按順序處理。

大致流程:下面要編寫的 mysql 觸發器,就相當於 Gearman 的用戶端。修改表,插入表就相當於直接下發任務。然後通過 lib_mysqludf_json UDF(user defined functions) 庫函數將關係資料對應為 JSON 格式,然後在通過 gearman-mysql-udf 外掛程式將任務加入到 Gearman 的任務隊列中,最後通過redis_worker.php(worker.php將mysql資料非同步複製到redis),也就是 Gearman 的 worker 端來完成 redis 資料庫的更新。

Mysql 要實現與外部程式互連的最好方式通過mysql UDF(user defined functions)來實現。為了讓mysql能將資料傳入到gearman中,這裡使用了lib_mysqludf_json UDF庫函數將關係資料對應為 JSON 格式(gearman只接受字串作為入口參數),然後在通過 gearman-mysql-udf 外掛程式將任務加入到 Gearman 的任務隊列中。


本文出自 “11841085” 部落格,轉載請與作者聯絡!

redis理論知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.