C# Radis五类型基本使用操作方法

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; }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用C#连接本地Redis时,你可以使用ServiceStack.Redis客户端库来进行连接和操作。首先,在你的代码中引入相关的命名空间: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; 然后,在你的代码中创建一个RedisClient对象,指定Redis服务器的IP地址和端口号: public static ServiceStack.Redis.RedisClient client = new ServiceStack.Redis.RedisClient("127.0.0.1", 6379); 接下来,你可以使用RedisClient对象进行连接和操作。例如,你可以使用Get方法来读取数据: string name = client.Get<string>("name"); string pwd = client.Get<string>("password"); 你可以使用Set方法来存储数据: client.Set<string>("name1", username.Value); client.Set<string>("password1", userpwd.Value); 这样就可以将用户名和密码存储到Redis中了。 希望这可以帮到你!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [​C#操作redis​](https://blog.csdn.net/qq_45659882/article/details/121958035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [C# 中Redis缓存的使用](https://blog.csdn.net/yicunyangguang/article/details/130981193)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值