У меня есть Zset в Redis, как показано ниже.
Type:zset
TTL:does not expire [E]
Encoding:ziplistScore Value
1 0358899056725255
13 {"voltage_level":"06","signal_strength":"02"}
У меня есть одно устройство с динамическим IP на каждом соединении с уникальным значением (0358899056725255 здесь). Каждый раз, когда устройство перезагружается, его ip будет изменен, в результате мне нужно сделать новый zset. Я хочу удалить все старые IP мусора для этого конкретного значения.
Что я трэйд
Redis::zadd($conn->remoteAddress, '01', $imei); //to add new ip
//scan all ip and check one by one
@start loop
$val=Redis::zrangebyscore($ip[$i], 01, 01);
if($val=='0358899056725255')
Redis::del($conn->remoteAddress);
@end loop
У меня более 10000 устройств, и я не хочу повторять, есть ли простые решения
я понял
Keep the expiry date on redis, which will be auto expired
Redis::zadd($conn->remoteAddress, '01', $imei); //to add new ip
Redis::expire($conn->remoteAddress, (60*60*24*30));
Других решений пока нет …