问题标签 [redis-rails]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 将 Paperclip 与 rails-redis 一起使用时出现“IOError - 关闭的流”
我正在从网站下载一些图像并使用 Paperclip 将这些图像上传到 S3 存储桶。加载图像后,我将一个实体存储到数据库中并返回它。这包含在Rails.cache.fetch
缓存响应的调用中。
它是这样的。
但是,图像将开始下载,最终我将获得IOError - closed stream:
以下堆栈。
谁能告诉我为什么会出现此错误以及如何避免它?
ruby-on-rails - Ruby On Rails,Redis::CommandError:“set”命令的参数数量错误
为什么这段代码
返回以下异常?
我用这些宝石
- redis (3.2.0)
- redis-rails (4.0.0)
ruby-on-rails - 使用 capistrano 部署时 Hiredis 失败
当尝试使用ruby 2.2.0和rails 4.2.0和 gems redis v3.0.1和hiredis v0.4.5任务部署应用程序时,负责与redis服务器交互的任务失败并出现以下错误:
有没有人面临同样的问题?
ruby-on-rails - Rails、Redis 和 Sentinel
我有一个由 Sentinel 监控的 4 个节点、1 个主节点和 3 个从节点的 Redis 集群。
现在在 Rails 中,我需要连接到这个集群,从最近的副本读取,并写入主服务器,就像我使用 MongoDB 所做的一样。
使用redis-rails
gem,如何配置cache_store
来指定哨兵而不是单个节点?
ruby-on-rails - Vagrant+Ansible+Redis - 使用不同服务器时获取 127.0.0.1:6379 (Errno::ECONNREFUSED)
希望一切都好。我有以下问题,希望你能帮助我:
我正在尝试使用 vagrant 和 ansible 部署我的 rails 4 应用程序。该应用程序的一部分是一个 redis 服务器。我已经设置并运行了这个192.168.33.2:6379
,我的 rails 应用程序正在运行192.168.33.4
并在 ubuntu + nginx 上运行。
即使我已经使用 redis-rb (应用程序中的宝石)设置了 redis,并使用从 YAML 文件启动的应用程序全局变量在我的一个初始化程序中初始化了一个 redis 对象:
APP_CONFIG[:redis_host] = 192.168.33.2, APP_CONFIG[:redis_port] = 6379
bind 0.0.0.0
在我的 redis.conf 文件中,当我在浏览器中访问 rails 应用程序时,仍然收到错误Error connected to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED) 。
当vagrant redis-cli -h 192.168.33.2 ping
ssh-ed into192.168.33.4
返回时运行pong
。所以可以建立连接,我可以访问redis服务器/查看来自192.168.33.4
...的密钥
netstat -l
在终端中运行也给了我:tcp 00 *:6379 *:* LISTEN
有谁知道我该如何解决这个问题?
提前致谢!
更新
注意:我使用了redis-rails gem,并在我的应用程序中将它用于 session_store 和 cache_store。(当不使用 redis 时它可以工作)。以这种方式配置:
有迹可循:
ruby - Redis 搜索带值的键
如何在 Ruby 中搜索具有值的键?例如,获取值为“somevalue”的所有 KEYS。
我的钥匙是
"xyz" => {:status=> "已连接", :topic=> "ABC"}
"PQR" => {:status=> "已连接", :topic=> "ABC"}
现在我需要找到主题为“ABC”的所有键
ruby-on-rails - Websocket-rails 和 redis-rb 不会在故障转移时恢复 Pub/Sub 通道
我在同步集群配置中使用 websocket-rails:
- 2 个 Rails 实例(前端)
- 2个Redis实例,一主一从(后端)
- 所有节点上的 4 个 Sentinel 实例
Websocket-rails 通过向 Sentinel 查询当前 master 成功地通过 redis-rb 创建了一个连接。
还成功创建了一个 Redis Pub / Sub Channel 以在两个前端之间同步 websocket 事件:
故障转移时会出现问题。停止主 redis 节点后,哨兵成功处理了故障转移。几秒钟后,他们投票选出了一位新主人。
即使是前端客户端也可以在故障转移后成功连接到新的 redis 主服务器。我可以成功地从 rails 触发 Websocket Rails 通道,例如:
但是,与其他节点的同步失败。这是因为 websocket redis Pub/Sub 通道只存在于旧的 master 上,不存在于新的 master 上。
当然,当 rails 服务器重新启动时,websocket-rails 会重新创建通道。但这在我们的高可用环境中不是一个选项。
我想知道这是否已在类似的环境中解决。我一直在检查 websocket-rails 和 redis-rb 的文档,但我没有发现任何有用的东西。在我看来,redis 的行为是正确的,因为渠道无法复制。
我认为客户端应该在故障转移后重新创建通道,但我什至不确定这是否应该由 websocket-rails 或底层 redis-rb(甚至底层驱动程序)实现?
使用的版本:
- 雷迪斯:3.2
- websocket-rails:0.7.0
- redis-rb:3.3.0
任何帮助表示赞赏。
附件 1:websocket rails 配置:
ruby - 如何为 Redis-As-Rails-Cache(使用 Redis 作为 Rails 缓存)Rails 4.1 实现连接池?
如何将连接池添加到我的 Redis 设置?
出于某种原因,我似乎无法找到任何有关此的信息。我正在使用 redis (3.2.0) 设置如下:(您可以假设 resque_uri 和 cache_uri 在此 c 之前已被解析)
对于resque:
在初始化序列的后面,我们做
我们有第二个 Redis 实例,它具有不同的内存、连接限制和驱逐策略,用于 Rails 缓存
更新 2017-02-16@20-17EST:我正在运行两个 redis 实例,一个用于 resque (1.25.2),另一个用于使用 redis-rails (5.0.1) 的缓存层。我已经更新了上面的设置示例。我怀疑初始化中配置错误或存在基本设置不匹配。
更新 2017-02-16@21-37EST:
environments/development.rb
有
config.cache_store = :redis_store, 'redis://localhost:6379/1/cache_store'
ruby-on-rails - redis-rails 和 connection_pool 的问题
如何初始化我的 redis_store 以进行连接池。我想添加池属性 { pool_size: 10, pool_timeout: 10 } 我添加了 connection_pool gem
它在服务器启动时出错。如果我添加如下内容;
ruby-on-rails - 使用 redis-rails 作为会话存储是否安全?
当用作会话存储时,我注意到 redis-rails 将会话 ID 以未加密格式保存在 cookie 中。会话 ID 不应该被视为安全信息,并且不应该暴露在未加密的 cookie 中以阻止会话劫持尝试吗?