Tag: redis

brew install redis(osx 10.7)

我尝试在bash上通过自制程序在osx 10.7上安装Redis,我收到以下错误: ==> Downloading http://redis.googlecode.com/files/redis-2.6.9.tar.gz Already downloaded: /Library/Caches/Homebrew/redis-2.6.9.tar.gz ==> make -C /private/tmp/redis-wQAX/redis-2.6.9/src CC=cc Error: Permission denied – /usr/local/var/db 我没有安装Redis。 $ ps -aux | grep redis ps: No user named ‘x’ 我找不到解决方案,也不知道该问谁! 如果您有解决方法或解决方案/建议,请告诉我。 谢谢!

动作电缆在本地订阅,但不在heroku上订阅

我一直在尝试在网上找到的所有东西,但没有任何工作。 希望一些新鲜的眼睛会看到这个问题。 这是我第一次使用ActionCable,一切都在本地很好用,但是在推送到heroku时。 我的日志不显示任何actioncable订阅,如我的开发服务器: [ActionCable] [email@email.com] MsgsChannel is streaming from msg_channel_34 当发送消息时,我确实看到[ActionCable] Broadcasting to msg_channel_34:但它们没有附加,我猜这意味着received方法没有被访问/调用? 我注意到在heroku的日志上它说Listening on tcp://0.0.0.0:5000在哪里作为开发人员在localhost:3000监听。 我应该以某种方式指向我的heroku app吗? 以下是相关的配置文件: Procfile: web: bundle exec puma -p 5000 ./config.ru actioncable: bundle exec puma -p 28080 cable/config.ru redis: redis-server ***感谢下面的评论,我也在努力。 仍然没有工作,但我可以看到它正在收听的端口正在发生变化,让我相信它与配置有关? : web: bundle exec puma -p $PORT ./config.ru actioncable: bundle exec puma -p $PORT cable/config.ru […]

Rails Puma用完了Redis连接

我已经在SO上查看了其他类似的问题但是不能很好地将事情拼凑在一起。 我有一个Rails应用程序(在Heroku上),它使用Puma同时具有多个进程和多个线程。 我的应用程序还使用Redis作为辅助数据存储(除了SQL数据库),直接查询Redis(通过connection_pool gem)。 这是我的Puma配置文件: workers Integer(ENV[“WEB_CONCURRENCY”] || 4) threads_count = Integer(ENV[“MAX_THREADS”] || 5) threads threads_count, threads_count preload_app! rackup DefaultRackup port ENV[“PORT”] || 3000 environment ENV[“RACK_ENV”] || “development” on_worker_boot do # Worker specific setup for Rails 4.1+ ActiveRecord::Base.establish_connection redis_connections_per_process = Integer(ENV[“REDIS_CONNS_PER_PROCESS”] || 5) $redis = ConnectionPool.new(size: redis_connections_per_process) do Redis.new(url: ENV[“REDIS_URL”] || “redis://localhost:6379/0”) end end 我的Redis实例的连接限制为20,我发现自己经常超过这个限制,尽管应该是(据我所知)每个进程只有5个连接分布在4个工作进程中。 […]

Sidekiq没有找到Rails Active Job的记录

在模型中创建用户之后,作业将排队等待 user.rb after_create_commit :profile_photo_job def profile_photo_job message = “Add a profile photo” ReminderJob.set(wait: 1800).perform_later(self.id.to_s, message) end reminder_job.rb class ReminderJob < ApplicationJob queue_as :default def perform(user_id, message) if user_id user = User.find(user_id) end ##sending message notification here end end 但是,它经常在我的sidekiq控制台中抛出以下错误 ActiveRecord :: RecordNotFound:找不到’id’= 7749的用户处理器:User-MacBook-Pro.local:***** 生产中发生此错误。

即使从生产模式下的服务器运行,Resque也会写入开发数据库

当我在生产中启动我的应用程序以在推出到服务器之前测试它时,我注意到我的一个数据库操作由Resque.enqueue(worker)调用,在WRONG数据库上执行! development.sqlite3而不是production.sqlite3。 我正在运行服务器和resque零配置文件。 必须有一些方法可以在正确的环境中运行redis或resque。 defaults: &defaults host: localhost port: 6379 development: <<: *defaults test: <<: *defaults staging: <<: *defaults production: <<: *defaults 我找到的这个redis配置文件可以保存密钥,但redis不喜欢它,说 *** FATAL CONFIG FILE ERROR *** Reading the configuration file, at line 1 >>> ‘defaults: &defaults’ Bad directive or wrong number of arguments

