es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulta de tipo hash en Redis

Revisé muchas publicaciones en SO. Búsqueda de Patrón de Clave Obtener-Todos-Hashes

Tengo un escenario diferente. Tengo un hash de redis para mi proyecto. La estructura es la siguiente:

Redis:
Clave - H_SD_C_India
Campo - Ameya_Deshpande_India
Valor - JSON

Lo que necesito es buscar todos los documentos que contengan un valor específico en el campo, algo como esto:

Donde Campo.Contains("Ameya*)

Estamos utilizando StackExchange.Redis en .Net y sus métodos para almacenar y obtener datos de la caché de redis.

Hay algunas opciones sugeridas por los miembros como HMSET o HSCAN o SCAN 0 TYPE hash, pero estos están dentro de la CLI.

Intenté el siguiente método para encontrar datos, pero no obtuve lo que esperaba.

HashGetAsync("H_SD_C_India", "Ameya*");

Por favor, sugiera cómo hacer una búsqueda comodín desde una aplicación .Net usando StackExchange.Redis.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para realizar una búsqueda de comodines desde una aplicación .NET utilizando StackExchange.Redis, puedes utilizar el método HASHSCAN. Este método te permite escanear todos los campos de un hash y devolver aquellos que coinciden con un patrón específico. Aquí tienes un ejemplo de cómo utilizarlo:

    string pattern = "Ameya*";
    IDatabase redisDatabase = redisConnection.GetDatabase();
    var hashEntries = redisDatabase.HashScan("H_SD_C_India", pattern);
    
    foreach (var hashEntry in hashEntries)
    {
        Console.WriteLine($"Campo: {hashEntry.Name}, Valor: {hashEntry.Value}");
    }
    

    En este ejemplo, obtenemos la instancia de la base de datos Redis (redisDatabase) a partir de la conexión y llamamos al método HashScan en ella. El primer parámetro es el nombre del hash en el que realizar la búsqueda (H_SD_C_India) y el segundo parámetro es el patrón a coincidir (Ameya*).

    El método HashScan devuelve un objeto IEnumerable<hashentry> que contiene todos los campos y sus valores correspondientes que coinciden con el patrón. Luego podemos recorrer estas entradas e imprimir sus nombres y valores.

    Ten en cuenta que HashScan devuelve todos los campos que coinciden con el patrón, sin importar su orden o posición. Si deseas realizar una búsqueda más compleja (por ejemplo, buscar campos que contengan valores específicos y tengan nombres específicos), es posible que necesites utilizar otros comandos o bibliotecas de Redis.

Comments are closed.