Jawaban:
Cobalah untuk melihat KEYS
perintah. KEYS *
akan mencantumkan semua kunci yang disimpan dalam redis.
EDIT: harap perhatikan peringatan di bagian atas KEYS
halaman dokumentasi:
Kompleksitas waktu: O (N) dengan N menjadi jumlah kunci dalam basis data, dengan asumsi bahwa nama-nama kunci dalam basis data dan pola yang diberikan memiliki panjang yang terbatas.
UPDATE (V2.8 atau lebih tinggi): SCAN
adalah alternatif yang unggul KEYS
, dalam arti tidak memblokir server juga tidak mengkonsumsi sumber daya yang signifikan. Lebih suka menggunakannya.
KEYS
memiliki potensi memblokir server lebih lama ketika meminta set data besar
Diperbarui untuk Redis 2.8 dan lebih tinggi
Seperti tercantum dalam komentar jawaban sebelumnya untuk pertanyaan ini, KEYS
adalah perintah yang berpotensi berbahaya karena server Redis Anda tidak akan dapat melakukan operasi lain saat melayani. Risiko lain KEYS
adalah bahwa ia dapat mengkonsumsi (tergantung pada ukuran ruang kunci Anda) banyak RAM untuk mempersiapkan buffer respon, sehingga mungkin melelahkan memori server Anda.
Versi 2.8 dari Redis telah memperkenalkan keluarga perintah SCAN yang jauh lebih sopan dan dapat digunakan untuk tujuan yang sama.
CLI juga menyediakan cara yang bagus untuk bekerja dengannya:
$ redis-cli --scan --pattern '*'
Itu bisa terjadi bahwa menggunakan redis-cli, Anda terhubung ke server redis jauh Anda, dan kemudian perintah:
KEYS *
tidak menunjukkan apa pun, atau lebih baik, ini menunjukkan:
(empty list or set)
Jika Anda benar-benar yakin bahwa server Redis yang Anda gunakan adalah yang Anda miliki datanya, maka mungkin redis-cli Anda tidak terhubung ke instance database Redis yang benar.
Seperti yang disebutkan dalam dokumen Redis, koneksi baru terhubung sebagai default ke db 0 .
Dalam kasus saya, KEYS
perintah tidak mengambil hasil karena basis data saya adalah 1. Untuk memilih db yang Anda inginkan, gunakan SELECT .
Db diidentifikasi oleh integer.
SELECT 1
KEYS *
Saya memposting info ini karena tidak ada jawaban sebelumnya yang menyelesaikan masalah saya.
-> Dapatkan semua kunci dari redis-cli
-redis 127.0.0.1:6379> keys *
-> Dapatkan daftar pola
-redis 127.0.0.1:6379> keys d??
Ini akan menghasilkan kunci yang dimulai dengan 'd' dengan tiga karakter.
-redis 127.0.0.1:6379> keys *t*
Ini akan mendapatkan kunci dengan karakter cocok 't' di kunci
-> Hitung kunci dari baris perintah dengan
-redis-cli keys * |wc -l
-> Atau bisa Anda gunakan dbsize
-redis-cli dbsize
key *t*
untuk keys *t*
.
Lihatlah Redis Cheat Sheet berikut . Untuk mendapatkan subset dari kunci redis dengan redis-cli saya menggunakan perintah
KEYS "prefix:*"
Ya, Anda bisa mendapatkan semua kunci dengan menggunakan ini
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
SCAN tidak mengharuskan klien memuat semua kunci ke dalam memori seperti halnya KEYS. SCAN memberi Anda iterator yang dapat Anda gunakan. Saya memiliki catatan 1B di redis saya dan saya tidak pernah bisa mendapatkan cukup memori untuk mengembalikan semua kunci sekaligus.
Berikut ini potongan python untuk mendapatkan semua kunci dari toko yang cocok dengan suatu pola dan menghapusnya:
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 *
di mana * adalah pola untuk mencantumkan semua kunci
redis-cli -h <host> -p <port> keys '*'
Pola KUNCI
Tersedia sejak 1.0.0.
Kompleksitas waktu: O (N) dengan N menjadi jumlah kunci dalam basis data, dengan asumsi bahwa nama-nama kunci dalam basis data dan pola yang diberikan memiliki panjang yang terbatas.
Mengembalikan semua pola pencocokan kunci.
Peringatan: Perintah ini tidak disarankan untuk digunakan karena dapat merusak kinerja ketika dieksekusi terhadap database besar, bukan KEYS Anda dapat menggunakan SCAN atau SETS .
Contoh perintah KEYS untuk digunakan:
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"
Jika redis Anda adalah sebuah cluster, Anda dapat menggunakan skrip ini
#!/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"
Untuk mendapatkan semua kunci yang tersedia di server redis, Anda harus membuka redis-cli dan ketik:
KEYS *
Untuk mendapatkan bantuan lebih lanjut silakan kunjungi halaman ini:
Tautan Ini
Kita harus menggunakan --scan --pattern dengan redis 2.8 dan yang lebih baru.
Anda dapat mencoba menggunakan pembungkus ini di atas redis-cli. https://github.com/VijayantSoni/redis-helper
Jika Anda menggunakan Laravel Framework maka Anda cukup menggunakan ini:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
Dalam Core PHP:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
Anda cukup terhubung ke server redis Anda menggunakan redis-cli, pilih database Anda dan ketik KEYS *, harap diingat itu akan memberi Anda semua kunci yang ada dalam database redis yang dipilih.
redis-cli keys "*"