1. 程式人生 > >Redis使用sortedset緩存IP段數據

Redis使用sortedset緩存IP段數據

數據庫查詢 地方 col sort mage span from image 數據

我們原來的業務中,有很多地方需要解析用戶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段數據