$redis 全局变量与 ruby​​ on Rails

2024-03-24

我使用 redis 作为读取缓存。我创建了一个初始化程序

配置/初始化程序/redis.rb

$redis = Redis.new(:host => ENV["REDIS_HOST"], :port => ENV["REDIS_PORT"])

每当创建新工作人员时,我都会在 unicorn.rb 中使用此全局变量来创建新连接。

before_fork do |server, worker|
  # clear redis connection
  $redis.quit unless $redis.blank?
end

# Give each child process its own Redis connection
after_fork do |server, worker|
  $redis = Redis.new(:host => ENV["REDIS_HOST"], :port => ENV["REDIS_PORT"])
end

每当我需要访问我的 Redis 服务器时,我也会使用这个全局变量。但我不习惯使用这个全局变量。还有比使用全局变量更好的选择吗?


Redis.current,您可以用它来存储您唯一的Redis实例。

所以不要使用$redis,您可以按如下方式分配实例:

Redis.current = Redis.new(:host => ENV["REDIS_HOST"], :port => ENV["REDIS_PORT"])

Redis.current was 2010年引入redis-rb https://github.com/redis/redis-rb/commit/23ed5974e96e89f4ef691139a9380a9d08e9cec6作为获取 Redis 连接的标准方法,所以我很惊讶没有其他答案提到它。

Update:从 4.6.0 版本开始Redis.current 已被弃用 https://github.com/redis/redis-rb/commit/9745e22db65ac294be51ed393b584c0f8b72ae98。作者指出,典型的多线程应用程序会在共享 Redis 客户端周围发现大量锁定。他们建议定义一个自己的地方来获取 Redis 客户端,但也建议使用连接池。

因此,接受的答案是实现类似效果的最简单的解决方案Redis.current,但在多线程环境中可能无法实现最佳性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

