Apakah ada perintah Redis untuk mengambil semua kunci dalam database? Saya telah melihat beberapa perpustakaan python-redis mengambilnya. Tapi bertanya-tanya apakah itu mungkin dari redis-client.
redis
redis-cli
redis-commands
Lalith
sumber
sumber
redis-cli keys "*"
KEYS
memiliki potensi memblokir server lebih lama ketika meminta set data besarDiperbarui 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 lainKEYS
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:
sumber
Itu bisa terjadi bahwa menggunakan redis-cli, Anda terhubung ke server redis jauh Anda, dan kemudian perintah:
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.
Saya memposting info ini karena tidak ada jawaban sebelumnya yang menyelesaikan masalah saya.
sumber
-> Dapatkan semua kunci dari redis-cli
-> Dapatkan daftar pola
Ini akan menghasilkan kunci yang dimulai dengan 'd' dengan tiga karakter.
Ini akan mendapatkan kunci dengan karakter cocok 't' di kunci
-> Hitung kunci dari baris perintah dengan
-> Atau bisa Anda gunakan
dbsize
sumber
key *t*
untukkeys *t*
.Lihatlah Redis Cheat Sheet berikut . Untuk mendapatkan subset dari kunci redis dengan redis-cli saya menggunakan perintah
sumber
Ya, Anda bisa mendapatkan semua kunci dengan menggunakan ini
sumber
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:
sumber
di mana * adalah pola untuk mencantumkan semua kunci
sumber
redis-cli -h <host> -p <port> keys '*'
Pola KUNCI
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:
sumber
Jika redis Anda adalah sebuah cluster, Anda dapat menggunakan skrip ini
sumber
Dapatkan Semua Kunci Di Redis
Dapatkan semua kunci menggunakan opsi --scan:
Daftar semua kunci menggunakan perintah KEYS:
sumber
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 Inisumber
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
sumber
Jika Anda menggunakan Laravel Framework maka Anda cukup menggunakan ini:
Dalam Core PHP:
sumber
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.
sumber