Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Suchen von Werten mithilfe eines teilweisen Schlüsselnamens in einem Redis Sorted Set

Hier ist eine aktualisierte Antwort für 2015.

Wenn Sie Redis über 2.8 aktualisieren können, funktioniert der SCAN-Befehl mit MATCH dafür. Vor dieser Version nicht so sehr, und verwenden Sie den KEYS-Befehl NICHT, außer in einer Entwicklungsumgebung.

http://redis.io/commands/scan

Beispiel auf der Kommandozeile:

$ 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"

Beispiel in 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";
}

Beachten Sie, dass der PHP-Code nicht getestet wurde und beispielsweise aus der Kerndokumentation hier stammt. Der Produktionscode müsste je nach den Schlüsseln, die zum Nachschlagen benötigt werden, geändert werden.

Für Benutzer von Ubuntu sind hier die Anweisungen zum Aktualisieren von php5-redis:

  1. Laden Sie das 2.2.7-Paket hier herunter:http://pecl.php.net/package/redis
  2. $ php -i | grep Redis Redis Support => enabled Redis Version => 2.2.4
  3. Folgen Sie den Anweisungen in README, um zu phpisieren, zu konfigurieren und zu installieren
  4. Erstellen Sie einen symbolischen Link für das Befehlszeilen-CLI-Paket: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