sql >> Database >  >> NoSQL >> Redis

Waarden zoeken met behulp van een gedeeltelijke sleutelnaam in een Redis-gesorteerde set

Hier is een bijgewerkt antwoord voor 2015.

Als u Redis boven 2.8 kunt upgraden, werkt het SCAN-commando met MATCH hiervoor. Vóór die versie, niet zozeer, en gebruik de opdracht KEYS NIET, behalve in een ontwikkelomgeving.

http://redis.io/commands/scan

Voorbeeld op de opdrachtregel:

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

Voorbeeld 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";
}

Let op, php-code is niet getest en uit de kerndocumentatie bijvoorbeeld hier. De productiecode moet worden aangepast, afhankelijk van de sleutels die nodig zijn om op te zoeken.

Voor degenen op Ubuntu zijn hier de instructies om php5-redis te upgraden:

  1. Download het 2.2.7-pakket hier:http://pel.php.net/package/redis
  2. $ php -i | grep Redis Redis Support => enabled Redis Version => 2.2.4
  3. Volg de instructies in README om te phpize, configure, make install
  4. Maak een symbolische link voor opdrachtregel cli-pakket: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. Filteraggregatie maken in het voorjaar

  2. MongoDB $abs

  3. Forceer mongodb om strikte JSON uit te voeren

  4. Wat is de aanbevolen manier om indexen te laten vallen met Mongoose?