#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