$redis 全局变量与 ruby​​ on Rails 的相关文章

  • “没有可用的二元红宝石”是什么意思?

    每当我使用rvm install x x x 即使安装成功 我也会收到此警告 No binary rubies available for osx 10 12 x86 64 ruby 2 4 0 Continuing with compil
  • Rails:format.js 或 format.json,或两者?

    可能很明显 但我仍然缺乏基本知识 那么在控制器内部 两者都可以使用 还是总是 Javascript 所以两者是相同的 json and js是两种不同类型的响应 它们在 Rails 中被定义为不同的 MIME 类型 Mime Type re
  • 获取设备中的当前用户ID

    如何使用设备获取控制器中的当前用户 ID 在我的控制器中我有这样的东西 def index me current user c User find me sheets c time sheets end 我收到一条错误消息 无法找到没有 I
  • Rails 注释分段错误

    有一些问题围绕着这个问题 但没有什么真正能满足我的需求 After I bundle install下面列出了我的 Gemfile 我运行annotate并出现以下错误 Users nickcoelius rvm gems ruby 1 8
  • 有没有人有 Ruby 和 Rake 的 Notepad++ 函数列表插件的解析规则

    我使用 Notepad 编辑 rake 文件 并且希望能够使用函数列表插件 我无法在线找到任何解析规则 并且 语言解析规则 对话框没有非常清晰的记录 我正在将方法解析到以下列表中 但还想显示任务 Function Begin t def t
  • 预期的 ProductField,出现数组问题

    我有一个 Rails 4 应用程序 它有一个如下所示的 params 块 def store params params require store permit name description user id products attr
  • 如何向 Time.now 添加两周?

    如何在 Ruby 中向当前 Time now 添加两周 我有一个使用 DataMapper 的小型 Sinatra 项目 在保存之前 我有一个字段填充了当前时间加上两周 但未按需要工作 任何帮助是极大的赞赏 我收到以下错误 NoMethod
  • Watir 更改 Mozilla Firefox 首选项

    我正在使用 Watir 运行 Ruby 脚本来自动执行一些操作 我正在尝试自动将一些文件保存到某个目录 因此 在我的 Mozilla 设置中 我将默认下载目录设置为桌面并选择自动保存文件 然而 当我开始运行脚本时 这些更改并未反映出来 似乎
  • 创建一个简单的 Rails 3 文本助手 Gem [重复]

    这个问题在这里已经有答案了 我一直在开发我的第一个 Rails 3 插件 以打包一个我喜欢在ApplicationHelper我所有的应用程序 你可以看到整个代码在 Github 上 https github com burlesona s
  • 资产管道弃用警告 tsort.rb:226

    我的 Rails 4 2 在开发中运行良好 但在生产环境中我收到以下警告 DEPRECATION WARNING The configuration option config serve static assets has been re
  • 将 Rails 变量传递给液体可以在控制台中工作,但不在视图中

    我想将哈希传递给渲染方法 当我这样做时 在我的控制台中一切正常 object Object find params id hash object object to liquid template Liquid Template parse
  • Capistrano 和 XSendFile 配置

    我正在尝试使用 Apache 2 2 Passenger 4 0 59 和 XSendFile 0 12 配置 Rails 生产服务器 应用程序通过 Capistrano 部署 部署的应用程序生成 可能很大 PDF Rails root t
  • 如何计算带有偏移量的异或?

    我想用不同的偏移量进行异或计算以在计算中列出 例子 key 0 1 0 text 0 1 0 1 0 1 0 1 1 1 异或计算 key 0 text 0 key 1 text 1 key 2 text 2 key 0 text 3 ke
  • 在 ec2 上托管 Rails

    我想将 Rails 部署到亚马逊 ec2 上 我看过 poolparty 和 ec2onrails 但似乎都不再维护了 人们用什么来做到这一点 都是自制的木偶和卡皮斯特拉诺 还是有一个项目可以让我继续下去 我可以推荐两个项目 如果您有一个
  • 如何从 Rails 中的 date_select 或 select_date 获取日期?

    Using select date给我回一个params my date with year month and day属性 如何轻松获取 Date 对象 我希望有类似的事情params my date to date 我很高兴使用date
  • 测量两个字符串之间相似性的有效方法是什么? (编辑距离使堆栈太深)

    所以 我从这个开始 http en wikibooks org wiki Algorithm Implementation Strings Levenshtein distance Ruby http en wikibooks org wi
  • 仅删除多对多关系

    我有一个 has and belongs to many friends join table gt friends peoples 要添加朋友 我会这样做 people followers lt lt friend这会创建关系和新的个人资
  • ruby 中的 #encode 和 #force_encoding 有什么区别?

    我真的不明白之间的区别 encode and force encoding在 Ruby 中String班级 我明白那个 kam force encoding UTF 8 将迫使 kam 是UTF 8编码 但是怎么样 encode encod
  • 我在 Rails 中使用了保留字吗?

    这是我的模型 class Record lt ActiveRecord Base belongs to user belongs to directory end class Directory lt ActiveRecord Base h
  • Nokogiri 保持 HTML 实体不变

    我希望 Nokogiri 保持 HTML 实体不变 但它似乎正在将实体转换为实际的符号 例如 Nokogiri HTML fragment p reg p to s 结果是 p p 似乎没有什么可以将原始 HTML 返回给我 inner h

