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

Indexování pomocí seřazených sad Redis

  1. K tomu důrazně nedoporučuji používat Redis. Budete ukládat spoustu dalších ukazatelových dat, a pokud se někdy rozhodnete, že chcete provádět složitější dotazy, jako je SELECT WHERE first_name LIKE 'jon%' dostaneš se do problémů. Budete také muset vytvořit další, velmi velké indexy, které protínají více sloupců, v případě, že chcete hledat dvě pole současně. V zásadě budete muset pokračovat v hackování a reengineeringu vyhledávacího rámce. Bylo by pro vás mnohem lepší používat Elastic Search nebo Solr nebo kterýkoli z jiných rámců, které již byly vytvořeny pro to, o co se snažíte. Redis je úžasný a má spoustu dobrých využití. Toto není jeden z nich.

  2. Varování stranou, abych odpověděl na vaši aktuální otázku:Myslím, že by vám nejlépe posloužila varianta vašeho prvního řešení. Použijte jednu seřazenou sadu na index, ale stačí převést písmena na čísla. Převeďte svá písmena na nějakou desetinnou hodnotu. Můžete použít hodnotu ASCII nebo jednoduše přiřadit každému písmenu hodnotu 1-26 v lexikografickém pořadí, za předpokladu, že používáte angličtinu. Standardizujte tak, aby každé písmeno zabíralo stejnou číselnou délku (takže, pokud je 26 vaše největší číslo, 1 by se psalo "01"). Pak je stačí připojit k sobě s desetinnou čárkou a použít to jako skóre za index (tj. „klobouk“ by byl „.080120“). To vám umožní mít správně uspořádané mapování 1:1 mezi slovy a těmito čísly. Když budete hledat, převádějte z písmen na čísla a pak budete moci používat všechny pěkné seřazené funkce Redis, jako je ZRANGEBYSCORE aniž byste je museli přepisovat. Funkce Redis jsou napsány velmi, velmi optimálně, takže je mnohem lepší je používat, kdykoli je to možné, namísto psaní vlastních.



  1. Predis with laravel 5.5 Ve fondu nejsou k dispozici žádná připojení v Aggregate/RedisCluster.php:337

  2. MongoDB:Jedinečný klíč ve vloženém dokumentu

  3. Dostávám duplicitní zprávy v mé seskupené aplikaci node.js/socket.io/redis pub/sub

  4. MongoDB $asinh