项目引用(.Net项目,VS)
nuget搜索安装ServiceStack.Redis
接入
IRedisClient:IRedisClient client = new RedisClient();
字符串操作:
client.Set<string>("name","张三"); //设置
client.Get<string>("name"); //获取
client.Set<string>("name","张三",TimeSpan.FromSecond(60)); //设置过期时间为60秒
client.Set<string>("name","张三",DateTime.Now.AddDays(1)); //设置过期时间为当前时间的一日后
client.AppendToValue("name","喜欢打dota"); //字符串追加》》张三喜欢打dota
-------------------------------------------------------------
//获取原来的值然后赋新值 GetAndSetValue()
client.Set("demo","张三");
var str = client.GetAndSetValue("demo","李四"); //str>>张三
client.Get<string>("demo"); //李四
-------------------------------
//增、减
client.Increment("count",1); // "count ":1
client.Increment("count",3); //"count":4
clinet.IncrementValueBy("count",2); //"count":6 IncrementValueBy()等同于Increment()
client.Decrement("count",5); //"count":1 减
Add()与Set():Add():如果key不存在,Add为True,否则false; Set():总是为True,总是在Update
判断key是否存在:
if(client.ContainsKey("key1"))
获取这个key的类型:
client.GetEntryType("key1");
哈希类型操作:
client.SetEntryInHash("stu","name","张三");
client.SetEntryInHash("stu","age","18");
var name = client.GetValueFromHash("stu","name"); //name>>张三
------------------------------------------
//批量
Dictionary<string,string> stu = new Dictionary<string,string>();
stu.Add("name","张三");
stu.Add("age","18");
client.SetRangeInHash("stu",stu);
var dic = client.GetAllEntriesFromHash("stu"); //返回的是一个Dictionary
哈希操作对象:
client.SetEntryInHashIfNotExists("stu","name","张三"); //bool类型
client.StoreAsHash<ModelUser>(new ModelUser{ID="001",Name="张三",Address="sh"});
var name = client.GetFromHash<ModelUser>("001").Address; //name>>sh
如果想修改对象的属性值,可以首先把一个对象进行Json序列化,存储在Redis的String类型里,如果需要改变对象中的一个属性值,先读出Json字符串,反系列化,修改对象属性值,然后在转成Json字符串存储。
Hash的一些其他操作:
var hashId = "user";
Dictionary<string,string> user = new Dictionary<string,string>();
user.Add("name","张三") ;
user.Add("sex","男");
user.Add("age","18");
client.SetRangeInHash(hashId,user);
var count = client.GetHashCount(hashId); //3
var keys = client.GetHashKeys(hashId); //读取所有的field,"name","sex","age"
var values = client.GetHashValues(hashId); //读取所有的values
client.RemoveEntryFromHash(hashId,"age"); //移除"age"
if(client.HashContainsEntry("user","name")) //判断field "name"是否存在
{
}
client.IncrementValueInHash(hashId,"age",2); 自增,age加2
List类型操作
IRedisClient client = new RedisClient("服务器","端口号");
client.AddItemToList("ListA",JsonConvert.SerializeObject(modelA)); //顺序添加
client.PushItemToList("ListA",JsonConvert.SerializeObject(modelB)); //追加
client.PrependItemToList("ListA",JsonConvert.SerializeObject(modelC)); //插队加,前头加
client.ExpireEntryAt("ListA",DateTime.Now.AddSecond(10)); //设置过期时间为当前十秒后
client.GetListCount("ListA"); //获取行数
//批量操作
client.AddRangeToList("list",new List<string>{"a","b","c"}); //批量添加
var values = client.GetRangeFromList("list",0,1); //根据下标查询,values:"a","b"
//从一个list的尾部移除一个元素,把这个元素添加到另一个list的头部,并返回这个元素
client.PopAndPushItemBetweenLists("list","newList");
client.RemoveEndFromList("list"); //移除并返回尾部
client.RemoveStartFromList("list"); //移除并返回头部
client.GetTimeToLive("list"); // 获取当前key的过期时间
client.SetItemInList("list",0,"abc"); //根据下表修改value
待续...洗漱睡觉