Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Indeksowanie przy użyciu posortowanych zestawów Redis

  1. Zdecydowanie odradzam używanie do tego Redisa. Będziesz przechowywać mnóstwo dodatkowych danych wskaźnikowych, a jeśli kiedykolwiek zdecydujesz, że chcesz wykonać bardziej skomplikowane zapytania, takie jak SELECT WHERE first_name LIKE 'jon%' wpadniesz w kłopoty. Będziesz także musiał zaprojektować dodatkowe, bardzo duże indeksy, które przecinają wiele kolumn, na wypadek gdybyś chciał jednocześnie wyszukiwać dwa pola. Zasadniczo będziesz musiał dalej hakować i przeprojektowywać strukturę wyszukiwania. Lepiej byłoby skorzystać z Elastic Search lub Solr, lub dowolnego innego frameworka już stworzonego do robienia tego, co próbujesz zrobić. Redis jest niesamowity i ma wiele dobrych zastosowań. To nie jest jeden z nich.

  2. Ostrzeżenie na bok, aby odpowiedzieć na twoje rzeczywiste pytanie:myślę, że najlepiej będzie, jeśli skorzystasz z wariantu twojego pierwszego rozwiązania. Użyj jednego posortowanego zestawu na indeks, ale po prostu zamień litery na liczby. Konwertuj swoje litery na jakąś wartość dziesiętną. Możesz użyć wartości ASCII lub po prostu przypisać każdą literę do wartości 1-26 w porządku leksykograficznym, zakładając, że używasz angielskiego. Standaryzuj, aby każda litera zajmowała tę samą długość (jeśli więc 26 jest twoją największą liczbą, 1 będzie zapisane jako „01”). Następnie po prostu dołącz je razem z przecinkiem dziesiętnym z przodu i użyj go jako swojego wyniku na indeks (tj. „Kapelusz” byłby „0,080120”). Dzięki temu uzyskasz odpowiednio uporządkowane mapowanie 1 do 1 między słowami a tymi liczbami. Podczas wyszukiwania przekonwertuj litery na liczby, a wtedy będziesz mógł używać wszystkich ładnie posortowanych funkcji Redis, takich jak ZRANGEBYSCORE bez konieczności ich przepisywania. Funkcje Redisa są napisane bardzo, bardzo optymalnie, więc znacznie lepiej jest używać ich, gdy tylko jest to możliwe, zamiast pisać własne.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. nestJS socket.io-redis:6.0.1

  2. Uzyskaj wartość zestawu z Redis za pomocą RedisTemplate

  3. Gradle budować lokalne prace. W kontenerze dokowanym tak nie jest. CZEMU?

  4. Jak zaimplementować tę pojedynczą rozproszoną kolejkę współbieżności na dowolnej platformie MQ?

  5. usuwaj zbiorczo wartości skrótu redis na podstawie nazwy klucza skrótu