# 下面的例子将会进行把数据写入磁盘的操作: # 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" 验证消息队列也是写磁盘的