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
.
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:En este ejemplo, obtenemos la instancia de la base de datos Redis (
redisDatabase
) a partir de la conexión y llamamos al métodoHashScan
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 objetoIEnumerable<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.