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

Znajdowanie wartości przy użyciu częściowej nazwy klucza w posortowanym zestawie Redis

Oto zaktualizowana odpowiedź na rok 2015.

Jeśli możesz zaktualizować Redis powyżej 2.8, polecenie SKANUJ z MATCH będzie działać w tym celu. Przed tą wersją, nie tak bardzo i NIE używaj polecenia KLAWISZE z wyjątkiem środowiska programistycznego.

http://redis.io/commands/scan

Przykład w wierszu poleceń:

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

Przykład w 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";
}

Uwaga, kod php nie jest testowany i pochodzi z podstawowej dokumentacji na przykład tutaj. Kod produkcyjny musiałby zostać zmodyfikowany w zależności od kluczy potrzebnych do wyszukiwania.

Dla tych, którzy korzystają z Ubuntu, oto instrukcje dotyczące aktualizacji php5-redis:

  1. Pobierz pakiet 2.2.7 tutaj:http://pecl.php.net/package/redis
  2. $ php -i | grep RedisRedis Support => enabledRedis Version => 2.2.4
  3. Postępuj zgodnie z instrukcjami w README, aby phpize, skonfigurować, zainstalować
  4. Utwórz dowiązanie symboliczne dla pakietu cli wiersza poleceń:cd /etc/php5/cli/conf.d &&sudo ln -s ../../mods-available/redis.ini 20-redis.ini
  5. $ php -i | grep RedisRedis Support => enabledRedis Version => 2.2.7


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Docker [Errno 111] Połączenie nie powiodło się ('127.0.0.1', 6379)

  2. Microsoft.Extensions.Caching.Redis wybierz inną bazę danych niż db0

  3. Node.js, (Hi)Redis i multipolecenie

  4. Redis posortowane zestawy i najlepszy sposób na przechowywanie uidów

  5. Czy Redis zezwala tylko na reprezentację ciągu, ale nie wartość liczbową?