-bash: EVAL: command not found
时间: 2023-08-01 20:10:26 浏览: 268
-bash: mysql: command not found的问题与解决
5星 · 资源好评率100%
如果在 Docker 容器中执行 Redis 的 Lua 脚本时,遇到 `-bash: EVAL: command not found` 的错误,可能是因为 EVAL 命令被解释为 Shell 命令而不是 Redis 命令。可以使用 redis-cli 命令进入 Redis-cli,然后使用 EVAL 命令来加载和运行 Lua 脚本。
以下是在 Docker 容器中执行 Redis Lua 脚本的修改步骤:
1. 进入 Redis 容器:使用 docker exec 命令进入 Redis 容器。
```
docker exec -it <redis-container-name> /bin/bash
```
2. 进入 Redis-cli:在 Redis 容器中使用 redis-cli 命令进入 Redis-cli。
```
redis-cli
```
3. 加载 Lua 脚本:在 Redis-cli 中使用 EVAL 命令将 Lua 脚本加载到 Redis 中。注意:如果 Lua 脚本很长,可以将其存储在文件中并使用 EVALSHA 命令加载。
```
redis-cli EVAL "return redis.call('GET', KEYS[1])" 1 mykey
```
4. 提供参数:在运行 Lua 脚本时,可以使用 ARGV 和 KEYS 参数向 Lua 脚本传递参数。
```
redis-cli EVAL "local key = KEYS[1]\nlocal value = ARGV[1]\nreturn redis.call('SET', key, value)" 1 mykey myvalue
```
5. 处理返回值:Lua 脚本返回一个结果,可以在 Redis-cli 中使用返回值进行进一步处理。
```
redis-cli GET mykey
```
注意:在执行 Redis Lua 脚本时,需要注意 Redis 版本和 Redis Lua 脚本的兼容性。特别是在使用 Redis 集群时,需要使用 EVAL 命令而不是 EVALSHA 命令,因为在 Redis 集群中,SHA1 校验和在不同节点上可能不同。
阅读全文