noo*_*noo 2 redis docker-compose
我想在 Redis 中存储 json 类型,因此我设置将 RedisJSON 模块与 docker-compose 一起使用。但是,我一直无法运行它。代码如下。我还尝试使用 redis.conf 填充与命令相同的参数,但发生了分段错误。我的脚步怎么了?
version: '3.8'
services:
redis:
container_name: redis
hostname: redis
image: redis:7.0.0-alpine
command: redis-server --loadmodule /etc/redis/modules/rejson.so
volumes:
- /etc/redis/redis.conf:/etc/redis/redis.conf
- /etc/redis/modules/rejson.so:/etc/redis/modules/rejson.so
Run Code Online (Sandbox Code Playgroud)
Node.js 版本:16.14.1
Node Redis 版本:4.0.6
平台:Mac OS 12.3.1
分段错误是由于不存在的includes选项造成的。重复了以下消息。执行格式错误是什么意思?
# oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
# Redis version=7.0.0, bits=64, commit=00000000, modified=0, pid=1, just started
# Configuration loaded
* monotonic clock: POSIX clock_gettime
# Warning: Could not create server TCP listening socket ::1:6380: bind: Address not available
* Running mode=standalone, port=6380.
# Server initialized
# Module /etc/redis/modules/rejson.so failed to load: Error loading shared library /etc/redis/modules/rejson.so: Exec format error
# Can't load module from /etc/redis/modules/rejson.so: server aborting
Run Code Online (Sandbox Code Playgroud)
小智 5
经过大量的尝试和错误,我发现到目前为止,redis v7 docker 镜像似乎缺少 rejson 模块。
我现在使用 redis/stack-server ,它已经包含所有模块(包括)rejson。它基于redis v6,请参阅:
我compose.yaml现在的样子是这样的:
version: "3"
services:
redis:
image: redis/redis-stack
volumes:
- redis_data:/data:rw
ports:
- 6379:6379
restart: unless-stopped
volumes:
redis_data:
Run Code Online (Sandbox Code Playgroud)
然后你可以在 redis-cli 中尝试一下:
127.0.0.1:6379> JSON.SET employee_profile $ '{ "employee": { "name": "alpha", "age": 40,"married": true } } '
OK
127.0.0.1:6379> JSON.GET employee_profile
"{\"employee\":{\"name\":\"alpha\",\"age\":40,\"married\":true}}"
Run Code Online (Sandbox Code Playgroud)
如果您仍然有以前安装的 Docker 卷,则应首先删除它们。否则,您的新容器可能会在读取旧数据库时出现问题。
| 归档时间: |
|
| 查看次数: |
3691 次 |
| 最近记录: |