ConnectionMultiplexer 說(shuō)明
主從庫(kù)示例:ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379"); 項(xiàng)目中調(diào)用實(shí)例
public class RedisClient : ICache { private readonly RedisSettings _redisSettings; private static IDatabaseAsync _db; public RedisClient(IOptions<RedisSettings> redisSettings) { _redisSettings = redisSettings.Value; var redis = ConnectionMultiplexer.Connect($"{_redisSettings.Address}:{_redisSettings.Port}"); _db = redis.GetDatabase(_redisSettings.DataBase); } #region Implementation of ICache public async Task<bool> SetStringAsync(string key, string content) { return true; } public async Task<string> GetStringAsync(string key) { var result = await _db.StringGetAsync(key); return result; } #endregion } 其他一些建議和說(shuō)明
db.StringIncrement(cacheKey, flags: CommandFlags.FireAndForget);
發(fā)布/訂閱
例子: private readonly RedisSettings _redisSettings; private static IDatabaseAsync _db; private static ConnectionMultiplexer _redis; public RedisClient(IOptions<RedisSettings> redisSettings) { _redisSettings = redisSettings.Value; _redis = ConnectionMultiplexer.Connect($"{_redisSettings.Address}:{_redisSettings.Port}"); _db = _redis.GetDatabase(_redisSettings.DataBase); } public async Task Subscribe(string channel, Action<RedisChannel, RedisValue> fun) { var sub = _redis.GetSubscriber(); await sub.SubscribeAsync(channel, fun); } public async Task Publish(string channel, string message) { var sub = _redis.GetSubscriber(); await sub.PublishAsync(channel, message); } 訂閱者 class Program { static void Main(string[] args) { var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); var configuration = builder.Build(); var subscriber = configuration["Subscriber"]; var settings = configuration.GetSection("RedisSettings").Get<RedisSettings>(); var redisClient = new RedisClient(settings); redisClient.Subscribe(settings.ChannelName, (channel, message) => { System.Console.WriteLine($"{subscriber}:{message}"); }).Wait(); System.Console.WriteLine("started"); System.Console.ReadKey(); } } 測(cè)試效果: 服務(wù)器命令
var server = _redis.GetServer($"{_redisSettings.Address}:{_redisSettings.Port},allowAdmin=true"); server.ScriptExists("scripts here"); 目前支持的方法如下 |
|