Redis实战学习笔记二
使用Redis构建支持程序案例一: 使用Redis实现日志的记录需求: 在构建应用程序和服务的过程中,对正在运行的系统的相关信息进行挖掘变得越来越重要。这都依赖于日志。
分析: 许多日志的记录的方式都是将日志记录到文件中去,然后随着时间的流逝新建日志文件(因为日志文件大大小不可能无限的增长),因为每个服务都有相应的日志记录,并且每种服务的日志轮换机制也是不同的,这就会缺少了一种将这些日志聚合的方案。还有一种日志记录方式是利用syslog服务来进行日志的记录。syslog服务接收各个服务的日志信息,并路由到不同的磁盘上,它还负责日志的轮换和删除工作。它要比直接写文件方便的多。
我们也可以利用Redis来实现日志的记录。
实现方式:
12345678910111213141516171819202122SEVERITY={ # 设置一个字典,将日志的安全级别映射为字符串 loggin.DEBUG:'debug', loggin.INFO:'info', loggin.WARNING:'warning', loggin.ERROR:'error', loggin.CRITICAL:'critical'}SERVERITY.update((name,name) for name in SERVERITY.values())def log_recent(conn,name,message,severity=loggin.INFO,pipe=None): # 将日志的安全级别映射为简单的字符串 severity=str(SEVERITY.get(severity,severity)).lower() # 创建负责存储消息的键 destination='recent:%s:%s'%(name,severity) # 在消息中添加当前时间 message=time.asctime()+' '+message # 使用流水线通信方式 pipe=pipe or conn.pipeline() pipe=lpush(destination,message) # 对日志列表进行修剪,只保留100条消息 pipe.ltrim(destination,0,99) # 执行两个命令 pipe.execute()