如何从Redis服务器中清除超过30天的数据

如何从Redis服务器中清除超过30天的数据,redis,logstash,kibana,Redis,Logstash,Kibana,我正在使用Logstash、Redis DB、ElasticSearch和Kibana 3作为我的centalize日志服务器。它工作得很好,我可以在Kibana看到日志。现在我只想在ElasticSearch和Redis服务器上保留30天的日志。是否可以从Redis中清除数据 我正在使用以下配置 indexer.conf input { redis { host => "127.0.0.1" port => 6379 type => "redis-in

我正在使用Logstash、Redis DB、ElasticSearch和Kibana 3作为我的centalize日志服务器。它工作得很好,我可以在Kibana看到日志。现在我只想在ElasticSearch和Redis服务器上保留30天的日志。是否可以从Redis中清除数据

我正在使用以下配置

indexer.conf

input {
redis {
    host => "127.0.0.1"
    port => 6379
    type => "redis-input"
    data_type => "list"
    key => "logstash"
    format => "json_event"
}
}
output {
 stdout { debug => true debug_format => "json"}
 elasticsearch {
    host => "127.0.0.1"
 }
}
shipper.conf

input {
  file {
  type => "nginx_access"
  path => ["/var/log/nginx/**"]
  exclude => ["*.gz", "error.*"]
  discover_interval => 10
 }
}

filter {
  grok {
  type => nginx_access
  pattern => "%{COMBINEDAPACHELOG}"
 }
}

output {
  stdout { debug => true debug_format => "json"}
  redis { host => "127.0.0.1" data_type => "list" key => "logstash" }
}

根据此配置,发货人文件将使用logstash键向Redis DB发送数据。从redis db文档中,我知道我们可以使用expire命令为任何键设置TTL来清除它们。但是当我在redis db keys logstash或keys*中搜索密钥logstash时,我没有得到任何结果。如果我的问题无法理解,请告诉我。提前谢谢

Redis是一个键:值存储。根据定义,键是唯一的。因此,如果要存储多个日志,则需要为每个日志添加一个新条目,其中包含一个新键和关联值

因此,在我看来,您在这里有一个基本缺陷,因为您总是对所有日志使用相同的密钥。尝试为每个日志使用不同的密钥,但不确定如何执行此操作


然后将TTL设置为30天。

感谢您的回答,并为我的迟回复感到抱歉。为什么我无法在redis cli中搜索日志存储的密钥?即使keys*也没有给我答案logstash。