《Redis实战》笔记——第五章

本章主要讲述了redis的几个应用场景。

使用Redis记录日志

在linux中有两种记录日志的方式,一种是将其记录到文件中,一个又一个的添加日志行以及文件,包括redis在内的软件都使用这种方式。另一种是使用syslog服务,除了存储日志,syslog还负责日志的轮换和删除,syslog的转发功能可以将不同日志存到多个文件中。

 

使用redis的lpush命令将日志推入列表,使用lrange获取。

SEVERITY = {                       
    logging.DEBUG: 'debug',        
    logging.INFO: 'info',          
    logging.WARNING: 'warning',    
    logging.ERROR: 'error',        
    logging.CRITICAL: 'critical',  
}#设置日志等级      


def log_recent(conn, name, message, severity=logging.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)     

    #lpush recent:app:info 2018/01/01message       
    pipe.ltrim(destination, 0, 99)             

    #修剪日志,保留100条
    pipe.execute()    

    #执行             

 查看常见日志,使用有序集合Zset,对于出现的日志行进行Zincrby自增操作。

计数器和统计数据

使用一个散列来存储每隔5秒的访问量Hset count:5hit 2018/01/01/15/16/15 5

使用redis还可以统计页面的访问时间,统计其最小值,最大值,样本数量,总和,平均值等信息。

当采取对每隔小时数据进行归档时,可以使用Zunionstore进行min,max等信息的聚合。

查找IP所属城市和国家

导入IP地址段对应城市数据,以及城市和国家名等数据。

IP转数字:

def ip_to_score(ip_address):
    score = 0
    for v in ip_address.split('.'):
        score = score * 256 + int(v, 10)
    return score

转为整数之后即可创建IP和地址之间映射了

 

服务的发现与配置

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值