StackExchange Redis ChannelPrefix не охватывает ключи

У меня в строке подключения объявлен channelPrefix, и с помощью ConfigurationOptions.Parse я могу сказать, что он правильно анализирует channelPrefix из строки. Я предположил, что если я открою два экземпляра Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache, каждый из которых имеет одну и ту же строку подключения, за исключением разных значений channelPrefix, Redis будет поддерживать отдельные значения для ключей двух, но это не так. что я вижу. Когда я устанавливаю значение ключа, используя один экземпляр RedisCache, я могу получить значение из другого экземпляра, используя тот же ключ. Я совершенно неправильно понимаю, что делает channelPrefix, или возможно, что наш сервер Redis настроен таким образом, что не подчиняется channelPrefix?


person Eric    schedule 02.07.2019    source источник


Ответы (1)


Концепция "канала" и типа RedisChannel, в частности, относится к API pub/sub, а не к API DB пространства ключей. Для того, что вы хотите, вы используете метод расширения .WithKeyPrefix() для IDatabase, который вы получили с помощью GetDatabase().

person Marc Gravell    schedule 19.07.2019
comment
Я обращаюсь к Redis тремя разными способами, и у меня нет способа перехватить базу данных, используемую в любом из этих случаев. У меня есть доступ к ConfigurationOptions во всех трех случаях, поэтому я надеялся, что это будет ключом к этой проблеме. Я мог бы вручную переопределить ключи с префиксом в двух случаях, но я не вижу, как это сделать с объединительной платой SignalR. StackExchangeRedisDataProtectionBuilderExtensions.PersistKeysToStackExchangeRedis новый StackExchangeRedis.RedisCache StackExchangeRedisDependencyInjectionExtensions.AddStackExchangeRedis - person Eric; 22.07.2019
comment
@Eric Теоретически это можно сделать на уровне конфигурации; это просто не вариант, который существует сегодня - person Marc Gravell; 23.07.2019