来自——redis实战学习笔记
使用redis存储业务信息是一部分,还可以控制并监视系统在运行时一举一动.比如日志和计数器来收集系统当前状态信息,当然这些信息也可以直接存在常用的关系型数据库中,但是它会影响业务的性能
记录日志
我们平时的日志一般都是直接用的log4j,选择存储的是文本文件, 但是服务一般都是集群,所以日志是分散在各个web服务器上的, 想搜集有效的日志信息,非常麻烦,如果现在说,直接存在数据库中,这样可以解决文件分散的情况,但是会对业务做成影响.性能方面上. 这时候可以考虑redis.可以改一下log4j, 直接将数据保存到redis中.
最新日志
- 以列表形式存储到redis中,看这个列表,可以随时了解最新出现的日志是什么样子的
redis的五种数据类型—list类型
list仅支持的是对数量进行筛选,比如获取近100条日志记录,但是想对于获取近30天的数据,就无能为力了.这时候可以考虑使用sorted set实现按天获取,但是如果日志量不断增加, sorted set的额外开销还是比较大的,这时候可以使用两层list实现
* 记录日志时,把日志按天归档到不同 list中
* 比如今天的数据归档到key为20180703的list中,然后再额外设定一个用于保存归档时间的list.形式类似这样的
这样就使用lrange命令,就可以从arhive获取近30天的归档了, 然后再去相应的list访问具体数据.相对要高效了.
常用日志
上面讲的是记录的最新日志,但是仅仅有它,知识适用于记录当前发送的事情,并不知道哪些消息是重要的.想要看特定消息出现的频率,可以采用这样的存储设计
redis的五种数据类型—hash类型
根据日志级别,查看发生的详情
list
2018-7-3 10:59:24 message-2
计数器
通过计数器,知道了页面的点击量,可以判断是否对页面进行缓存,而下面,我们可以通过记录聚合统计数据来更准确地判断哪些地方需要优化?
存储统计数据
某个页面访问时间的统计示例: