Yanıtlar:
KEYS
Komuta bakmaya çalışın . KEYS *
redis içinde saklanan tüm anahtarları listeler.
EDIT: Lütfen KEYS
dokümantasyon sayfasının üst kısmındaki uyarıya dikkat edin :
Zaman karmaşıklığı: O (N) ile N, veritabanındaki anahtar adlarının ve verilen paternin sınırlı uzunluğuna sahip olduğu varsayılarak veritabanındaki anahtar sayısıdır.
GÜNCELLEME (V2.8 veya üstü): sunucuyu engellememesi veya önemli miktarda kaynak tüketmesi bakımından SCAN
üstün bir alternatiftir KEYS
. Kullanmayı tercih edin.
KEYS
büyük bir veri kümesini
Redis 2.8 ve üstü için güncellendi
Bu soruya verilen önceki yanıtların yorumlarında belirtildiği gibi, KEYS
Redis sunucunuz hizmet ederken başka işlemler yapmak için kullanılamayacağı için potansiyel olarak tehlikeli bir komuttur. Başka bir risk KEYS
, yanıt arabelleğini hazırlamak için çok fazla RAM tüketebilmesi (anahtar boşluğunuzun boyutuna bağlı olarak), böylece muhtemelen sunucunuzun belleğini tüketebilmesidir.
Redis'in 2.8 sürümü, SCAN çok daha kibar ve aynı amaçla kullanılabilen komutlar ailesini tanıtmıştı .
CLI ayrıca bununla çalışmak için güzel bir yol sağlar:
$ redis-cli --scan --pattern '*'
Redis-cli kullanarak, uzak redis sunucunuza bağlanırsınız ve ardından komut:
KEYS *
hiçbir şey göstermiyor veya daha iyisi şunu gösteriyor:
(empty list or set)
Kullandığınız Redis sunucusunun verilere sahip olduğunuzdan kesinlikle eminseniz, redis-cli'niz Redis doğru veritabanı örneğine bağlanmıyor olabilir.
Redis belgelerinde belirtildiği gibi, yeni bağlantılar varsayılan olarak db 0'a bağlanır .
Benim durumumda KEYS
, veritabanım 1 olduğundan komut alınamadı . İstediğiniz db'yi seçmek için SELECT kullanın .
Db bir tamsayı ile tanımlanır.
SELECT 1
KEYS *
Bu bilgiyi gönderiyorum çünkü önceki yanıtların hiçbiri sorunumu çözmedi.
-> Tüm anahtarları redis-cli'den alın
-redis 127.0.0.1:6379> keys *
-> Desen listesini al
-redis 127.0.0.1:6379> keys d??
Bu, 'd' ile üç karakterle başlayan anahtarlar üretecektir.
-redis 127.0.0.1:6379> keys *t*
Bu anahtarda 't' karakteriyle eşleşen anahtarlar alacak
-> Komut satırından tuşları say
-redis-cli keys * |wc -l
-> Veya kullanabilirsiniz dbsize
-redis-cli dbsize
key *t*
için keys *t*
.
Aşağıdaki Redis Hile Sayfasına bir göz atın . Redis-cli ile redis tuşlarının bir alt kümesini almak için
KEYS "prefix:*"
Evet, bunu kullanarak tüm anahtarları alabilirsiniz
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
SCAN, istemcinin tüm anahtarları KEYS gibi belleğe yüklemesini gerektirmez. SCAN, kullanabileceğiniz bir yineleyici sağlar. Redislerimde 1B kayıtları vardı ve tüm anahtarları aynı anda döndürmek için yeterli belleği alamadım.
Mağazadaki tüm anahtarları bir desenle eşleşen ve silmek için bir python snippet'i:
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
redis-cli -h <host> -p <port> keys *
burada * tüm anahtarları listeleyen modeldir
redis-cli -h <host> -p <port> keys '*'
ANAHTARLAR desen
1.0.0'dan beri kullanılabilir.
Zaman karmaşıklığı: O (N) ile N, veritabanındaki anahtar adlarının ve verilen paternin sınırlı uzunluğuna sahip olduğu varsayılarak veritabanındaki anahtar sayısıdır.
Kalıpla eşleşen tüm tuşları döndürür.
Uyarı: KEYS yerine büyük veritabanlarına karşı yürütüldüğünde performansı bozabileceğinden, bu komutun kullanılması önerilmez, TARAMA veya SETS kullanabilirsiniz .
Kullanılacak KEYS komutu örneği:
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
Redis'iniz bir kümeyse, bu komut dosyasını kullanabilirsiniz
#!/usr/bin/env bash
redis_list=("172.23.3.19:7001,172.23.3.19:7002,172.23.3.19:7003,172.23.3.19:7004,172.23.3.19:7005,172.23.3.19:7006")
arr=($(echo "$redis_list" | tr ',' '\n'))
for info in ${arr[@]}; do
echo "start :${info}"
redis_info=($(echo "$info" | tr ':' '\n'))
ip=${redis_info[0]}
port=${redis_info[1]}
echo "ip="${ip}",port="${port}
redis-cli -c -h $ip -p $port set laker$port '湖人总冠军'
redis-cli -c -h $ip -p $port keys \*
done
echo "end"
Redis sunucusunda mevcut olan tüm anahtarları elde etmek için redis-cli'yi açmalı ve yazmalısınız:
KEYS *
Daha fazla yardım almak için lütfen bu sayfayı ziyaret et:
Bu Bağlantı
2.8 ve sonrası redis ile --scan --pattern kullanmalıyız.
Bu sarmalayıcıyı redis-cli'nin üstünde kullanmayı deneyebilirsiniz. https://github.com/VijayantSoni/redis-helper
Laravel Framework kullanıyorsanız, bunu kullanabilirsiniz:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
Çekirdek PHP'de:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
Redis-cli kullanarak redis sunucunuza bağlanabilir, veritabanınızı seçebilir ve KEYS * yazabilirsiniz, lütfen seçilen redis veritabanında bulunan tüm anahtarları vereceğini unutmayın.
redis-cli keys "*"