Redis使用sortedset缓存IP段数据

Posted focus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis使用sortedset缓存IP段数据相关的知识,希望对你有一定的参考价值。

    我们原来的业务中,有很多地方需要解析用户IP的信息,刚开始是通过新浪、百度这些第三方的接口来解析IP信息,后来发现调用这些接口频繁时会被禁用一小段时间。不得已只得将数据存到我们的数据库中,表结构大致如下图,大家一看应该就明白那些字段的意思。

 

      查询得SQL大致是:SELECT * FROM IPInfo WHERE IPIntStart<=IP地址转int AND IPIntEnd>IP地址转int,共45万条数据,加上索引查询效率还可以,能满足日常业务查询。

      最近有一个数据清洗的任务,需要在日志入库的时候就要解析其IP信息并保存,这个时候使用数据库查询效率就太低了,我们准备将这些数据存到redis中。由于使用时必须进行范围查询,所以这里的数据结构只能用sortedset了,使用IPIntStart作为score,而查询时只需要查出IP小于等于sortedset中score的第一条数据即可。

       redis查询命令如下:       

ZREVRANGEBYSCORE   IpSet IP地址转int值 0 LIMIT 0 1

      

以上是关于Redis使用sortedset缓存IP段数据的主要内容,如果未能解决你的问题,请参考以下文章

Python操作Redis缓存数据库

使用Jedis操作redis 缓存

Redis系列:数据结构SortedSet跳跃表中基本操作命令和源码解析

使用Jedis操作redis 缓存

Redis缓存数据库详解

缓存数据的同步