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

Hledání hodnot pomocí částečného názvu klíče v Redis Sorted Set

Zde je aktualizovaná odpověď pro rok 2015.

Pokud můžete upgradovat Redis na verzi vyšší než 2.8, bude pro to fungovat příkaz SCAN s MATCH. Před touto verzí ne tolik a NEPOUŽÍVEJTE příkaz KEYS s výjimkou vývojového prostředí.

http://redis.io/commands/scan

Příklad na příkazovém řádku:

$ redis-cli
127.0.0.1:6379> scan 0 match V3.0:*
1) "0"
2) 1) "V3.0:UNITTEST55660BC7E0C5B"
   2) "V3.0:shop.domain.com:route"
   3) "V3.0:UNITTEST55660BC4A2548"
127.0.0.1:6379> scan 0 match V1.0:*
1) "0"
2) (empty list or set)
127.0.0.1:6379> scan 0 match V3.0:*
1) "0"
2) 1) "V3.0:UNITTEST55660BC7E0C5B"
   2) "V3.0:shop.domain.com:route"
   3) "V3.0:UNITTEST55660BC4A2548"

Příklad v PHP:

// Initialize our iterator to NULL
$iterate = null;

// retry when we get no keys back
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);

while ($arr_keys = $redis->scan($iterate, 'match:*')) {
    foreach ($arr_keys as $str_key) {
        echo "Here is a key: $str_key\n";
    }
    echo "No more keys to scan!\n";
}

Poznámka, php kód není testován a z hlavní dokumentace například zde. Produkční kód by musel být upraven v závislosti na klíčích potřebných k vyhledání.

Pro uživatele Ubuntu jsou zde pokyny k upgradu php5-redis:

  1. Stáhněte si balíček 2.2.7 zde:http://pecl.php.net/package/redis
  2. $ php -i | grep Redis Redis Support => enabled Redis Version => 2.2.4
  3. Postupujte podle pokynů v souboru README pro phpize, konfiguraci a instalaci
  4. Vytvořte symbolický odkaz pro balíček cli příkazového řádku:cd /etc/php5/cli/conf.d && sudo ln -s ../../mods-available/redis.ini 20-redis.ini
  5. $ php -i | grep Redis Redis Support => enabled Redis Version => 2.2.7


  1. Mohu se dotazovat MongoDB ObjectId podle data?

  2. MongoDB $arrayToObject

  3. Jedinečné dokumenty využívající více hodnot v Mongoose Schema

  4. Jak mohu procházet nebo dotazovat živá data MongoDB?