Я использую клиент Sider C# Redis для подключения к серверу Redis, работающему на моем компьютере с Windows 7. https://github.com/chakrit/siderиспользовать публикацию/подписку с sider redis C# client
Я могу стрелять установить/получить/выбрать из приложения C#
теперь я хочу использовать Publish/Subscribe функции так, что мой C# приложение может получать информацию о любых изменениях в Redis клиентский «ключ» в событийный путь (передача делегатов)
Я не могу написать код для этого, так как нет примеров того, как использовать страницу клиента sider.
все я мог бы написать был следующим:
var client = new RedisClient(address, 6379);
string[] keys = new string[1];
keys[0] = "key1ToMonitor";
IObservable<Message<string>> obb = client.Subscribe(keys);
Я знаю, это выглядит хромым, но я получил нет понятия, как писать его в лямбда-пути, где моя функция будет вызываться, если какой-либо клиент изменяет нужные клавиши на сервер redis.
PS: Я новичок в этом, так что поправьте меня, если мой подход испорчен.
Редактировать: при добавлении предлагаемых изменений я получаю следующую ошибку.
Error 7 Cannot convert lambda expression to type 'System.IObserver<Sider.Message<string>>' because it is not a delegate type D:\_Work\TestApp\Program.cs 90 27 TestApp
obb.subscribe подписи выглядит следующим образом
namespace System
{
// Summary:
// Defines a provider for push-based notification.
//
// Type parameters:
// T:
// The object that provides notification information.This type parameter is
// covariant. That is, you can use either the type you specified or any type
// that is more derived. For more information about covariance and contravariance,
// see Covariance and Contravariance in Generics.
public interface IObservable<out T>
{
// Summary:
// Notifies the provider that an observer is to receive notifications.
//
// Parameters:
// observer:
// The object that is to receive notifications.
//
// Returns:
// The observer's interface that enables resources to be disposed.
IDisposable Subscribe(IObserver<T> observer);
}
}
код:
var client = new RedisClient(address, 6379);
string[] keys = new string[1];
keys[0] = "key1ToMonitor";
IObservable<Message<string>> obb = client.Subscribe(keys);
obb.Subscribe(x => Debug.WriteLine(x.ToString())); // error : doesn't let me compile
Эта библиотека, похоже, имеет странный «наблюдаемый» синтаксис, поэтому вам нужно снова подписаться на «obb», чтобы увидеть результаты. Попробуйте 'obb.Subscribe (x => Debug.WriteLine (x.ToString())) и дайте мне знать, какие результаты вы получите. – Enigmativity
Можете ли вы показать в своем коде точно, как вы пробовали предложенные изменения? – Enigmativity
@ Добавлен код энигматизма – ankur