Redis学习

Redis学习

Redis
User类
class User
    {
        public string ID { get; set; }
        public string Name { get; set; }
        public string Address { get; set; }
    }
引用
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Newtonsoft.Json; //需要nuget包引入Newtonsoft
using ServiceStack.Redis; 
1.redis 单个值存取读取
    using (IRedisClient client = new RedisClient("127.0.0.1", 6379))
            {
                //删除当前数据库中的所有Key
                client.FlushDb();
                Console.WriteLine("0k");
                     //新增key 默认的是做了序列化存储
                client.Set<string>("name", "clay");
                //读取 一般不建议使用 会显示双引号
                var values = client.GetValue("name");
                Console.WriteLine(values);
                //推荐使用,帮助我们反序列化
                var values1 = client.Get<string>("name");
                Console.WriteLine(values1);

                var values2 = client.GetValue("name");
                Console.WriteLine(JsonConvert.DeserializeObject<string>(values2));
    }
2 批量操作
using (IRedisClient client = new RedisClient("127.0.0.1", 6379))
            {
       //删除当前数据库中的所有Key
                client.FlushDb();
                Console.WriteLine("0k");
             var dics = new Dictionary<string, string>();
                dics.Add("id", "001");
                dics.Add("name", "clacy");
                dics.Add("address", "南京");
                client.SetAll(dics);
                //批量读取
                var a = client.GetAll<string>(new string[] { "id", "name", "address" });
                foreach (var d in a)
                {
                  Console.WriteLine(d);
                }
    }
3 设置过期时间
using (IRedisClient client = new RedisClient("127.0.0.1", 6379))
{
       //删除当前数据库中的所有Key
                client.FlushDb();
                Console.WriteLine("0k");
            client.Set<string>("name", "clay", TimeSpan.FromSeconds(1));
            Task.Delay(1 * 1000).Wait();
            //如果读取不到则返回一个""
            Console.WriteLine(client.Get<string>("name"));

            //设置特点的过期时间
            //指定在明天的这个时候过期
            client.Set<string>("age", "18", DateTime.Now.AddDays(1));
    }
4 追加
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){

   //删除当前数据库中的所有Key
                client.FlushDb();
                Console.WriteLine("0k");
   //client.AppendTo("Name", "I");
            //Console.WriteLine(client.Get<string>("Name"));
            //client.AppendTo("Name", " Love");
            //client.AppendTo("Name", "   YOU");
    }
5 获取之前的值,然后赋新值
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
    //删除当前数据库中的所有Key
                client.FlushDb();
                Console.WriteLine("0k");
          client.Set("name", "clay");
            var values = client.GetAndSetValue("name", "clay1");
            Console.WriteLine(JsonConvert.DeserializeObject<string>(values));
            Console.WriteLine("新值"+client.GetValue("name"));
    }
6 自增自减
  //自增
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
    //删除当前数据库中的所有Key
                client.FlushDb();
                Console.WriteLine("0k");
           var a = client.Increment("Count", 1);
           client.Increment("Count", 1);
            client.Increment("Count", 1);
           client.IncrementValueBy("Count", 100);
            Console.WriteLine(client.Get<int>("Count"));
           自减
            var b= client.Decrement("countb", 1);
            Console.WriteLine(b);
            Console.WriteLine(client.Get<int>("countb"));
    }
          
7 add和set的区别
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
    //删除当前数据库中的所有Key
                client.FlushDb();
                Console.WriteLine("0k");
                 //新增的时候,是判断,如果之前的又key存在。则新增失败,如果不存在,则新增才可以成功
            Console.WriteLine(client.Add<string>("name", "clay"));
            Console.WriteLine(client.Add<string>("name", "clay666"));
            //直接替换值
            Console.WriteLine(client.Set("name", 18));
            Console.WriteLine(client.Set("name", 19));
            Console.WriteLine(client.Set("name", 20));

            //扩展的
            //判断数据库中是否存在key
            Console.WriteLine(client.ContainsKey("name"));
            Console.WriteLine(client.ContainsKey("abc"));

            //当前这个key是那种类型
            client.Set<string>("name", "clay");
            client.AddItemToList("list", "123");
            var type = client.GetEntryType("list");
            Console.WriteLine(type);
    }
