使用Rails的连接池来连接Redis
Rails提供了ActiveRecord来处理数据库相关的所有繁琐工作,这非常方便。但是如果使用非关系型数据库,就需要自己处理一些事情。以下是关于在使用Redis时如何使用连接池的一些笔记。
宝石文件
Redis的客户端使用Redis,连接池使用connection_pool。
gem 'redis'
gem 'connection_pool'
redis的配置文件
准备一个用于存储信息的Redis配置文件。配置文件位于config/redis.yml,并按照以下方式进行描述。
default: &default
host: localhost
port: 6379
development:
<<: *default
test:
<<: *default
production:
<<: *default
host: redis-server
Redis的实例化
在config/initializers/redis.rb文件中进行初始化。
# Load the redis.yml configuration file
redis_config = YAML.load_file(Rails.root + 'config/redis.yml')[Rails.env]
Redis.current = ConnectionPool.new(size: 10, timeout: 5) do
Redis.new host: redis_config['host'], port: redis_config['port']
end
首先,我們會讀取redis.yml文件,然後讀取正在運行環境下的redis配置。接下來,我們會將連接池的對象設置到Redis.current中。就是這樣。
使用Redis
最后是关于如何使用Redis的部分。可以从控制器等地方按照以下方式进行使用。
Redis.current.with do |redis|
redis.sadd 'foo', 1
end
虽然无法确认连接池是否确实在使用,但我们可以相信这个库。
结尾处
方便使用连接池了。下一次是有关Active Job + Sidekiq + Redis的备忘录。