Tag: redis

resque-scheduler在删除作业时失败

我使用了Github中的POC(队列丢失了,我添加了它: name = ‘send_emails’ config = {} config[:class] = ‘SendEmail’ config[:args] = ‘POC email subject’ config[:cron] = ‘* * * * * *’ config[:persist] = true config[:queue] = ‘new’ Resque.set_schedule(name, config) sleep(10) #Try to remove the job Resque.remove_schedule(name) 我收到以下错误: /var/lib/gems/1.9.1/gems/resque-scheduler-3.0.0/lib/resque/scheduler.rb:295:in `block in update_schedule’: undefined method `keys’ for nil:NilClass (NoMethodError) from /var/lib/gems/1.9.1/gems/resque-scheduler-3.0.0/lib/resque/scheduler.rb:292:in `loop’ from /var/lib/gems/1.9.1/gems/resque-scheduler-3.0.0/lib/resque/scheduler.rb:292:in `update_schedule’ […]

如何在redis中创建db(key_space)

我是一个redis beginer。 我正在学习如何在铁轨上使用ruby。 Redis支持多个db(最多30个?)。 正常访问我运行的客户端redis控制台 redis-cli 在终端。 并且默认它会自动进入db 0.如果它有很多db,那么可以使用命令select index来选择想要访问的db。 但我不知道如何创建一个db来使用。 你能帮助我吗。 非常感谢。!

有没有办法在ruby中重新定义 = +

我正在尝试编写一个简单的DSL(针对Redis),我想定义[] + =我自己 我有 def []=(key,val) @redis.zadd(@name,val,key) end 我想定义 def []+=(key,val) @redis.zincrby(@name,val,key) end 但我的理解是Ruby提供了“[] + =”运算符自动赋予[] = 有没有办法克服这种行为显然我不想要这个,因为我不能,比方说,在管道模式下运行它

如何在Rails应用程序中创建redis侦听器

我的方案如下: 我有一个Rails应用程序,它具有用于写下系统事件的活动记录模型。 这些系统事件可以来自rails应用程序或来自单独的Ruby应用程序。 ruby应用程序当前将其事件发布到Redis队列。 Rails应用程序中是否有一种方法可以启动Redis侦听器并订阅队列?

我如何保持has_many:在序列化为JSON并返回Rails 4.0.3时通过关系?

如何转换为JSON并返回并保持关系? 它认为当我取消包裹对象时它们不存在! irb(main):106:0* p = Post.last => # p.tags => #<ActiveRecord::Associations::CollectionProxy [# 2 #### !!!!!!!!!!!! irb(main):110:0> json = p.to_json => “{\”id\”:113,\”title\”:… }” irb(main):111:0> p2 = Post.new( JSON.parse(json) ) => # p2.tags => # irb(main):113:0> p2.tags.count => 0 #### !!!!!!!!!!!! 这是模型 class Post :destroy has_many :tags, :through => :taggings 有人建议,但不起作用 irb(main):206:0* Post.new.from_json p.to_json(include: :tags) ActiveRecord::AssociationTypeMismatch: Tag(#60747984) […]

与Ruby,Redis和Ohm的多对多关系

我正在尝试使用Ohm在Redis中创建多对多关系。 例如,我的Book和Author模型定义如下: class Book < Ohm::Model attribute :title set :authors, Author end class Author < Ohm::Model attribute :last_name attribute :first_name set :books, Book end 我希望能够做的是利用欧姆的索引function来执行以下搜索: require ‘test_helper’ class ManyToManyRelationshipTest < ActiveSupport::TestCase setup do @dave_thomas = FactoryGirl.build(:dave_thomas) @andy_hunt = FactoryGirl.build(:andy_hunt) @chad_fowler = FactoryGirl.build(:chad_fowler) @pick_axe = FactoryGirl.build(:pick_axe) @pick_axe.authors << @dave_thomas @pick_axe.authors << @andy_hunt @pick_axe.authors << @chad_fowler @thinking_and_learning […]

Redis:奇怪的协议/网络错误

我正在运行Redis并使用ezmobius的Redis gem [1]从Ruby连接。 我定期(大约每天一次)在我的Rails应用程序中得到一系列exception,这些exception由Redis返回奇怪的结果。 它们通常由例外引发: Redis::ProtocolError: Protocol error, got ‘3’ as initial reply byte 要么 Redis::ProtocolError: Protocol error, got ‘9’ as initial reply byte 或者有时候 Errno::EAGAIN: Resource temporarily unavailable – Timeout reading from the socket 它通常需要重新启动我的Rails服务器才能解决连接问题。 我正在运行Fedora Core 8,Rails 2.3.8,Redis gem 2.0.3。 我已经安装了system_timer gem。 有人知道如何阻止这些错误吗? [1] Redis gem

上帝配置文件来监控现有流程?

我使用God(Ruby gem)监视我的redis服务器。 但是,我现有的服务器可能已经有一个redis实例。 我怎样才能确定它是否监控已经启动的现有Redis服务器进程? 这是我的redis的上帝文件: rails_root = ENV[‘RAILS_ROOT’] redis_root = “/usr/local/bin” # Redis %w{6379}.each do |port| God.watch do |w| w.name = “redis” w.interval = 30.seconds w.start = “#{redis_root}/redis-server /etc/redis/redis.conf” w.stop = “#{redis_root}/redis-cli shutdown” w.restart = “#{w.stop} && #{w.start}” w.start_grace = 10.seconds w.restart_grace = 10.seconds w.log = File.join(rails_root, ‘log’, ‘redis.log’) w.keepalive(:memory_max => 5000.megabytes) w.start_if do |start| […]

我可以序列化ruby Digest :: SHA1实例对象吗?

G’day人, 我正在使用redis作为后备存储在ruby(sinatra)中重新实现现有的自定义文件上载服务。 客户端计算SHA1哈希并启动上载上传最大64K块直到完成 服务器将块附加到文件计算完整文件的SHA1哈希以validation正确的接收 现在,我希望做的是在每个块上使用ruby(1.9.3)Digest :: SHA1 < 1GB]。 不幸的是Digest :: SHA1和Marshal.dump不兼容 1.9.3p125 :001 > require ‘digest’ => true 1.9.3p125 :002 > $digest = Digest::SHA1.new => # 1.9.3p125 :003 > marshalled_digest = Marshal.dump($digest) TypeError: no _dump_data is defined for class Digest::SHA1 from (irb):3:in `dump’ from (irb):3 from /Users/rhodry/.rvm/rubies/ruby-1.9.3-p125/bin/irb:16:in `’ 1.9.3p125 :004 > 有没有人对如何: 获取对底层内存的访问权限(在C中操作)并存储/恢复这样的对象? 获得一个允许类似用例的替代实现? […]

在Redis中存储MessagePacked哈希

我在Redis中存储MessagePacked哈希时遇到问题。 我在下面粘贴了一个测试用例。 从Redis中提取打包数据并解压缩时,哈希略有损坏。 这似乎发生在哈希值超出一定长度时,尽管我不能肯定地说。 我使用的是Redis 2.4.17(默认配置),Ruby 1.9.3p194,MessagePack 0.4.7和Redis gem 3.0.2。 使用节点会发生同样的问题,所以我假设问题出在MessagePack或Redis中。 有任何想法吗? require ‘redis’ require ‘msgpack’ class Test def self.run(url) redis = Redis.new data = {‘number’ => 13498935756, ‘hash’ => {‘url’ => url}} redis.set(‘my_key’, MessagePack.pack(data)) result = MessagePack.unpack(redis.get(‘my_key’)) puts result puts result[‘hash’][‘url’] == data[‘hash’][‘url’] end end Test.run(‘http://fake.example.com’) # works => {“number”=>13498935756, “hash”=>{“url”=>”http://fake.example.com”}} => true Test.run(‘http://fakeurl.example.com’) […]