Можно ли сделать диапазон IP ключей в Redis - PullRequest
0 голосов
/ 31 мая 2019

Возможно ли, что диапазон IP может быть установлен как ключ в Redis. Мое требование заключается в том, что я должен получить записи на основе IP-адреса. Теперь этот IP-адрес может быть start_ip или end_ip или любым ip, попадающим между ними. Я должен сделать для IP в качестве ключа. Может ли это быть достигнуто

1 Ответ

0 голосов
/ 31 мая 2019

Если вам известен начальный и конечный индексы ваших IP-адресов, вы можете сделать это

var redis = require('redis');
var client = redis.createClient(port, host);
client.on('connect', function() {
    console.log('Redis client connected');
    //insert your code for storing your csv data in an array
    var csv_array = ['127.0.0.1','127.0.0.2','127.0.0.3'];//store your IP in this way
    //for storing in redis
    for(var i=0,index=1; i<csv_array.length; i++,index++){
        client.zadd(['ipaddress',index,csv_array[i]],function(err,res){
            console.log("added"); 
        });
    }
    //for retrieving specify starting, ending index
    client.zrevrangebyscore(['ipaddress',startingIndex,endingIndex],function(err,res){
        console.log(res);
    });
});

Если вы не знаете значения индекса, просто замените извлекаемую часть следующим:

var IP_array = [];
var starting, ending;
client.zrevrangebyscore(['ipaddress','+inf','-inf'],function(err,res){
    IP_array.push(res);
});
starting = IP_array.indexOf('127.0.0.1');//staring IP range
ending = IP_array.indexOf('129.32.21.180');// ending IP range
console.log(IP_array.slice(starting, ending));
...