• Redis基本及Resque基本


    Redis

    redis是类似于memcached的高性能键值缓存工具,但它支持更多的值类型、功能更加丰富,且可以将存储内容定时持久化到磁盘中,是NoSQL家庭中出色的一员

    安装

    wget https://github.com/antirez/redis/tarball/2.2.0-rc2
    tar -xzvf antirez-redis-2.2.0-rc2-0-g0540df2.tar.gz
    cd antirez-redis-b703b5d
    make
    sudo make install

    客户端

    redis-cli

    调试

    运行客户端后,输入命令

    monitor

    注意expire

    redis的expire命令有限制,执行此命令后,对key进行的任何操作都将先对key进行清空操作,详见 http://redis.io/topics/expire
    2.1.3以上版本不存在这个限制,但未正式发布稳定版,2.1正式发布时会更改为2.2版本

    具体表现如下:

    redis> set a 100
    OK
    redis> expire a 600
    (integer) 1
    redis> incr a
    (integer) 1
    redis> get a
    “1” #正常来说,应返回101,因为还key还没有过期

    如果对这个限制敏感,可以尝试 2.2.0rc2版本
    make 之后最好再执行下 make test 测试是否正常,我试过,确实不再存在上面说的奇怪表现

    redis-rb

    redis支持多语言实现的客户端访问,redis-rb是redis的客户端之一,基于ruby语言实现。
    redis-rb中的方法名称与redis的一致

    Resque

    resque是基于redis的后台任务组件,能把任何类或模块作为任务在后台执行,且自带前台管理功能,方便查看执行情况。

    使用

    1. 编写任务

    class WorkerClass
      @queue = "demo"
      def self.perform(args)
        sleep 3 
        puts "Doing something complex with  #{args}"
      end
    end

    2. 进入任务队列

    require "resque"
    Resque.enqueue(WorkerClass, args)

    3. 运行任务

    与rails3整合

    0. 配置redis
    新增 config/redis.yml 文件,加入以下内容

    defaults: &defaults
      host: localhost
      port: 6379
    
    development:
      <<: *defaults
    
    test:
      <<: *defaults
    
    staging:
      <<: *defaults
    
    production:
      <<: *defaults
    

    1. 加载resque

    echo "require 'resque'" > config/initializers/load_resque.rb
    config = YAML::load(File.open("#{Rails.root}/config/redis.yml"))[Rails.env]
    Resque.redis = Redis.new(:host => config['host'], :port => config['port'])

    2. 由于worker类都放在app/jobs,因此需要指定rails加载此目录
    修改 config/application.rb,加入以下内容

    config.autoload_paths += %W(#{config.root}/app/jobs)

    3. 加入rake任务
    修改 @RakeFile@,加入以下内容

    require ‘resque/tasks’
    task “resque:setup” => :environment

    第二句指明运行 resque:setup 前先初始化rails环境

    运行resque后台任务

    QUEUE=* rake resque:work

    查看任务执行情况

    #运行resque前台管理服务器
    resque-web -p 8282

    打开浏览器,访问 http://0.0.0.0:8282
    前台可以查看失败的worker及其日志,可以手动执行retry操作

    定时任务

    如需定时执行任务,可以使用 resque-scheduler

    测试

    在测试的时候我们不需要测试过程与resque是异步的,否则resque执行的时候数据可能已经被清空了,使用resque_spec插件可以让resque worker立即执行

    详情查看 https://github.com/leshill/resque_spec

  • 相关阅读:
    Java序列化的机制和原理
    范型练习
    Java范型
    Hadoop之HelloWorld
    IEnumerable和IEnumerator
    浅谈静态变量和类
    MVC中的Startup.Auth.cs、BundleConfig.cs、FilterConfig.cs和RouteConfig.cs
    "ApplicationDbContext"(泛指之类的数据库上下文模型)上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库。
    C#.NET的微信功能开发学习
    本地Fiddler传递XML格式数据,调试微信功能。
  • 原文地址:https://www.cnblogs.com/rywx/p/2519615.html
Copyright © 2020-2023  润新知