小编Pix*_*xou的帖子

完全驱逐密钥时Redis的速度有多慢?(LRU算法)

我在Java应用程序中使用Redis,我正在读取日志文件,在Redis中为每个日志存储/检索一些信息.密钥是我的日志文件中的IP地址,这意味着它们始终是新闻密钥,即使它们经常出现.

在某些时候,Redis达到了它的最大大小(在我的情况下为3gb),并开始驱逐一些键.我使用"allkeys-lru"设置,因为我想保留最年轻的密钥.

然后整个应用程序放慢了很多,比开始时长5倍.所以我有三个问题:

  • 如此剧烈的放缓(5倍以上)是正常的吗?有人经历过这样的放缓吗?如果没有,我可能在我的代码中有另一个问题(因为当Redis达到极限时减速就会出现,这是不可能的)
  • 我可以改进我的配置吗?我试图改变maxmemory-samples设置但没有太大的成功
  • 我应该考虑替代我的特定问题吗?是否有内存数据库可以处理具有更好性能的驱逐键?我可能会考虑一个纯Java对象(HashMap ...),即使它看起来不像一个好的设计.

编辑1:我们在Redis中使用2个DB

编辑2:我们使用redis 2.2.12(ubuntu 12.04 LTS).进一步的调查解释了这个问题:我们在redis中使用db0和db1.db1的使用远小于db0,键完全不同.当Redis达到max-memory(并且LRU algo开始驱逐密钥)时,redis会删除几乎所有db1密钥,这会大大减慢所有调用.这是一种奇怪的行为,可能不常见,可能与我们的应用程序有关.我们通过转移到db1中加载的密钥的另一个(更好的)内存机制来解决问题.

谢谢 !

caching redis

8
推荐指数
1
解决办法
3403
查看次数

将Nginx日志放入Kafka的最佳选择?

我们正在处理来自我们在HDFS上添加的多个服务器的大型日志文件.我们目前有一个很好的批处理解决方案(主要是每天移动和编写文件),并希望用Kafka实现实时解决方案.

基本上,我们需要将来自Nginx的日志放入Kafka,然后写一个消费者在HDFS上写(这可以通过HDFS消费者来完成https://github.com/kafka-dev/kafka/tree/master/contrib/ hadoop-consumer).

您建议将日志移至Kafka的方法是什么?

  • 我们可以编写一个nginx模块,但并不是那么简单.这个https://github.com/DemandCube/Sparkngin可以提供一些线索.
  • 读取日志文件(尾...)看起来是个坏主意,因为有一个无用的写操作.在推送到Kafka之前,Logstash还需要写/读操作,这似乎是不必要的.

还有其他想法吗?

nginx apache-kafka

6
推荐指数
1
解决办法
5783
查看次数

标签 统计

apache-kafka ×1

caching ×1

nginx ×1

redis ×1