StackExchange.Redis是一款免费的操作Redis的客户端工具,我们使用这个库来简单的学习下Redis的一些基本操作
Redis默认安装好后的端口是6379
密码可以自己设置,使用命令修改
config get requirepass //获取当前密码
config set requirepass "yourpassword"//设置当前密码
代码里需引用StackExchange.Redis
使用ConnectionMultiplexer来进行连接Redis,参数为连接的地址,端口,密码
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379,password=123456")
连接好后就可以获取IDatabase来进行操作
IDatabase db = redis.GetDatabase();
下面就可以操作了,StackExchange.Redis其实都提供了异步的方法,我们这里就讲下同步方法的例子其实差不多的,就是异步方法时Async结尾的.
我们先来讲下String类型的基本操作吧
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379,password=123456"))
{
IDatabase db = redis.GetDatabase();
//设置string类型的key的值
db.StringSet("Name", "abc");
//设置string类型的key的值 带过期时间
db.StringSet("Id", "123",TimeSpan.FromSeconds(3));
//以KeyValuePair数组形式批量写入
var keyvp1 = new KeyValuePair<RedisKey, RedisValue>("name1", "Jhon");
var keyvp2 = new KeyValuePair<RedisKey, RedisValue>("name2", "Lilei");
var keyvp3 = new KeyValuePair<RedisKey, RedisValue>("name3", "Jim");
KeyValuePair<RedisKey, RedisValue>[] values = { keyvp1, keyvp2, keyvp3 };
db.StringSet(values);
//--------- 读取方法操作-------------------------
//读取单个key的值
string Name = db.StringGet("Name");
string Id = db.StringGet("Id");
//批量读取key的值
RedisKey[] rkarray = { "name1", "name2", "name3" };
RedisValue[] rvarray = db.StringGet(rkarray);
foreach (var item in rvarray)
{
MessageBox.Show(item);
}
}
List的基本操作
对于List的操作,Redis比较特殊,Redis的List是双向队列
数据可以从队首和队尾压栈和出栈 ,压栈ListLeftPush,ListRightPush,出栈ListLeftPop,ListRightPop
获取此List中所有数据ListRange,获取List中的个数ListLength
List也支持批量插入
//对list类型的操作
if (!this.checkBox1.Checked)
{
db.ListLeftPush("id", textBox1.Text);
}
else
{
db.ListRightPush("id", textBox1.Text);
}
RedisValue[] arr = { "a", "b", "c" };//批量插入
db.ListRightPush("id", arr);
if (!this.checkBox1.Checked)
{
db.ListLeftPop("id");
}
else
{
db.ListRightPop("id");
}
可以利用Redis的List这一特性作为消息队列来试用