首页 > 其他分享 >nchan 集成keydb简单测试&一些说明

nchan 集成keydb简单测试&一些说明

时间:2023-03-18 22:15:31浏览次数:58  
标签:集成 nchan -- redis server lua keydb

因为keydb 是完整兼容redis的,所以对于单机版本的兼容是很简单的,配置就行了

参考单机运行

  • docker-compose 文件
version: '3'
services:
  db3: 
    image: eqalpha/keydb
    command: keydb-server /etc/keydb/keydb.conf --server-threads 10 --requirepass dalong  --masterauth dalong
    ports:
     - 6381:6379
  nchan:
     image: dalongrong/openresty-tengine:debug-njs
     privileged: true
     cap_add:
       - ALL
     ports:
     - "80:80"
     volumes:
     - "./nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf"
  • nginx 配置
user root; 
master_process off;
worker_processes 1;
events {
    worker_connections  1024;
}
error_log /opt/app.log debug;
http {
    upstream my_redis_server {
        nchan_redis_server db3;
        nchan_redis_password dalong;
    }
    include       mime.types;
    default_type  text/html;
    lua_code_cache off;
    lua_package_path '/opt/lua/?.lua;;';
    real_ip_header     X-Forwarded-For;
    resolver 127.0.0.11;
    server {
       listen 80;
       charset utf-8;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_buffering off;
       proxy_cache off;
       proxy_set_header Connection '';
       proxy_http_version 1.1;
       chunked_transfer_encoding off;
       default_type text/html;
 
       location ~ /redis_sub/(\w+)$ {
            access_by_lua_block {
               local cjson = require("cjson")
               ngx.log(ngx.ERR, "failed to get the SNI name: ", cjson.encode(ngx.var))
            }
            nchan_subscriber_first_message newest;
            nchan_subscriber;
            nchan_channel_id $1;
            nchan_redis_pass my_redis_server;
        }
        location ~ /redis_pub/(\w+)$ {
            nchan_redis_pass my_redis_server;
            nchan_publisher;
            nchan_channel_id $1;
        }
    }
}
  • 测试
订阅消息
websocat ws://localhost/redis_sub/demoapp
发送消息
curl --location --request POST 'localhost/redis_pub/demoapp' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name":"dalong"
}'

keydb 多活复制模式&主主模式

  • 问题

目前因为keydb 支持了多活复制模式&主主模式,但是因为server info 是不一样的(role:active-replica)
因为nchan 自己会判断redis 环境的状态并进行一些处理,所以对于keydb 在keydb 多活复制模式&主主模式不支持此种模式的解析
会有问题,目前在尝试修改中,如果成功了会写一些相关的说明

说明

nchan+keydb 是一个不错的集成模式(当然redis cluster 也是可选的),但是keydb 的多线程以及支持的不同玩法,对于我们部署一个
可靠以及稳定的redis 还是比较方便的,是值得使用的redis 兼容server

参考资料

https://github.com/rongfengliang/keydb-nchan
https://nchan.io/
https://docs.keydb.dev/
https://github.com/Snapchat/KeyDB

标签:集成,nchan,--,redis,server,lua,keydb
From: https://www.cnblogs.com/rongfengliang/p/17231939.html

相关文章

  • Ruoyi | 集成aj-captcha实现滑块验证码
    由于最近在集成这玩意儿的时候实在是报错报麻了,所以写一下笔记记录一下,如果有人跟我一样,集成这个东西的时候各种报错,可以往下翻一翻找一下有没有你遇到的情况。首先准备东......
  • 基于kubernetes构建jenkins+gitlab持续集成
    @目录安装jenkins安装gitlabjenkins连接gitlab配置Jenkins连接maven配置cicd本案例使用docker-compose来安装部署Jenkins和gitlab节点IPmaster192.168.200.44......
  • 完全搞懂集成学习
    本文未完成,会持续更新目录主要概念串行集成学习AdaBoost理解1:样本和分类器的加权理解2:前向分步算法提升树GBDT梯度提升决策树XGBoost框架LGBM框架并行集成学习Bagging并......
  • 浅记cas集成
    注意:集成单点登录后,可以完成用户认证逻,需要进一步查询用户中心接口获取用户绑定角色等信息。接入参考CAS官方Github客户端示例SpringBoot项目示例1、springboot项目在pom......
  • PebbleTemplates 一种集成玩法
    PebbleTemplates具有比较灵活的扩展性,扩展下可以做一些比较有意思的玩法参考图  简单说明模版官方部分基于了s3进行存储,我们可以通过ci/cd工具,或者利用gitapi......
  • SpringBoot集成knife4j
    1.knife4j文档地址:https://doc.xiaominfo.com/knife4j是为JavaMVC框架集成Swagger生成Api文档的增强解决方案。2.Swagger介绍前后端分离开发模式中,api文档是最好的......
  • IntelliJ IDEA集成本地Maven步骤
    IntelliJIDEA集成本地Maven步骤一、前期准备Maven已经在本地环境配置完成,步骤可以参考我的这篇文章:https://www.cnblogs.com/rainbow-1/p/17223811.html二、IDEAmave......
  • 狂神说 springboot集成redis
    文章目录1.概述1.1SpringData1.2lettuce2.部分源码2.1自动配置2.2Jedis.pool不生效3.使用4.序列化4.1为什么要序列化4.2为什么要自定义......
  • spring boot集成swagger3
    springboot集成swagger3 springboot集成swagger3swagger2的整合:https://www.cnblogs.com/chenglc/p/10910721.htmlswagger3的使用步骤和2略有差异maven依赖......
  • ABP 结合 MongoDB 集成依赖注入
    1.我们再ABP项目添加一个.NETCore类库 类库名自定定义,我这里定义为 TexHong_EMWX.MongoDb添加NuGet包。ABPmongocsharpdriver  添加 AbpMongoDbConfigurati......