tnblog
首页
视频
资源
登录

Redis 数据缓存

5534人阅读 2019/12/5 13:05 总访问:378090 评论:1 收藏:1 手机
分类: .NET MVC


Redis缓存操作(添加缓存,删除缓存,修改缓存)的代码实现


  首先介绍一下:Redis支持五种数据类型:String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)


相关方法:


1.String(字符串):String是resid最基本的类型,一个key对应一个value。String类型是二进制安全的。string中可以包含任何数据。

    set:添加/覆盖一个字符串或者数组类型

    get:获取值

    mget:获取多个key的值

    DECR/INCR:数字类型的数据自增减和自增

2.list(列表):类似java的LinkedList,通过链表来完成。像添加元素速度非常快,但取元素速度非常慢。因此list结构适合大数据量要求插入速度极快的场景。

    rpush:将多个值放入list尾部(右边)

    lpush:将多个值放入list头部(左边)

    lrange:能从左到右实现指定违反的列表

    rpop:从list尾部抽取出一个元素

    lpop:从list头部抽取一个元素

    brpop/blpop:带阻塞的pop命令

    llen:获取list长度

3.Hash(哈希):Redis中hash是一个键值(key=>value)对集合。hash是一个string类型的field和value的映射表,hash特别适合存储对象。

    hset key filed value:给指定的key设置一个字段值,如果值已经存在,则覆盖。返回0表示失败,返回1表示成功。

    hget key filed:获取指定key的field字段的值,如果不存在,返回nil。

    hexists key field:判断指定的key的field字段是否存在,不存在返回0,存在返回1。

    hkeys key:返回key所指定的hash所有的字段名。

    hgetall key:返回所有的字段名和字段值

    hdel key field:删除多个字段值

    hincby key field value:对key指定的hash数据中的field的值进行计算,增加整型value


————————————————

 下面说一下Redis的启用:

 方案:先复制redis服务-->可以在解压的Redis里按住shift键+右键,打开命令窗口到控制台->到该文件的大路径

             接着粘贴复制的名称。或者也可以直接cmd->到控制台,cd:到文件路径。效果如图:

    

             

   复制回车后如图:

      

  到这一步就算是开启Redis啦,下面就可以进行存取删的操作啦!示例如下:

然后再打开Redis里按住shift键+右键,打开命令窗口到控制台 输命令:Redis-cli就可以进行存取的操作了




redis对数据的操作:通过代码实现redis 操作功能:

1,先创建一个控制台应用程序.

  注意:后台操作也需要启用redis服务-->执行命令:redis-server

2,我们要实现redis的依赖注入:工具-->Nu Get包管理器-->程序包管理控制台.

  执行安装依赖的命令:install-package ServiceStack.Redis。


下面我们可以做一个简单的redis的创建和读取。代码如下:

 

static void Main1(string[] args)
        {
            //安装依赖的命令:install-package ServiceStack.Redis
            using (RedisClient redisClient = new RedisClient("localhost:6379"))
            {
                //添加或者修改
                redisClient.Set<string>("city", "aaaa");
                //获取
                string value = redisClient.Get<string>("city");
                Console.WriteLine(value);
            }
            Console.ReadLine();
        }

    例2:针对于list的操作,代码如下:

     

 

 using (RedisClient redisClient = new RedisClient("localhost:6379"))
            {
                //向redis list中添加
                //redisClient.AddItemToList("userList", "aa");
                //redisClient.AddItemToList("userList", "bb");
                //循环添加数据
                //for (int i = 0; i < 10; i++)
                //{
                //    redisClient.AddItemToList("userList", "qq"+i);
                //}
                //获取list
                //string value = redisClient.GetItemFromList("userlist", 0);
                //Console.WriteLine(value);
                //删除
                //redisClient.RemoveItemFromList("userList", "qq4");
                //删除最后一个
                // redisClient.RemoveEndFromList("userList");
                //删除第一个
                // redisClient.RemoveStartFromList("userList");
                //清空,删除一个list里面所有的值
                //redisClient.RemoveAllFromList("userList");
                //遍历list
                //List<string> strlist = redisClient.GetAllItemsFromList("userList");
                //foreach (var item in strlist)
                //{
                //    Console.WriteLine(item);
                //}
                //获取一个范围的list(可以做分页)
                //List<string> strlist = redisClient.GetRangeFromList("userList",0,4);
                //foreach (var item in strlist)
                //{
                //    Console.WriteLine(item);
                //}
                ////向最前面插入一条数据
                //redisClient.PrependItemToList("userList", "ccccc");
                ////向中间某个位置插入数据
                //redisClient.SetItemInList("userList", 5, "aall");
                //创建新的list
                redisClient.Set<string>("userName", "mlyan");
            }
            Console.ReadLine();

    例3:针对Hash的操作,代码如下:

   

using (RedisClient redisClient = new RedisClient("localhost:6379"))
            {
                //添加hash键值对
                //redisClient.SetEntryInHash("userKV", "1000", "王健林");
                //redisClient.SetEntryInHash("userKV", "1001", "马化腾");
                //redisClient.SetEntryInHash("userKV", "1002", "雷军");
                //通过键获取值
                //string value = redisClient.GetValueFromHash("userKV", "1001");
                //Console.WriteLine(value);
                //遍历键值对
                //Dictionary<string, string> keyValuePairs = redisClient.GetAllEntriesFromHash("userKV");
                //foreach (var item in keyValuePairs)
                //{
                //    Console.WriteLine(item.Key + ":" + item.Value);
                //}
                //遍历Key
                //List<string> strList = redisClient.GetHashKeys("userKV");
                //foreach (var item in strList)
                //{
                //    Console.WriteLine(item);
                //}
                Console.WriteLine("-----------------------------");
                //遍历所有的value
                List<string> strlist = redisClient.GetHashValues("userKV");
                foreach (var item in strlist)
                {
                    Console.WriteLine(item);
                }
            }
            Console.ReadLine();





评价
你之所以觉得时间一年比一年过得快,是因为时间对你一年比一年重要。
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术