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)

广告
将在 10 秒后关闭
bannerAds