在StackExchange.Redis中最重要的对象是ConnectionMultiplexer类, 它存在于StackExchange.Redis命名空间中。
这个类隐藏了Redis服务的操做细节,ConnectionMultiplexer类作了不少东西, 在全部调用之间它被设计为共享和重用的。
不该该为每个操做都建立一个ConnectionMultiplexer 。 ConnectionMultiplexer是线程安全的 , 推荐使用下面的方法。
在全部后续示例中 , 都假定你已经实例化好了一个ConnectionMultiplexer类,它将会一直被重用 ,
如今咱们来建立一个ConnectionMultiplexer实例。它是经过ConnectionMultiplexer.Connect 或者 ConnectionMultiplexer.ConnectAsync,
传递一个链接字符串或者一个ConfigurationOptions 对象来建立的。
链接字符串能够是以逗号分割的多个服务的节点, 咱们仅仅须要链接一个在本地计算机中的redis服务,redis服务的默认端口是6379.redis
using StackExchange.Redis;
...
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
// ^^^ store and re-use this!!!shell
注意 : ConnectionMultiplexer 实现了IDisposable接口当咱们再也不须要是能够将其释放的 , 这里我故意不使用 using 来释放他。 简单来说建立一个ConnectionMultiplexer是十分昂贵的 , 一个好的主意是咱们一直重用一个ConnectionMultiplexer对象。
一个复杂的的场景中可能包含有主从复制 , 对于这种状况,只须要指定全部地址在链接字符串中(它将会自动识别出主服务器)
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379");数据库
假设这里找到了两台主服务器,将会对两台服务进行裁决选出一台做为主服务器来解决这个问题 , 这种状况是很是罕见的 ,咱们也应该避免这种状况的发生。api
如今你已经拥有了一个 ConnectionMultiplexer , 下面三件事情多是你想要作的。安全
1. 访问数据库。(注意在使用集群的状况下,一个数据库可能会分部在多个节点中)
2. 使用redis的发布订阅功能
3. 维护和监控一台服务器服务器
访问数据库
访问数据库的操做很是简单:异步
IDatabase db = redis.GetDatabase();async
GetDatabase 返回一个IDatabase接口。 注意 redis容许配置多个数据库,能够在调用GetDatabase() 时候指定数据库.另外,若是你计划使用异步的api , Task.AsyncState 必须拥有一个值 ,也能够这样指定。this
int databaseNumber = ...
object asyncState = ...
IDatabase db = redis.GetDatabase(databaseNumber, asyncState);.net
如今你已经拥有了一个 IDatabase 对象 , 他能够对redis数据库进行操做。全部的方法都有同步和异步两个版本 , 按照微软的命名约定 ,全部的异步方法都以Async结尾。
最简单的操做 存储和获取一个值 。
string value = "abcdefg";
db.StringSet("mykey", value);
...
string value = 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 支持全部的 redis shell命令, 具体能够参考redis官网。