zoukankan      html  css  js  c++  java
  • c# 使用 Redis

    1.安装Redis

      我是在Windows上安装redis的,Redis官网我只看到linux版本的,得使用别人提供的windows版本

      菜鸟教程提供的redis下载地址:https://github.com/MSOpenTech/redis/releases

      新建一个文件夹D: edis解压进去,并添加环境变量

      cmd运行以下命令打开redis服务

    redis-server.exe redis.windows.conf

      再打开一个cmd,进行缓存操作

      连接服务

    redis-cli.exe -h 127.0.0.1 -p 6379

      set

    set city Shanghai

      get

    get city

      到这了已经对redis有了最初步的了解

      常用命令:

    获取所有key:keys *
    插入队列:publish 队列名 value
    获取队列的数据:lrange 队列名 0 -1 (从第0条开始,到-1表示最后一条)

    2.使用c#连接redis

      新建一个控制台项目

      添加nuget包:ServiceStack.Redis(有很多包,自己看着下),我刚开始下载以下版本

      

      出现这四个dll就没错

      

      跑一下

        class Program
        {
            static RedisClient redisClient = new RedisClient("127.0.0.1", 6379);//redis服务IP和端口
            static void Main(string[] args)
            {
                Console.WriteLine(redisClient.Get<string>("city"));
                Console.ReadKey();
            }
        }

       后面发现,网上使用的最多的包是 StackExchange.Redis ,就换上这个了,展示一下这个包的操作

            static ConnectionMultiplexer redisClient = ConnectionMultiplexer.Connect("localhost");
            static void Main(string[] args)
            {
                IDatabase db = redisClient.GetDatabase();
                // Set
                db.StringSet("city", "汕尾");
                // Get
                db.StringGet("city");
                int age = (int)db.StringGet("age");
                // 删除
                db.KeyDelete("city");
    
    
                // 监听消息队列messages
                ISubscriber sub = redisClient.GetSubscriber();
                sub.Subscribe("messages", (channel, message) =>
                {
                    Console.WriteLine((string)message);
                });
                // 进队
                for (int i = 1; i < 10; i++)
                {
                    Thread.Sleep(1000);
                    sub.Publish("messages", "hello" + i);
                }
                Console.ReadLine();
            }

      接下来我们写一下api返回的json缓存

    using Newtonsoft.Json;

      接口例子:

            [HttpGet("{id}")]
            public ResultModel<DataTable> Get(int id)
            {
                if (db.KeyExists($"user_id_{id}"))// 有缓存获取缓存
                    return JsonConvert.DeserializeObject<ResultModel<DataTable>>(db.StringGet($"user_id_{id}"));// 反序列化
    
                string sql = $@"
    SELECT * from tb_user s where s.ID=@id
    ";
                var param = new List<DbParam>();
                param.Add(new DbParam("id", id,DbType.Int32));
                var dtRes = _dBHelper.Query(sql,param);
                if (dtRes.Success == false)
                    return new ResultModel<DataTable>().SetError(dtRes.Msg);
                db.StringSet($"user_id_{id}", JsonConvert.SerializeObject(dtRes).ToString()); // 序列化成字符串
                return dtRes;
            }

      

      

  • 相关阅读:
    [HEOI2016/TJOI2016]树
    luogu P4198 楼房重建
    [USACO11DEC]Umbrellas for Cows
    luogu P2700 逐个击破
    一、MegaCli命令介绍
    dmidecode -t1 | egrep "Manufacturer|Product Name"
    IPMITOOL常用操作指令V1.0
    CentOS 7上的性能监控工具
    Could not open device at /dev/ipmi0
    n95医用口罩(常见型号1860 或者9132)防水无呼吸阀
  • 原文地址:https://www.cnblogs.com/wskxy/p/11038692.html
Copyright © 2011-2022 走看看