一、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"));
posted @ 2022-07-16 00:40  码农阿亮  阅读(236)  评论(0编辑  收藏  举报