8 add和set的区别
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
    //删除当前数据库中的所有Key
                client.FlushDb();
                Console.WriteLine("0k");
                 //新增的时候,是判断,如果之前的又key存在。则新增失败,如果不存在,则新增才可以成功
            Console.WriteLine(client.Add<string>("name", "clay"));
            Console.WriteLine(client.Add<string>("name", "clay666"));
            //直接替换值
            Console.WriteLine(client.Set("name", 18));
            Console.WriteLine(client.Set("name", 19));
            Console.WriteLine(client.Set("name", 20));

            //扩展的
            //判断数据库中是否存在key
            Console.WriteLine(client.ContainsKey("name"));
            Console.WriteLine(client.ContainsKey("abc"));

            //当前这个key是那种类型
            client.Set<string>("name", "clay");
            client.AddItemToList("list", "123");
            var type = client.GetEntryType("list");
            Console.WriteLine(type);
    }
Hash操作
9.Hash操作
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
  string hashid = "stu";
            client.SetEntryInHash(hashid, "name", "zhansan");
            Console.WriteLine(client.GetValueFromHash(hashid, "name"));

            client.SetEntryInHash(hashid, "id", "0001");
            Console.WriteLine(client.GetValueFromHash(hashid, "iddd"));

            client.SetEntryInHash(hashid, "age", "18");
            Console.WriteLine(client.GetValueFromHash(hashid, "age"));


             //   批量的操作
             Dictionary<string, string> stu = new Dictionary<string, string>();
            stu.Add("name", "zhangsan");
                stu.Add("id", "zhangsan");
                client.SetRangeInHash(hashid, stu);
                //批量读取
                var dic = client.GetAllEntriesFromHash(hashid);
                foreach (var item in dic)
                {
                    Console.WriteLine(item.Key + ";" + item.Value);
                }
                //     如果我们hash集合中已经存在了相同的k / v的时候,则新增失败,返回false,否则可以新增成功
                Console.WriteLine(client.SetEntryInHashIfNotExists(hashid, "name", "clay"));
                Console.WriteLine(client.SetEntryInHashIfNotExists(hashid, "name", "clay2"));
                //用户信息..首先把对象做一个json序列化,然后存储在redis的string类型里面,
                //   如果我们需要改变这个对象的其中一个属性值得时候,先把这个对象json字符串读取出来反序列化,
                // 然后修改属性值,修改完成之后,在继续序列化存储进去

                client.StoreAsHash<User>(new User { ID = "001", Name = "qjw", Address = "长沙" });
                Console.WriteLine(client.GetFromHash<User>("001").Address);
}



10.读取hash里面key总数
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
  Dictionary<string, string> stu = new Dictionary<string, string>();

                stu.Add("name", "zhangsan");
                stu.Add("id", "001");
                client.SetRangeInHash(hashid, stu);
                Console.WriteLine(client.GetHashCount(hashid));
}
11 读取hash里面所有的key值与所有的value\
	using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
  Dictionary<string, string> stu = new Dictionary<string, string>();

                stu.Add("name", "zhangsan");
                stu.Add("id", "001");
                client.SetRangeInHash(hashid, stu);
                var key = client.GetHashKeys(hashid);
                foreach (var item in key)
                {
                    Console.WriteLine(item);

                }
                var values = client.GetHashValues(hashid);
                foreach (var item in values)
                {
                    Console.WriteLine(item);

                }
}
12 删除hash数据中的key的数据
	using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
    string hashid = "stu";
                Dictionary<string, string> stu = new Dictionary<string, string>();

                stu.Add("name", "zhangsan");
                stu.Add("id", "001");
                client.SetRangeInHash(hashid, stu);
                var key = client.RemoveEntryFromHash(hashid, "id");
                Console.WriteLine(client.GetHashCount(hashid));
}
13 判断hashid数据集中是否存在key的数据
	using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
    string hashid = "stu";