随机推荐

  • 对...()感到困惑?

    In 另一个问题 https stackoverflow com a 12417320 636656 sapply substitute as character 在函数内部使用来获取传递给函数的名称 这as character部分听起来不
  • 使用php将单词数组转换为字符串

    我有一系列关键字 数组 gt 房子 桌子 马 树 我需要从中创建一个字符串 如下所示 房子 桌子 马 树 我怎样才能用 PHP 做到这一点 Use implode https www php net manual en function i
  • Xamarin Shell:将多个参数传递到另一个页面

    我的 Xamarin Forms Shell 应用程序中有两个页面 一个是列表页面 另一个是详细信息页面 当我选择列表页面中的项目时 将显示详细信息页面 我能够将一个参数传递到第二页 我知道如何传递第二个值 但是我应该如何接收第一个属性本身
  • 设置 llvm::ConstantInt 的值

    我正在玩 LLVM 我考虑过改变中间代码中常量的值 然而对于班级llvm 常量Int http llvm org docs doxygen html classllvm 1 1ConstantInt html 我没有看到设置值函数 知道如何
  • f77 未格式化二进制文件的内容

    我有一个 f77 未格式化的二进制文件 我知道该文件包含 2 个浮点数和一个长整数以及数据 文件的大小为 536870940 字节 应包含 512 3 个浮点数据值以及 2 个浮点和长整数 512 3 个浮点数据值组成 536870912
  • 将 HTML 文件导入到另一个 HTML 文件中

    我想知道如何将 HTML 文件导入到其他 HTML 文件中 这两个文件都引用许多不同的文件 因此我更愿意将它们保存在两个不同的文件夹中 而不是将一个文件复制到另一个文件中 目前 我正在使用 Django 进行本地开发 include fil
  • keycloak 上是否有用于更改用户密码的 API 调用?

    我正在尝试实现自己的表单来更改用户的密码 我试图在 Keycloak 中找到用于更改用户密码的 API 但在文档中找不到任何内容 有API可以做到这一点吗 您可以使用PUT auth admin realms realm users id
  • 调用渲染与绘制 DOM?

    我正在学习 React 并试图更好地理解生命周期和不同阶段 我刚刚读到的一件事是 React 首先渲染然后安装元素 在这种情况下渲染意味着调用类的 render 而不是绘制 DOM 我想我只是不太明白这意味着什么 有人可以用简单的方式或举例
  • Ansichar 和 char 有什么区别? [复制]

    这个问题在这里已经有答案了 我最近遇到了这种数据类型不匹配的情况 这是我以前从未见过的 我希望有人能解释它们是什么以及它们有何不同 我得到的错误是 F2063 DCC 错误 E2010 不兼容的类型 AnsiChar 和 Char 历史上在
  • 增加 ulimit Mac OS X 10.8

    I m learning MongoDB and when I start the mongo shell a wild warning message appeared It says 我如何更改 软限制 我使用的是 Mac OSX 10
  • 如何删除 Hudson 的构建工件?

    我们使用 Hudson 作为我们的持续集成服务器 它非常棒 我们有两个问题 它们有轻微的相关性 https hudson dev java net issues show bug cgi id 2736 https hudson dev j
  • 将数据集加载到数据库时,DBUnit 出现 NoPrimaryKeyException

    当我尝试运行使用 DBUnit 的单元测试之一时 我收到 NoPrimaryKeyException 数据表是使用 Hibernate 创建的 是映射多对多关系的两个类之间的连接表 定义关系的注解如下 Override ManyToMany
  • Pagedown markdown 脚本插入图像 url 一次

    我有一个修改后的 pagedown markdown 标记脚本 用于将图像 url 插入编辑器 但它仅在第一次起作用 我已经用注释解释了我的代码
  • 使用 python scapy 发送 DHCP Discover

    我是Python新手 正在学习一些网络编程 我希望通过我的tap接口向我的DHCP服务器发送一个DHCP数据包 并期待它的一些响应 我尝试了几种数据包构建技术 例如 structs 和 ctypes 最终使用 scapy 在这里 我能够发送
  • 附加属性有哪些不同的用途?

    到目前为止 我在 WPF 的冒险经历中已经看到了 AttachedProperties 的一些非常不同的用途 我想知道其中有哪些不同的用途 我见过相当普通的用途 例如 Grid 和 Canvas 中的用途 以及一些非常酷的技巧 允许在没有
  • 在 Jupyter Notebook 中重新加载 Python 模块(不自动重新加载)

    我有以下文件夹结构 project src init py mymodule py mynotebook ipynb within mynotebook我可以导入mymodule使用标准公式from src mymodule import
  • 如何使用空格或缩进注释多行

    在 Visual Studio 2010 中 我有多行文本需要注释 A B C Using CTRL E C to comment out multiple lines I get A B C 我想在之间有一个空格 或缩进 and A he
  • GNUPLOT:点图,数据取决于点大小

    我正在尝试绘制由 3 个坐标组成的数据集 X 坐标 x 坐标和出现次数 例子 1 2 10 3 1 2 3 2 1 我想在 x y 处为每条线画一个点 其直径取决于第三个值 Gnuplot 可以做到这一点吗 创建具有可变点大小的二维图 看t
  • CSS非标准“ZOOM”属性

    我有一个 css 文件 其中包含一个带有 Zoom 1 的类 我在浏览器控制台上收到以下错误 该页面使用非标准的 缩放 属性 相反 您可以使用 calc 或将 transform 与 transform origin 0 0 一起使用 如何
  • $redis 全局变量与 ruby​​ on Rails

    我使用 redis 作为读取缓存 我创建了一个初始化程序 配置 初始化程序 redis rb redis Redis new host gt ENV REDIS HOST port gt ENV REDIS PORT 每当创建新工作人员时