使用redis实现日志功能,支持按天获取日志

通常可使用redis的list数据结构形成日志。但list仅支持对数量进行筛选。如获取近100条日志记录。无法实现获取近30天数据。

当然可以使用sorted set实现按天获取,但当日志数量不断增加时,sorted set的额外开销还是比较大的。为了高效满足需求,可使用两层list实现。

解决方法:在记录日志时,可将日志按天归档在不同的list当中,如2015年12月1日的数据归档在在key为20151201的list中。其中20151201为归档时间。然后额外设定一个用于保存归档时间的list。如key为archive,value为[20151202, 20151201],这样仅需要用lrange命令就可以从archive获取到近30天归档,然后去相应的list去访问具体数据。非常高效

下图为写日志的流程图

《使用redis实现日志功能,支持按天获取日志》 屏幕快照 2016-01-30 下午1.47.25.png

    原文作者:dugangabc
    原文地址: https://www.jianshu.com/p/c60cb5177aba
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