旧口高中,装修除味,与施从事书阅读答案
本系列博文已经全部完成,完整系列请访问:https://blog.zhuliang.ltd/tags/stackexchange-redis%e7%b3%bb%e5%88%97/
本文转自:https://blog.zhuliang.ltd/2020/01/redis/stackexchangeredis-basicusage.html
- 本系列博文是“伪”官方文档翻译,并非完全将官方文档进行翻译,而是我在查阅、测试原始文档并转换为自己东西后进行的“准”翻译。
- 原始文档见此:https://stackexchange.github.io/stackexchange.redis/
- 本系列本博文基于 redis 5.0.6,系列中部分博文跟官方文档有出入,有不同见解 / 说明不当的地方,还请大家不吝拍砖。
命名空间位于:stackexchange.redis.connectionmultiplexer
connectionmultiplexer redis = connectionmultiplexer.connect("server1:6379,server2:6379");
说明:示例基于 .net core 2.1,通过 ioc 进行注入,生命周期为“单例”。
如果不通过 ioc 的话建议直接使用“单例模式”。
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 }
db.stringincrement(cachekey, flags: commandflags.fireandforget);
例子:
客户端
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(); } }
测试效果:
若要使用服务器命令,需要通过 connectionmultiplexer 对象获取 server 对象,如下:
var server = _redis.getserver($"{_redissettings.address}:{_redissettings.port},allowadmin=true"); server.scriptexists("scripts here");
目前支持的方法如下
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
asp.net搭建博客,使用BlogEngine.NET+MySql搭建博客
网友评论