sql >> Databáze >  >> NoSQL >> Redis

ukládat rozsahy IP v Redis

Záleží, zda se domníváte, že se rozsahy vašich IP adres mohou překrývat nebo ne. Pokud ne, řešení je docela jednoduché:

  • k ukládání dat poskytovatelů použít sbírku hodnot hash
  • použijte zset k indexování maximální hodnoty vašich rozsahů
  • získáte (jedinečný) rozsah, jehož maximální hodnota je větší než IP
  • zkontrolujte, zda je minimální hodnota tohoto rozsahu nižší než IP

Příklad:

Zde jsou moji poskytovatelé. Každý z nich je identifikován ID. Vezměte prosím na vědomí, že mohu přidat další vlastnosti připojené ke každému poskytovateli:

> hmset providers:1 name P1 min 3232235786 max 3232235826
OK
> hmset providers:2 name P3 min 1232235786 max 1232235826
OK
> hmset providers:3 name P3 min 2232235786 max 2232235826
OK
> hmset providers:4 name P4 min 4232235786 max 4232235826
OK

Pokaždé, když je do systému přidán poskytovatel, musí být udržován index (manuálně:toto je Redis, ne relační databáze). Skóre je maximální hodnota, člen je id rozsahu.

> zadd providers:index 3232235826 1 1232235826 2 2232235826 3 4232235826 4
(integer) 4
> zrange providers:index 0 -1
1) "2"
2) "3"
3) "1"
4) "4"

Nyní k dotazu na jedinečný rozsah odpovídající IP adrese potřebujete 2 zpáteční cesty:

> zrangebyscore providers:index 3232235787 +inf LIMIT 0 1
1) "1"
> hgetall providers:1
1) "name"
2) "P1"
3) "min"
4) "3232235786"
5) "max"
6) "3232235826"

Potom klientský program pouze musí zkontrolovat, zda je vaše IP adresa větší nebo rovna minimální adrese vráceného rozsahu.

Nyní, pokud uvážíte, že se rozsahy mohou překrývat, řešení je mnohem složitější a již zde bylo vysvětleno.



  1. Spuštění PHP Nelze načíst dynamickou knihovnu php_mongo.dll

  2. Jak získat všechny klíče v Redis

  3. Jak nastavit featureCompatibilityVersion v MongoDB

  4. Připojení MongoDb bylo odmítnuto