在部署到Heroku时,为什么Travis无法连接使用Redis cache_store?

我在我的Rails应用程序中使用Redis缓存: config.cache_store = :redis_store, redis_url 当我将我的Rails应用程序直接推送到Heroku时,它已成功部署。 使用Travis时,Heroku部署步骤失败,因为资产预编译尝试连接到Redis。 Running: rake assets:precompile rake aborted! ArgumentError: invalid uri scheme ” /tmp/build_7c5f167bf750cb2986dbb9c3510ea11e/vendor/bundle/ruby/2.1.0/gems/redis-3.2.0/lib/redis/client.rb:390:in `_parse_options’ 我尝试了各种各样的事情:使用rake任务覆盖RedisStore方法,将cache_store实例化移动到初始化阶段,使用Docker而不是sudo,更改Heroku构建策略和其他travis.yml配置等。 我不想在本地预编译,我宁愿不改变缓存解决方案。 在雪松-14堆栈上运行的许多其他应用程序使用非常类似的设置,因此问题似乎有点特殊。 有关如何解决此Travis + Heroku部署问题的任何建议吗?

当我们将redis与rails / ruby​​一起使用时,Nest和redis-namespace gems之间的平均差异是什么

有两个流行的gem用于向redis添加命名空间: redis-namespace和Nest ,如果我真的理解我们需要命名空间,当我们使用相同的redis实例服务器和不同的项目时,如果我是对的,这意味着:如果我有项目 – 1和项目-2以及这些项目中的每一个都使用我的本地redis存储,那么这两个项目可能有一个用户密钥代表我的应用程序的用户,所以为了防止冲突,我需要命名用户密钥与类似项目的名称: 对于项目-1: project-1:users 对于项目-1 project-2:users 如果我上面的理解没有错,我们可以使用redis-namespace gem来解决这个问题: r = Redis::Namespace.new(:project-1, :redis => @r) r[‘users’][‘joe’][’email’] = ‘joe@example.com’ 对于第二个项目(项目-2),只需要在实例化新的Redis :: Namespace时将project-1更改为project-2: r = Redis::Namespace.new(:project-2, :redis => @r) r[‘users’][‘joe’][’email’] = ‘joe@example.com’ 请告诉我,如果我在上述所有解释中没有错! 我们现在可以继续使用Nest: 从文档我们有这个例子: Nest通过提供已连接到Redis的可链接命名空间来帮助您生成密钥: >> event = Nest.new(“event”) >> event[3][:attendees].sadd(“Albert”) >> event[3][:attendees].smembers => [“Albert”] 但是在这里我不确定Nest是否帮助我们做与redis-namespace相同的事情或帮助我们生成可链接的密钥??? redis-namespace和Nest之间究竟有什么区别?

将文件传递给活动作业/后台作业

我通过标准文件输入在请求参数中收到一个文件 def create file = params[:file] upload = Upload.create(file: file, filename: “img.png”) end 但是,对于大型上传,我想在后台工作中执行此操作。 像Sidekiq或Resque这样的流行后台作业选项依赖于Redis来存储参数,所以我不能只通过redis传递文件对象。 我可以使用Tempfile ,但在某些平台上,例如Heroku,本地存储不可靠。 我有什么选择让它在“任何”平台上可靠?

redis_store会话未到期

我正在使用gem redis商店进行我的rails会话。 我的config / initializers / session_store.rb MYAPP::Application.config.session_store :redis_store, key: ‘_my_app_session’, :servers =>{ :host => ENV[“REDIS_HOST”], :port => ENV[“REDIS_PORT”], :namespace => “MYAPP::WEB”, :expires_in => 20.minutes } 即使我的session_store.rb中有expires_in 20.minutes,我的会话也没有在我的redis服务器中清除。 我应该做任何额外的配置吗?

使用rails缓存时使用rails处理redis maxmemory情况

当redis达到’maxmemory’状态时,它会让客户端读取,但不会写入。 这当然会导致致命的错误……有没有办法让Rails处理缓存读取或写入错误,所以如果缓存中出现不好的事情(可用性,读取,写入等),它将继续作为如果缓存被设置为“关闭”?