Redis
 sql >> база данни >  >> NoSQL >> Redis

Индексиране с помощта на сортирани набори Redis

  1. Силно не насърчавам използването на Redis за това. Ще съхранявате много допълнителни данни за указатели и ако някога решите, че искате да правите по-сложни заявки, като SELECT WHERE first_name LIKE 'jon%' ще се сблъскаш с неприятности. Освен това ще трябва да създадете допълнителни, много големи индекси, които пресичат множество колони, в случай че искате да търсите по две полета едновременно. По същество ще трябва да продължите да хакнете и да реинженерирате рамка за търсене. Ще бъде много по-добре да използвате Elastic Search или Solr, или някоя от другите рамки, които вече са създадени, за да направите това, което се опитвате да направите. Redis е страхотен и има много добри приложения. Това не е един от тях.

  2. Предупреждение настрана, за да отговоря на действителния ви въпрос:Мисля, че ще бъде най-добре да използвате вариант на първото си решение. Използвайте един сортиран набор за индекс, но просто преобразувайте буквите си в цифри. Преобразувайте буквите си в някаква десетична стойност. Можете да използвате ASCII стойността или просто да присвоите на всяка буква стойност 1-26 в лексикографски ред, ако приемем, че използвате английски. Стандартизирайте, така че всяка буква да заема една и съща числова дължина (така, ако 26 е най-голямото ви число, 1 ще бъде написано "01"). След това просто ги добавете заедно с десетична запетая отпред и го използвайте като резултат за индекс (т.е. „шапка“ ще бъде „.080120“). Това ще ви позволи да имате правилно подредено съпоставяне 1 към 1 между думите и тези числа. Когато търсите, преобразувайте от букви в цифри и след това ще можете да използвате всички функции на Redis с приятен сортиран набор като ZRANGEBYSCORE без да е необходимо да ги пренаписвате. Функциите на Redis са написани много, много оптимално, така че е много по-добре да ги използвате, когато е възможно, вместо да пишете свои собствени.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Програмата scrapy-redis не се затваря автоматично

  2. Вземете Redis ключове и стойности в командния ред

  3. Не може да се свърже със сървъра Redis от Docker контейнера

  4. Паралелност на Redis INCR

  5. Персонализираната среда на Rails Resque.enqueue не създава работни места