sql >> Database teknologi >  >> NoSQL >> Redis

Indeksering ved hjælp af Redis sorterede sæt

  1. Jeg fraråder kraftigt brugen af ​​Redis til dette. Du vil gemme et væld af ekstra pointerdata, og hvis du nogensinde beslutter dig for at lave mere komplicerede forespørgsler som f.eks. SELECT WHERE first_name LIKE 'jon%' du kommer til at løbe ind i problemer. Du bliver også nødt til at konstruere ekstra, meget store indekser, der krydser flere kolonner, hvis du vil søge efter to felter på samme tid. Du bliver i bund og grund nødt til at blive ved med at hacke væk og omstrukturere en søgeramme. Du ville være meget bedre stillet ved at bruge Elastic Search eller Solr eller en af ​​de andre rammer, der allerede er bygget til at gøre det, du prøver at gøre. Redis er fantastisk og har mange gode anvendelsesmuligheder. Dette er ikke en af ​​dem.

  2. Advarsel til side, for at besvare dit egentlige spørgsmål:Jeg tror, ​​du ville være bedst tjent med at bruge en variant af din første løsning. Brug et enkelt sorteret sæt pr. indeks, men konverter blot dine bogstaver til tal. Konverter dine bogstaver til en decimalværdi. Du kan bruge ASCII-værdien eller blot tildele hvert bogstav til en 1-26-værdi i leksikografisk rækkefølge, forudsat at du bruger engelsk. Standardiser, så hvert bogstav fylder den samme numeriske længde (så hvis 26 er dit største tal, vil 1 blive skrevet "01"). Så skal du bare tilføje disse sammen med et decimaltegn foran og bruge det som din score pr. indeks (dvs. "hat" ville være ".080120"). Dette giver dig mulighed for at få en korrekt ordnet 1-til-1-mapping mellem ord og disse tal. Når du søger, konverter fra bogstaver til tal, og så vil du være i stand til at bruge alle Redis' fine sorterede sæt funktioner som ZRANGEBYSCORE uden at skulle omskrive dem. Redis' funktioner er skrevet meget, meget optimalt, så du er meget bedre stillet at bruge dem, når det er muligt i stedet for at skrive dine egne.



  1. Hvordan sætter man (dvs. gemmer) et multidimensionelt associativt array ved hjælp af Predis?

  2. Redis, lytter til pubsub-begivenheder og gør dem til en stream for mere pålideligt forbrug

  3. Hvordan får jeg Spring-Data-MongoDB til at validere mine objekter?

  4. Ember data-hierarki på flere niveauer med indlejret altid