1.Stirng
前言:需引用包
//连接Radis
using (IRedisClient client=new RedisClient("127.0.0.1",6379))
{
#region 单个操作
//新增key
client.Set<string>("name", "Lin");
//读取1
var name=client.Get<string>("name");
Console.WriteLine(name);
//读取2
var values=client.GetValue("name");
Console.WriteLine(Newtonsoft.Json.JsonConvert.DeserializeObject<string>(values));
#endregion
#region 批量操作
Dictionary<string, string> dicv = new Dictionary<string, string>();
dicv.Add("name","Lin");
dicv.Add("sex", "男");
dicv.Add("address", "东莞");
//批量写
client.SetAll(dicv);
//批量读
IDictionary<string,string> list=client.GetAll<string>(new string[] { "name","sex","address"});
foreach (var item in list)
{
Console.WriteLine(item.Value);
}
#endregion
#region 设置过期时间
//创建一个key/value到redis数据库只保存10秒
client.Set<string>("name", "Lin",TimeSpan.FromSeconds(10));
Console.WriteLine(client.Get<string>("name"));
//等待
//Task.Delay(1*1000).Wait();
Thread.Sleep(10000);
Console.WriteLine(client.Get<string>("name"));
//设置指定日期过期
//指定在明天的这个时候过期
client.Set<string>("age","18",DateTime.Now.AddDays(1));
#endregion
#region 追加值
client.Set<int>("age",18 );
Console.WriteLine(client.Get<int>("age"));
client.SetValue("age","19");//修改值
Task.Delay(1 * 1000).Wait();//等待
Console.WriteLine(client.Get<int>("age"));
client.Set<string>("name", "Lin");
Console.WriteLine(client.Get<string>("name"));
client.AppendTo("name","Bao");//追加值
client.AppendToValue("name","Yong");
Console.WriteLine(client.Get<string>("name"));
#endregion
#region 获取之前的值,增加新值
client.Set<string>("Sex", "男");
var sex = client.GetAndSetValue("Sex", "女");//获取之前的值,增加新值
Console.WriteLine(JsonConvert.DeserializeObject(sex));
Console.WriteLine(client.Get<string>("Sex"));
#endregion
#region 自增自减
//自增
var a=client.Increment("count", 1);
client.Increment("count", 1);
client.Increment("count", 1);
Console.WriteLine(client.Get<int>("count"));//3
client.IncrementValueBy("count", 100);
Console.WriteLine(client.Get<int>("count"));//103
//自减
client.Decrement("count",10);
Console.WriteLine(client.Get<int>("count"));//93
#endregion
#region add/set
//Add添加字段时会先验证,如果已存在就为False,不存在则为True添加成功
Console.WriteLine(client.Add<string>("name", "Lin"));//True
Console.WriteLine(client.Add<string>("name", "Lin"));//False
//直接替换值
Console.WriteLine(client.Set("age", 18));
Console.WriteLine(client.Set("age", 19));
Console.WriteLine(client.Set("age", 20));
#endregion
//扩展
//判断Redis数据库是否存在这个key
client.Add<string>("name", "Lin");
Console.WriteLine(client.ContainsKey("age"));
//获取类型
client.GetEntryType("name");
}
2.List
using (IRedisClient clien = new RedisClient("127.0.0.1", 6379))
{
//清空
clien.FlushDb();
#region 顺序添加
ListInfo zhangsan = new ListInfo() { ID = "001", Name = "张三", Age = 18 };
ListInfo lisi = new ListInfo() { ID = "002", Name = "李四", Age = 18 };
ListInfo wanwu = new ListInfo() { ID = "003", Name = "王五", Age = 18 };
clien.AddItemToList("list", JsonConvert.SerializeObject(zhangsan));
clien.AddItemToList("list", JsonConvert.SerializeObject(lisi));
clien.AddItemToList("list", JsonConvert.SerializeObject(wanwu));
#endregion
#region 从左侧向List添加(追加,后面)
ListInfo zhaoliu = new ListInfo() { ID = "004", Name = "赵六", Age = 18 };
clien.PushItemToList("list", JsonConvert.SerializeObject(zhaoliu));
#endregion
#region 从右侧向List添加(前面)
ListInfo zhaoqi = new ListInfo() { ID = "005", Name = "赵七", Age = 18 };
clien.PrependItemToList("list", JsonConvert.SerializeObject(zhaoqi));
#endregion
#region 先读取再移除
//从头部先获取,再从尾部移除(一次一个)
clien.RemoveEndFromList("list");//返回结果并移除
//从头部先获取,再从头部移除(一次一个)
clien.RemoveStartFromList("list");//返回结果并移除
#endregion
#region 从原先的list尾部开始移除,添加到新list中(一次一个)
clien.PopAndPushItemBetweenLists("list", "newlist");
#endregion
#region 设置list过期时间 (行不通)
//Console.WriteLine(clien.GetListCount("list"));
设置list过期时间
//clien.ExpireEntryAt("list", DateTime.Now.AddSeconds(3));//3秒
//System.Threading.Thread.Sleep(4);
//Console.WriteLine(clien.GetListCount("list"));
#endregion
#region 按下标查询(多少-多少之间的值)
clien.AddRangeToList("lists",new List<string>(){ "001","002","003"});
var lists=clien.GetRangeFromList("lists",1,2);
foreach (var item in lists)
{
Console.WriteLine(item);
}
#endregion
//获取当前key的过期时间
clien.GetTimeToLive("list");
//根据list集合下标修改对应值
clien.SetItemInList("list",0,"aaa");
}
class ListInfo
{
public ListInfo(string id,string name,int age) {
id = ID;
name = Name;
age = Age;
}
public ListInfo() {
}
public string ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
3.Hash
using (IRedisClient clien = new RedisClient("127.0.0.1", 6379)) {
//清空redis库
clien.FlushDb();
string hashId = "Info";
//新增
clien.SetEntryInHash(hashId,"name","Lin");
clien.SetEntryInHash(hashId, "age", "18");
//查询
System.Console.WriteLine(clien.GetValueFromHash(hashId, "name"));
System.Console.WriteLine(clien.GetValueFromHash(hashId, "age"));
//批量操作
Dictionary<string, string> dic = new Dictionary<string, string>(); ;
dic.Add("address", "dg");
dic.Add("count", "199");
clien.SetRangeInHash(hashId, dic);
//批量查询
var values=clien.GetAllEntriesFromHash(hashId);
foreach (var item in values)
{
Console.WriteLine(item.Key+":"+item.Value);
}
//先判断Hash集合里面是否已存在该key,如果存在就为False添加失败,不存在则为True添加成功
clien.SetEntryInHashIfNotExists(hashId,"name","Bao");
#region Hash存储对象
//Hash集合存储对象
//clien.StoreAsHash<HashInfo>(new HashInfo() { ID="001",Name="Lin",Age=18});
//获取hash对象中的某一个值
//Console.WriteLine(clien.GetFromHash<HashInfo>("001").Name);
#endregion
#region 读取Hash中Key的数量/Hash中的key/Hash中的Value/删除
//读取key数量
Console.WriteLine(clien.GetHashCount(hashId));
//读取key
var keys=clien.GetHashKeys(hashId);
foreach (var item in keys)
{
Console.WriteLine(item.Trim());
}
//读取value
var vals = clien.GetHashValues(hashId);
foreach (var item in vals)
{
Console.WriteLine(item.Trim());
}
//删除
clien.RemoveEntryFromHash(hashId, "count");
//判断hash中是否存在对应key
clien.HashContainsEntry(hashId,"count");
#endregion
#region Hash自增
//Dictionary<string, string> dic = new Dictionary<string, string>(); ;
//dic.Add("address", "dg");
//dic.Add("count", "199");
//clien.SetRangeInHash(hashId, dic);
Hash自增
//clien.IncrementValueInHash(hashId,"count",1);
//Console.WriteLine(clien.GetValueFromHash(hashId,"count"));
#endregion
}
class HashInfo
{
public string ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
4.set/zset
using (IRedisClient clien=new RedisClient("127.0.0.1",6379))
{
clien.FlushDb();
//set集合自动去重复数据
var libai=new SetInfo() { ID="001",Name="李白"};
//如此两条数据只会存进一条
clien.AddItemToSet("Setid", JsonConvert.SerializeObject(libai));
clien.AddItemToSet("Setid", JsonConvert.SerializeObject(libai));
Console.WriteLine(clien.GetSetCount("Setid"));
//批量添加
clien.AddRangeToSet("Setids", new List<string>() { "001", "002","003","004" });
//查询(随机排序)
var valSet=clien.GetAllItemsFromSet("Setids");
foreach (var item in valSet)
{
Console.WriteLine(item.Trim());
}
//随机抽奖
//随机获取集合中的任意一个元素值
Console.WriteLine(clien.GetRandomItemFromSet("Setids"));
//随机删除集合中的元素,并返回值
var deleteval=clien.PopItemFromSet("Setids");
Console.WriteLine(deleteval );
//移除指定元素
clien.RemoveItemFromSet("Setids","001");
//从原先的set集合中指定一个元素移除,创建一个新的set集合,把从原先集合移除的元素添加到新的集合中
clien.MoveBetweenSets("Setids", "newSetids", "001");
#region 交叉互补
clien.AddRangeToSet("a",new List<string>() { "002","004", "006", "008" });
clien.AddRangeToSet("b", new List<string>() { "001", "004", "003", "006" });
//获取连个集合中共同有的元素
var a=clien.GetIntersectFromSets("a","b");
foreach (var item in a)
{
Console.WriteLine(item);
}
//获取两个集合中不共同拥有的元素
var b=clien.GetUnionFromSets("a","b");
foreach (var item in b)
{
Console.WriteLine(item);
}
#endregion
#region Zset
//zset在自动去重的基础上,增加了自动排序
//添加(且自动排序)
clien.AddItemToSortedSet("zsetid", "a",10);
clien.AddItemToSortedSet("zsetid", "b",80);
clien.AddItemToSortedSet("zsetid", "c",50);
//批量操作
clien.AddRangeToSortedSet("zsetids", new List<string>() { "aa", "bb" }, 100);
//顺序查询
clien.GetAllItemsFromSortedSet("zsetids");
//倒序查询
clien.GetAllItemsFromSortedSetDesc("zsetids");
//根据下标获取
//只获取key值
clien.GetRangeFromSortedSetDesc("zsetid", 1,2);
//获取返回key/value值
clien.GetRangeWithScoresFromSortedSet("zsetid", 1, 2);
clien.AddItemToSortedSet("f", "a", 10);
clien.AddItemToSortedSet("f", "b", 80);
clien.AddItemToSortedSet("g", "a", 10);
clien.AddItemToSortedSet("g", "b", 80);
clien.AddItemToSortedSet("g", "c", 50);
clien.AddItemToSortedSet("h", "b", 50);
//创建一个新zset集合,把多个zset集合中相同key的元素,复制到新zset之中
clien.StoreIntersectFromSortedSets("newzset", "a", "g", "h");//只会复制b元素到新zset之中
#endregion
}
class SetInfo
{
public string ID { get; set; }
public string Name { get; set; }
public string address { get; set; }
}