Redis是什么?在Rails中引入Redis的步骤是什么?
首先
虽然我在我管理的服务中也使用了Redis,但只是为了使用名为split的gem而安装它。虽然我很高兴安装了Redis,但它几乎没有发挥作用,所以我想重新整理有关Redis的信息,然后开始正确使用它。
Redis 是什么?
-
- キャッシュシステムとして有名であり、NoSQLの1つ
-
- NoSQLの中でも、KVS(キーバリューストア)。キーとバリューの組み合わせを保存する。
-
- データ型にいろいろ使える
String,List,Set,Sorted Set,Hash
インメモリなので高速
永続化設定可能
シングルスレッド
スケールアウト可能
使いどころ
セッションなど有効期限のあるデータを扱う場合
ランキングデータなど重たいSQLを走らせないといけない処理を扱う場合
安装Redis
我使用 brew 进行了安装。
其他的安装方法在这里(https://qiita.com/KurosawaTsuyoshi/items/f8719bf7c3a10d22a921)。
$ brew install redis
安装完成了。
启动Redis服务器
接下来启动Redis服务器。
$ redis-server
これでローカル環境で Redis を使えるようになります。
连接到 Redis
$ redis-cli
127.0.0.1:6379>
试用一下 Redis。
在使用redis-cli与Redis服务器建立连接后,尝试执行以下操作。
SET を使って Key と Value を設定しデータを保存する
GET で Key を指定して Value を取得する
quit で redis-cli を終了
redis> SET mykey "Hello"
OK
redis> GET mykey
"Hello"
redis> quit
Redis的set命令用于设置给定键的值。如果键已存在,则会替换已有的值。此命令还可以设置键的过期时间。
将Redis引入Rails中
环境
2.5.1版的Ruby
5.2.2版的Rails
创建Rails应用程序
在这里我们将创建一个简单的应用程序,它从Redis中提取值并进行显示。
$ rails new redis_sample
安装 gem redis-rails
由于在Rails中使用Redis,因此我们需要将Gemfile更改为以下内容。如果在普通的Ruby环境中使用,则使用gem redis应该可以。
gem 'redis-rails'
$ bundle install
config.cache_store = :redis_store, 'redis://localhost:6379/0/cache', { expires_in: 90.minutes }
虽然在config/application.rb中写了,但实际上因为每个环境参考的Redis服务器是不同的, 所以建议在config/enviroments/◯◯.rb中写。
创建示例页面
Redis.current = Redis.new
因使用本地环境,所以只写了 Redis.new,但可以根据下面的示例指定 host 和 port,在使用 AWS 的 ElastiCache 的 Redis 等情况下需要分别指定它们(推荐使用环境变量管理,包括本地环境在内)。
Redis.new(:host => '127.0.0.1', :port => 6379)
つづいてページを表示するために、ルーティング、コントローラ、ビューを書いていきます。
resource :redis, only: %i[show]
class RedisController < ApplicationController
def show
Redis.current.set('mykey', 'Hello')
end
end
config/initializers/redis.rb で定義した Redis.current に対して値を保存します。
<%= Redis.current.get('mykey') %>
因此,我們在視圖中提取並顯示在上面保存的值。
总结
实现本身只需要这么多。
我认为可以在排名页面等需要重型SQL的地方,以及使用片段缓存等地方使用。
此外,如果使用AWS的话,可以通过ElastiCache来搭建Redis服务器,然后在config/initializers/redis.rb中指定其端点即可!(我自己忘记了设置安全组而被卡住了,所以请注意一下w)