sql >> Database >  >> NoSQL >> Redis

Zoeken in waarden van een redis db

Redis is voor gebruikssituaties waarbij u gegevens met een zeer hoge frequentie moet openen en bijwerken en waar u profiteert van het gebruik van gegevensstructuren (hashes, sets, lijsten, strings of gesorteerde sets). Het is gemaakt om zeer specifieke gebruiksgevallen te vullen. Als je een algemeen gebruiksvoorbeeld hebt, zoals zeer flexibel zoeken, zou je veel beter geholpen zijn door iets dat voor dit doel is gebouwd, zoals elastisch zoeken of SOLR.

Dat gezegd hebbende, als je dit in Redis moet doen, zou ik het als volgt doen (ervan uitgaande dat gebruikers namen en telefoonnummers kunnen delen):

name:some_name -> set([id1, id2, etc...])
name:some_other_name -> set([id3, id4, etc...])

phone:some_phone -> set([id1, id3, etc...])
phone:some_other_phone -> set([id2, id4, etc...])

id1 -> {'name' : 'bob', 'phone' : '123-456-7891', etc...}
id2 -> {'name' : 'alice', 'phone' : '987-456-7891', etc...}

In dit geval maken we een nieuwe sleutel voor elke naam (voorafgegaan door "naam:") en elk telefoonnummer (voorafgegaan door "telefoon:"). Elke sleutel verwijst naar een reeks id's die alle informatie bevatten die u voor een gebruiker wilt. Als u zoekt, bijvoorbeeld naar een telefoon, doet u:

HGETALL 'phone:123-456-7891'

en loop vervolgens door de resultaten en retourneer alle informatie over elk (naam in ons voorbeeld) in uw taal naar keuze (u kunt dit hele ding doen in Lua aan de serverzijde in de Redis-box om nog sneller te gaan en netwerk-back-and- te vermijden verder, als je wilt):

for id in results:
    HGET id 'name'

Je kosten hier zijn O(m) waar m is het aantal gebruikers met het opgegeven telefoonnummer, en dit zal een zeer snelle operatie zijn op Redis vanwege de geoptimaliseerde snelheid. Het zal in jouw geval overdreven zijn omdat je dingen waarschijnlijk niet zo snel nodig hebt, en je zou liever flexibel zoeken, maar dit is hoe je het zou doen.



  1. De beste manier om een ​​volledige tekstzoekopdracht uit te voeren in MongoDB en Mongoose

  2. Een weergavefunctie maken zonder een antwoord terug te sturen in Flask

  3. is er een mangoest verbindingsfout callback

  4. Json-bestand invoegen in mongodb