¿Existe un comando de Redis para recuperar todas las claves de la base de datos? He visto algunas bibliotecas python-redis buscándolas. Pero me preguntaba si es posible desde redis-client.
redis
redis-cli
redis-commands
Lalith
fuente
fuente
redis-cli keys "*"
KEYS
tiene el potencial de bloquear el servidor durante más tiempo cuando se consulta un conjunto de datos grandeActualizado para Redis 2.8 y superior
Como se señaló en los comentarios de respuestas anteriores a esta pregunta,
KEYS
es un comando potencialmente peligroso ya que su servidor Redis no estará disponible para realizar otras operaciones mientras lo atiende. Otro riesgoKEYS
es que puede consumir (dependiendo del tamaño de su espacio de teclas) una gran cantidad de RAM para preparar el búfer de respuesta, lo que posiblemente agote la memoria de su servidor.La versión 2.8 de Redis había introducido la familia de comandos SCAN que son mucho más amables y se pueden usar para el mismo propósito.
La CLI también proporciona una buena manera de trabajar con ella:
fuente
Puede suceder que usando redis-cli, se conecte a su redis-server remoto y luego el comando:
no muestra nada, o mejor, muestra:
(empty list or set)
Si está absolutamente seguro de que el servidor Redis que usa es el que tiene los datos, entonces quizás su redis-cli no se está conectando a la instancia correcta de la base de datos Redis.
Como se menciona en los documentos de Redis, las nuevas conexiones se conectan por defecto a la base de datos 0 .
En mi caso, el
KEYS
comando no estaba recuperando resultados porque mi base de datos era 1. Para seleccionar la base de datos que desea, use SELECT .El db se identifica por un número entero.
Publico esta información porque ninguna de las respuestas anteriores estaba resolviendo mi problema.
fuente
-> Obtén todas las claves de redis-cli
-> Obtener una lista de patrones
Esto producirá claves que comienzan por 'd' con tres caracteres.
Esto obtendrá claves con coincidencias con el carácter 't' en la clave
-> Cuente las claves de la línea de comando por
-> O puedes usar
dbsize
fuente
key *t*
akeys *t*
.Echa un vistazo a la siguiente hoja de trucos de Redis . Para obtener un subconjunto de teclas redis con redis-cli, uso el comando
fuente
Sí, puede obtener todas las claves al usar esto
fuente
SCAN no requiere que el cliente cargue todas las claves en la memoria como lo hace KEYS. SCAN le ofrece un iterador que puede usar. Tenía un registro 1B en mi redis y nunca pude obtener suficiente memoria para devolver todas las claves a la vez.
Aquí hay un fragmento de Python para obtener todas las claves de la tienda que coincidan con un patrón y eliminarlas:
fuente
donde * es el patrón para enumerar todas las claves
fuente
redis-cli -h <host> -p <port> keys '*'
Patrón de teclas
Devuelve todas las teclas que coinciden con el patrón.
Advertencia: No se recomienda usar este comando porque puede arruinar el rendimiento cuando se ejecuta en bases de datos grandes en lugar de KEYS, puede usar SCAN o SETS .
Ejemplo de comando KEYS para usar:
fuente
Si su redis es un clúster, puede usar este script
fuente
Consigue todas las llaves en Redis
Obtenga todas las claves usando la opción --scan:
Liste todas las teclas usando el comando KEYS:
fuente
Para obtener todas las claves disponibles en el servidor redis, debe abrir redis-cli y escribir:
KEYS *
Para obtener más ayuda, visite esta página: Este enlacefuente
Deberíamos usar --scan --pattern con redis 2.8 y posterior.
Puedes intentar usar este envoltorio encima de redis-cli. https://github.com/VijayantSoni/redis-helper
fuente
Si está utilizando Laravel Framework, simplemente puede usar esto:
En Core PHP:
fuente
Simplemente puede conectarse a su servidor redis usando redis-cli, seleccionar su base de datos y escribir KEYS *, recuerde que le dará todas las claves presentes en la base de datos redis seleccionada.
fuente