StackExchange.Redis 使用 (一)
本文内容纲要:
在StackExchange.Redis中最重要的对象是ConnectionMultiplexer类,它存在于StackExchange.Redis命名空间中。
这个类隐藏了Redis服务的操作细节,ConnectionMultiplexer类做了很多东西,在所有调用之间它被设计为共享和重用的。
不应该为每一个操作都创建一个ConnectionMultiplexer。ConnectionMultiplexer是线程安全的,推荐使用下面的方法。
在所有后续示例中,都假定你已经实例化好了一个ConnectionMultiplexer类,它将会一直被重用,
现在我们来创建一个ConnectionMultiplexer实例。它是通过ConnectionMultiplexer.Connect或者ConnectionMultiplexer.ConnectAsync,
传递一个连接字符串或者一个ConfigurationOptions对象来创建的。
连接字符串可以是以逗号分割的多个服务的节点,我们仅仅需要连接一个在本地计算机中的redis服务,redis服务的默认端口是6379.
usingStackExchange.Redis;
...
ConnectionMultiplexerredis=ConnectionMultiplexer.Connect("localhost");
//^^^storeandre-usethis!!!
注意:ConnectionMultiplexer实现了IDisposable接口当我们不再需要是可以将其释放的,这里我故意不使用using来释放他。简单来讲创建一个ConnectionMultiplexer是十分昂贵的,一个好的主意是我们一直重用一个ConnectionMultiplexer对象。
一个复杂的的场景中可能包含有主从复制,对于这种情况,只需要指定所有地址在连接字符串中(它将会自动识别出主服务器)
ConnectionMultiplexerredis=ConnectionMultiplexer.Connect("server1:6379,server2:6379");
假设这里找到了两台主服务器,将会对两台服务进行裁决选出一台作为主服务器来解决这个问题,这种情况是非常罕见的,我们也应该避免这种情况的发生。
现在你已经拥有了一个ConnectionMultiplexer,下面三件事情可能是你想要做的。
- 访问数据库。(注意在使用集群的情况下,一个数据库可能会分部在多个节点中)
- 使用redis的发布订阅功能
- 维护和监控一台服务器
访问数据库
访问数据库的操作非常简单:
IDatabasedb=redis.GetDatabase();
GetDatabase返回一个IDatabase接口。注意redis允许配置多个数据库,可以在调用GetDatabase()时候指定数据库.另外,如果你计划使用异步的api,Task.AsyncState必须拥有一个值,也可以这样指定。
intdatabaseNumber=...
objectasyncState=...
IDatabasedb=redis.GetDatabase(databaseNumber,asyncState);
现在你已经拥有了一个IDatabase对象,他可以对redis数据库进行操作。所有的方法都有同步和异步两个版本,按照微软的命名约定,所有的异步方法都以Async结尾。
最简单的操作存储和获取一个值。
stringvalue="abcdefg";
db.StringSet("mykey",value);
...
stringvalue=db.StringGet("mykey");
Console.WriteLine(value);//writes:"abcdefg"
String前缀这里代表的是Redis中的String类型,和.net中的String类型有很大的区别,尽管两者都可以保存字符串类型。然后,Redis允许键值为二进制数据,示例如下:
byte[]key=...,value=...;
db.StringSet(key,value);
...
byte[]value=db.StringGet(key);
StackExchange.Redis支持所有的redisshell命令,具体可以参考redis官网。
本文内容总结:
原文链接:https://www.cnblogs.com/deosky/p/4846111.html