Dictionary<string, string> stu = new Dictionary<string, string>();
                stu.Add("name", "zhangsan");
                stu.Add("id", "001");
                client.SetRangeInHash(hashid, stu);
                var key = client.RemoveEntryFromHash(hashid, "id");
                Console.WriteLine(client.HashContainsEntry(hashid, "id"));
                Console.WriteLine(client.HashContainsEntry(hashid, "name"));
}

15 顺序添加
	using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
    string hashid = "stu";
                var caocao = new User() { ID = "001", Name = "曹操" };
                client.AddItemToList("list", JsonConvert.SerializeObject(caocao));
                var libai = new User() { ID = "001", Name = "李白" };
                client.AddItemToList("list", JsonConvert.SerializeObject(libai));
                var dingwei = new User() { ID = "001", Name = "丁伟" };
                client.AddItemToList("list", JsonConvert.SerializeObject(dingwei));

           
             
}

16 从前面向list添加 追加
	using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
    string hashid = "stu";
  
                var liubei = new User() { ID = "001", Name = "刘备" };
                client.PrependItemToList("list", JsonConvert.SerializeObject(liubei));

           
             
}

17 从后面向list添加 追加
	using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
    string hashid = "stu";
  
    var liubei1 = new User() { ID = "001", Name = "刘备11" };
                client.PushItemToList("list", JsonConvert.SerializeObject(liubei1));
                Console.WriteLine(client.GetListCount("list"));
                client.ExpireEntryAt("list", DateTime.Now.AddSeconds(20));
                Task.Delay(10 * 1000).Wait();
                Console.WriteLine(client.GetListCount("list"));             
}

18 从后面向list添加 追加
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
    string hashid = "stu";
  
   var liubei1 = new User() { ID = "001", Name = "刘备11" };
                client.PushItemToList("list", JsonConvert.SerializeObject(liubei1));
                Console.WriteLine(client.GetListCount("list"));
                client.ExpireEntryAt("list", DateTime.Now.AddSeconds(20));
                Task.Delay(10 * 1000).Wait();
                Console.WriteLine(client.GetListCount("list"));     
} 


19.批量操作
 using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
    string  client.AddRangeToList("list", new List<string>() { "001", "002", "003" });
                var a = client.GetRangeFromList("list", 0, 1);//下标0开始读 读到下表为1的     就是一个List集合 需要遍历打印值
                Console.WriteLine(a);
                foreach (var item in a)
                {
                    Console.WriteLine(item);
                }
                // 实际效果打印 001 002 = "stu";
  
} 
 

20 list 栈操作,后进先出
 using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
var caocao = new User() { ID = "001", Name = "曹操" };
                client.AddItemToList("list", JsonConvert.SerializeObject(caocao));
                var libai = new User() { ID = "001", Name = "李白" };
                client.AddItemToList("list", JsonConvert.SerializeObject(libai));
                var dingwei = new User() { ID = "001", Name = "丁伟" };
                client.AddItemToList("list", JsonConvert.SerializeObject(dingwei));
          //      移除尾部,并返回结果
                Console.WriteLine(client.RemoveEndFromList("list"));
                Console.WriteLine(client.RemoveEndFromList("list"));
                Console.WriteLine(client.RemoveEndFromList("list"));
            //    移除尾部,并返回结果
                Console.WriteLine(client.RemoveStartFromList("list"));
                Console.WriteLine(client.RemoveStartFromList("list"));
                Console.WriteLine(client.RemoveStartFromList("list"));
  
} 
21 扩展
 using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
     client.FlushDb();
                Console.WriteLine("0k");
              //  从一个list得到尾部移除一个元素,然后把这个数据添加到另一个list的头部,并返回移动的值
     //          从之前的集合移除,然后新增到一个新的集合的头部了
                Console.WriteLine(client.PopAndPushItemBetweenLists("list", "newlist"));
                Console.WriteLine(client.PopAndPushItemBetweenLists("list", "newlist"));
                //获取当前key,的过期时间
                Console.WriteLine(client.GetTimeToLive("list"));
                //根据下标修改值
                client.SetItemInList("list", 0, "aaaa");
  
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值