Могу ли я использовать поиск по диким картам для Redis HSCAN?

#c# #redis #stackexchange.redis

Вопрос:

У меня есть такие хэш-ключи в моем кэше —

 products:P101
products:P211
products:P327
...
 

Теперь я хочу сканировать эти элементы кэша с помощью widlcard, но это не работает

 hscan "products:P121" 0 //this works
scan 0 match products:* //this works
hscan "products:*" 0 //this does not work
 

Я также хочу проверить в своем приложении c# .net core, существуют ли какие-либо элементы, используя сканирование с помощью подстановочных знаков
Я использовал приведенный ниже код, но он не возвращает никаких данных —

  var db = s_redis.GetDatabase();
 var cachedItem = db.HashScan("products:*");
 var count = cachedItem.ToList().Count; //this is always 0
 

Может кто-нибудь, пожалуйста, помочь мне сделать так, чтобы работали следующие 2 вещи

 c# - var cachedItem = db.HashScan("products:*"); //this is always 0
cmd - hscan "products:*" 0 //this does not work
 

Ответ №1:

HSCAN используется для сканирования полей хэша Redis, а не ключей. Для сканирования ключей вам необходимо использовать команду СКАНИРОВАНИЯ.

hscan «продукты:P121» 0 //это работает

Это сканирует все поля хэша, расположенные в ключе «продукты:P121».

сканирование 0 совпадающих продуктов:* //это работает

Это сканирует все ключи и возвращает только те ключи, которые соответствуют шаблону » продукты:*».

hscan «продукты:*» 0 //это не работает

Это сканирует все поля хэша, расположенные в ключевых продуктах:*. В вашем случае нет хэша с именем *products:**, и именно поэтому он не работает.

Ответ №2:

Вы должны указать имя хэш-карты, которую хотите найти

Шаблон СОВПАДЕНИЯ курсора HSCAN name_of_the_hash