redis 的 redisbloom 想要修改兼容的端口为非 6379 但无效?

作者站长头像
站长
· 阅读数 13

redis 的 redisbloom 想要修改兼容的端口为非 6379 但无效?

docker-compose.yaml

version: "3"

services: 
  redis:
    container_name: rebloom2
    restart: always
    image: redislabs/rebloom:2.6.12
    ports:
      - "6377:6377"
    volumes:
      - ./volumes:/data # /usr/local/redis/data 是你宿主机的路径;/data 是容器内的路径,容器内的 redis 会把需要持久化的数据都保存到 /data 目录下
      - ./redis.conf:/etc/redis/redis.conf # redis.conf 这个文件已经准备好了,可以放到这个路径,也可以自己修改,比如放到项目路径中
# 这个文件的地址,和你的 docker-compose.yaml 中的 /usr/local/redis/redis.conf:/etc/redis/redis.conf 冒号左边的要对应起来
# redis 支持两者持久化机制:RDB&AOF
# https://juejin.cn/post/6844903716290576392

appendonly yes
#default: 持久化文件
appendfilename "appendonly.aof"
#default: 每秒同步一次
appendfsync everysec

port 6377
# 绑定端口,不指定外网可能连不上服务器
bind 0.0.0.0


# maxmemory 100mb
# appendonly yes
# appendfilename "appendonly.aof"
# appendfsync everysec

我把默认端口改成 6377 之后,客户端连不上

╭─pon@T4GPU ~
╰─➤  iredis  -h 127.0.0.1 -p 6377
Error while reading from 127.0.0.1:6377 : (104, 'Connection reset by peer') retrying... retry left: 2
Error while reading from 127.0.0.1:6377 : (104, 'Connection reset by peer') retrying... retry left: 1
iredis  1.13.2 (Python 3.10.12)
redis-server  Unknown (Error while reading from 127.0.0.1:6377 : (104, 'Connection reset by peer'))
Home:   https://iredis.io
Issues: https://iredis.io/issues
127.0.0.1:6377> exit

但是把 redis 的端口改成还是保留 6379,只是把 docker 映射端口改成 6377:6379 ,客户端就可以连接成功!

如果 redisbloom 要如何修改 redis.conf 来修改兼容的端口?和标准的 redis 不一样?


标准的 redis 这样修改成 6377 是可以的

回复
1个回答
avatar
test
2024-06-19

问题排查

  • 启动服务后 进入容器

    docker exec -it rebloom2 /bin/bash
  • 查看端口是否生效

     apt-get install net-tools
     netstat -aon |grep  6377    (空)
     netstat -aon |grep  6379     (有值)
  • 说明修改端口失败
  • 查看 /etc/redis/redis.conf 已经修改过的
  • docker 容器中执行 redis-server 提示: Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
  • 查看 https://github.com/RedisBloom/RedisBloom/blob/master/Dockerfile 默认 redis-server 不带配置

    CMD ["redis-server", "--loadmodule", "/usr/lib/redis/modules/redisbloom.so"]
    

    最终结果

  • docker-compose.yaml 增加 command(最后一行)

    version: "3"
    
    services:
    redis:
      container_name: rebloom2
      restart: always
      image: redislabs/rebloom:2.6.12
      ports:
        - "6377:6377"
      volumes:
        - ./volumes:/data # /usr/local/redis/data 是你宿主机的路径;/data 是容器内的路径,容器内的 redis 会把需要持久化的数据都保存到 /data 目录下
        - ./redis.conf:/etc/redis/redis.conf # redis.conf 这个文件已经准备好了,可以放到这个路径,也可以自己修改,比如放到项目路径中
      command: redis-server /etc/redis/redis.conf  --loadmodule /usr/lib/redis/modules/redisbloom.so
    
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容