Signalr WebApi客服-客户链接+Redis(集群扩展)

Posted 小宋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Signalr WebApi客服-客户链接+Redis(集群扩展)相关的知识,希望对你有一定的参考价值。

一、扩展Redis集群

1、安装CSRedisCore 3.3.0

2、访问

 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace DemoCore.Controllers
{
    [Route("api/[controller]/[action]")]  //Api控制器
    [ApiController]
    public class HomeController : Controller
    {
        private ILogger _logger;
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }

        // GET: api/<controller>
        [HttpGet]
        public IEnumerable<string> Get()
        {
            var csredis = new CSRedis.CSRedisClient(null,
            "127.0.0.1:6379,defaultDatabase=11,poolsize=10,ssl=false,writeBuffer=10240,prefix=btkey_",
            "120.79.21.96:6379,defaultDatabase=14,poolsize=13,ssl=false,writeBuffer=10240,prefix=key_");
            //实现思路:根据key.GetHashCode() % 节点总数量,确定连向的节点
            //也可以自定义规则(第一个参数设置)
            //初始化 RedisHelper
            RedisHelper.Initialization(csredis);
            RedisHelper.Set("name1", "祝雷1");//设置值。默认永不过期
            RedisHelper.Set("name2", "祝雷2");//设置值。默认永不过期
            RedisHelper.Set("name1", "祝雷11");//设置值。默认永不过期
            RedisHelper.Set("name2", "祝雷22");//设置值。默认永不过期
            RedisHelper.Set("name", "祝雷");//设置值。默认永不过期

            string str=RedisHelper.Get("name");//取值

            _logger.LogInformation("测试一下,不要紧张!");
            return new string[] { "value1", "value2" };
        }
    }
}

 二、优化

1、appsettings.json

代码如下:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "CsRedisConfig": {
    "ZoneConnectString": [
      "127.0.0.1:6379,defaultDatabase=11,poolsize=10,ssl=false,writeBuffer=10240,prefix=btkey_",
      "120.79.21.96:6379,defaultDatabase=14,poolsize=13,ssl=false,writeBuffer=10240,prefix=key_"
    ]
  }
}

2、Startup.cs文件

 代码如下:

            #region redis分区模式
            //使用appsettings.json,分区模式
            string[] zoneValues = Configuration.GetSection("CsRedisConfig:ZoneConnectString").Get<string[]>();
            CSRedisClient csredis = new CSRedis.CSRedisClient(null, zoneValues);
            //初始化 RedisHelper
            RedisHelper.Initialization(csredis);
            #endregion

3、使用方式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace DemoCore.Controllers
{
    [Route("api/[controller]/[action]")]  //Api控制器
    [ApiController]
    public class HomeController : Controller
    {
        private ILogger _logger;
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
        // GET: api/<controller>
        [HttpGet]
        public IEnumerable<string> Get()
        {
            RedisHelper.Set("name1", "祝雷1");//设置值。默认永不过期
            RedisHelper.Set("name2", "祝雷2");//设置值。默认永不过期
            RedisHelper.Set("name1", "祝雷11");//设置值。默认永不过期
            RedisHelper.Set("name2", "祝雷22");//设置值。默认永不过期
            RedisHelper.Set("name", "祝雷");//设置值。默认永不过期

            string str=RedisHelper.Get("name");//取值

            _logger.LogInformation("测试一下,不要紧张!");
            return new string[] { "value1", "value2" };
        }
    }
}

 

以上是关于Signalr WebApi客服-客户链接+Redis(集群扩展)的主要内容,如果未能解决你的问题,请参考以下文章

angularjs webapi signalR 聊天框,如 bookmyshow

利用SignalR创建即时消息

WebAPI+SignalR实现实时日志监测

带有 JWT 身份验证的 SignalR Core Android 客户端返回 NULL

ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十四)之漏掉的客服消息

1.使用SignalR实现页面即时刷新(服务端主动推送)