一、Redis数据类型操作之String
一、准备
- 本地或者远端服务器安装Redis
- 安装Redis Desktop Manager软件,进行可视化数据操作
- 新建的项目中,引入ServiceStack.Redis.dll
二、链接Redis
操作Redis过程中,都在Using语句块中就行操作
第一个参数为ip;第二个参数为端口号;第三个参数为密码验证;第四个参数为选择的db
using (RedisClient client = new RedisClient("127.0.0.1", 6379, "123456", 0))
{
}
三、删除Key数据
-
删除当前数据库中的key
client.FlushDb();
-
删除所有数据库中的key
client.FlushAll();
四、插入和读取单个Key的值
client.Set<string>("name", "夏明翰");
Console.WriteLine("错误输出");
Console.WriteLine(client.GetValue("name"));//"夏明翰"----带双引号
Console.WriteLine(JsonConvert.DeserializeObject<string>(client.GetValue("name")));//夏明翰
Console.WriteLine("正确输出");
Console.WriteLine(client.Get<string>("name"));//夏明翰
Console.WriteLine(JsonConvert.DeserializeObject<string>(client.GetValue("name")));//夏明翰
五、批量插入和读取Key的值
//批量的写入redis key
client.SetAll(new Dictionary<string, string> { { "id", "001" }, { "name", "clay" } });
//批量读取内存中多个key的结果 如果我们获取的key不存在,程序会返回一个空的字符串
var getall = client.GetAll<string>(new string[] { "id", "name", "number" });
foreach (var item in getall)
{
Console.WriteLine(item);
}
六、设置过期时间
client.Set<string>("name", "夏明翰", TimeSpan.FromSeconds(1));
Task.Delay(1 * 1000).Wait();
Console.WriteLine(client.Get<string>("name"));
client.Set<string>("name", "夏明翰", DateTime.Now.AddSeconds(1));//一秒钟后过期
//client.Set<string>("name", "夏明翰", DateTime.Now.AddMonths(15));
Console.WriteLine("刚写进去的结果");
Console.WriteLine(client.Get<string>("name"));
Task.Delay(1 * 1000).Wait();
Console.WriteLine("1秒钟之后的结果");
Console.WriteLine(client.Get<string>("name"));//读取不到值
client.Set<string>("name", "夏明翰", TimeSpan.FromSeconds(10));
Task.Delay(1 * 1000).Wait();
Console.WriteLine(client.Get<string>("name"));
七、Key的Value值追加
client.AppendToValue("name", "你");
client.AppendToValue("name", "是");
client.AppendToValue("name", "英雄");
Console.WriteLine(client.Get<string>("name"));
八、获取Key旧值同时赋值新值
client.Set("name", "夏明翰");
//获取当前key的之前的值,然后把新的结果替换进入
var value = client.GetAndSetValue("name", "李大钊");
Console.WriteLine("原先的值:" + JsonConvert.DeserializeObject<string>(value));
Console.WriteLine("新值:" + client.GetValue("name"));
九、自增
Console.WriteLine(client.Incr("count"));
Console.WriteLine(client.Incr("count"));
Console.WriteLine(client.Incr("count"));
Console.WriteLine("最后的结果"+ client.GetValue("count"));
//每次通过传递的count累计,count就是累加的值
client.IncrBy("count", 2);
Console.WriteLine(client.Get<string>("count"));
client.IncrBy("count", 100);
Console.WriteLine("最后的结果:" + client.GetValue("count"));
十、自减
//给key为count的键默认自减1 ,返回了自减之后的结果
Console.WriteLine(client.Decr("count"));
Console.WriteLine(client.Decr("count"));
Console.WriteLine(client.Decr("count"));
Console.WriteLine("最后的结果:" + client.GetValue("count"));
//通过传入的count去做减法 之前的结果-count
client.DecrBy("count", 2);
Console.WriteLine("最后的结果:" + client.GetValue("count"));
十一、Add和Set的区别
使用add 方法去操作redis的时候,如果key存在的话,则不会再次进行操作 返回false 如果操作成功返回true
Console.WriteLine(client.Add("name", "李太白"));
//用add的时候帮你去判断如果有则不进行操作,如果没有则写,它只能写新值,不能修改
Console.WriteLine(client.Add("name", "杜甫"));
Console.WriteLine(client.Get<string>("name"));
使用set去操作 redis的时候,如果key不存在则写入当前值,并且返回true,通过存在,则对之前的值进行了一个替换,返回操作的结果True或者False
Console.WriteLine(client.Set("name", "杜甫"));
Console.WriteLine(client.Set("name", "李太白"));
Console.WriteLine(client.Get<string>("name"));
本文来自博客园,作者:码农阿亮,转载请注明原文链接:https://www.cnblogs.com/wml-it/p/16483207.html
技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
开源库地址,欢迎点亮:
GitHub:https://github.com/ITMingliang
Gitee: https://gitee.com/mingliang_it
GitLab: https://gitlab.com/ITMingliang
建群声明: 本着技术在于分享,方便大家交流学习的初心,特此建立【编程内功修炼交流群】,为大家答疑解惑。热烈欢迎各位爱交流学习的程序员进群,也希望进群的大佬能不吝分享自己遇到的技术问题和学习心得!进群方式:扫码关注公众号,后台回复【进群】。