zoukankan      html  css  js  c++  java
  • redis 验证消息队列也是写磁盘的

    # 下面的例子将会进行把数据写入磁盘的操作:
    # 900秒(15分钟)之后,且至少1次变更
    # 300秒(5分钟)之后,且至少10次变更
    # 60秒之后,且至少10000次变更
    #
    # 注意:你要想不写磁盘的话就把所有 "save" 设置注释掉就行了。
    
    save 900 1
    save 300 10
    save 60 10000
    
    
    redis01:/data01/redis# cat /etc/redis.conf | grep mem
    redis01:/data01/redis# cat /etc/redis.conf | grep save
    save 10 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    
    
    如果启用如上的快照(RDB),在一个存盘点之后,可能磁盘会坏掉或者权限问题,redis将依然能正常工作
    
    stop-writes-on-bgsave-error yes
    
    
    关于maxmemory的设置,如果redis的应用场景是作为db使用,那不要设置这个选项,因为db是不能容忍丢失数据的。  
    如果作为cache使用,则可以启用这个选项(其实既然有淘汰策略,那就是cache了。。。)  
      
    指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,    
    # 当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。    
    # Redis新的vm机制,会把Key存放内存,Value会存放在swap区
    
    /*****************测试:
    
    [elk@zjtest7-frontend config]$ cat logstash_agent.conf 
    input {
                  stdin {
               
                    type => "uat_test_scan" 
            } 
    
     
    }
    
    
    
    output {
         if   [type] == "uat_test_scan"{
           redis { 
                    host => "192.168.32.67" 
                    data_type => "list" 
                    key => "uat_test_scan:redis" 
                    port=>"6379" 
                    password => "1234567" 
            } 
           }  
       }
      
    
      
    
    [elk@zjtest7-frontend config]$ ../bin/logstash -f logstash_agent.conf 
    Settings: Default pipeline workers: 1
    Pipeline main started
    aaaaaaaaaaa
    
    127.0.0.1:6379> LLEN  "uat_test_scan:redis"
    (integer) 1
    
    此时队列深度为1
    
    取走消息:
    127.0.0.1:6379> BLPOP  "uat_test_scan:redis" 1
    1) "uat_test_scan:redis"
    2) "{"message":"aaaaaaaaaaa","@version":"1","@timestamp":"2016-09-23T05:01:16.766Z","type":"uat_test_scan","host":"0.0.0.0"}"
    127.0.0.1:6379> BLPOP  "uat_test_scan:redis" 2
    (nil)
    (2.04s)
    127.0.0.1:6379> LLEN  "uat_test_scan:redis"
    (integer) 0
    
    
    重启redis后 消息仍旧在
    127.0.0.1:6379> LLEN "uat_test_scan:redis"
    (integer) 1
    127.0.0.1:6379> BLPOP  "uat_test_scan:redis" 2
    1) "uat_test_scan:redis"
    2) "{"message":"3131313","@version":"1","@timestamp":"2016-09-23T05:15:30.601Z","type":"uat_test_scan","host":"0.0.0.0"}"
    
    
    # 注意:你要想不写磁盘的话就把所有 "save" 设置注释掉就行了。
    
    save 900 1
    save 300 10
    save 60 10000
    重启前:
    127.0.0.1:6379> auth 1234567
    OK
    127.0.0.1:6379> keys *
     1) "xacxedx00x05tx00!message_left:20160825:15950503897"
     2) "xacxedx00x05tx00x18contract_rebuild_qty:417"
     3) "uat_test_scan:redis"
     4) "xacxedx00x05tx00!message_left:20160630:18158464881"
     5) "xacxedx00x05tx00x18contract_rebuild_qty:422"
     6) "xacxedx00x05tx00Dapp_permission_cache:com.zjzc.common.vo.permission.AppPermissionBean"
     7) "logstash-demochan"
     8) "xacxedx00x05tx00!message_left:20160815:18957143393"
     9) "xacxedx00x05tx00x18contract_rebuild_qty:423"
    10) "aa"
    11) "xacxedx00x05tx00x18contract_rebuild_qty:427"
    127.0.0.1:6379> LLEN "uat_test_scan:redis"
    (integer) 1
    127.0.0.1:6379> 
    redis01:/etc/init.d# ps -ef | grep redis
    root     18595     1  0 13:36 ?        00:00:00 /usr/local/bin/redis-server *:6379         
    root     18604 17672  0 13:36 pts/0    00:00:00 grep redis
    redis01:/etc/init.d# kill -9 18595
    redis01:/etc/init.d# ps -ef | grep redis
    
    
    
    
    
    
    重启后:
    
    127.0.0.1:6379> keys *
     1) "xacxedx00x05tx00!message_left:20160630:18158464881"
     2) "xacxedx00x05tx00!message_left:20160825:15950503897"
     3) "xacxedx00x05tx00x18contract_rebuild_qty:423"
     4) "aa"
     5) "xacxedx00x05tx00Dapp_permission_cache:com.zjzc.common.vo.permission.AppPermissionBean"
     6) "xacxedx00x05tx00x18contract_rebuild_qty:427"
     7) "xacxedx00x05tx00x18contract_rebuild_qty:422"
     8) "xacxedx00x05tx00!message_left:20160815:18957143393"
     9) "xacxedx00x05tx00x18contract_rebuild_qty:417"
    10) "logstash-demochan"
    
    
    验证消息队列也是写磁盘的

  • 相关阅读:
    Map
    Enumeration输出
    iterator的基本用法
    Annotation整合工厂设计模式
    自定义Annotation
    Annotation
    动态代理设计模式
    静态代理设计模式
    自定义ClassLoader
    获取类的类对象的几种方式
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350224.html
Copyright © 2011-2022 走看看