Redis(來自REmote DIctionary Server)是一個基于內(nèi)存的非關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息隊列。Redis擁有高性能和豐富的數(shù)據(jù)類型,最重要的是它支持持久化,即使機器故障,數(shù)據(jù)也能夠得到保存。
Redis最初是一個遠程字典服務(wù)器,它使用鍵值對存儲數(shù)據(jù),可以支持字符串,哈希表,列表,集合和有序集合等方式存儲數(shù)據(jù)。Redis還支持訂閱和發(fā)布消息。它使用C語言編寫,但支持多種語言的客戶端。
在 Ruby on Rails應(yīng)用中,Redis的出色表現(xiàn)使其成為一個非常有用的工具。使用 Redis緩存數(shù)據(jù)可以大幅提高應(yīng)用的性能,而 Redis的發(fā)布和訂閱功能則可以使開發(fā)人員輕松地在應(yīng)用程序之間傳輸消息。
Redis如何在Ruby on Rails中工作?
Ruby on Rails通過gem包中的redis-rb和hiredis進行Redis的客戶端支持。使用Redis-Cli進行交互式連接到Redis服務(wù)器時,可以使用命令清單操作鍵值存儲,內(nèi)置哈希表,列表,集合,有序集合,bitmap和其他數(shù)據(jù)結(jié)構(gòu)。
在Rails中,需要在Gemfile中增加gem 'redis',然后使用 bundle install安裝gem包以便使用redis。可以使用redis.rb等自定義文件訪問redis數(shù)據(jù)庫。這些文件定義了任何必需變量或常量,如redis數(shù)據(jù)庫密碼、主機端口和連接對象。
我們可以在控制器或模型中使用以下幾個庫文件來添加Redis支持:
Redis activesupport
Redis objects
Redis store
在Rails中使用Redis實現(xiàn)緩存
在Rails中使用Redis來作為應(yīng)用程序的緩存可以減少查詢數(shù)據(jù)庫的次數(shù),提高應(yīng)用的性能。我們可以使用 rails cache方法使用Redis來存儲緩存數(shù)據(jù),cache方法可以在應(yīng)用的任何位置使用,例如控制器或視圖模板文件中。cache方法采用了鍵值對的方式進行數(shù)據(jù)存儲,其中data變量是存儲在Redis中的數(shù)據(jù)。
需要了解的是,當使用 Rails的緩存機制時,系統(tǒng)內(nèi)部實際上代表調(diào)用了 ActiveSupport::Cache::RedisCacheStore類。在Redis中緩存存儲中,存儲鍵和值的過程非常重要。每當緩存鍵運行到過期時間,存儲值就會自動從緩存數(shù)據(jù)庫中移除。這是因為Redis緩存中每個鍵都伴隨有生存時間的概念。
使用 redis-rails提供的幫助器需要將其添加到 config/initializers 之中。在添加 Redis作為緩存后,如果您的許多操作由于爆炸轉(zhuǎn)變而出現(xiàn),可以使用 Rails.cache.clear指令移除Redis緩存。