我有一个健康检查,我正在尝试使用redis-cli命令从redis服务器远程执行redis-sentinels.
redis-cli -h 10.10.10.10 -p 26379 SENTINEL MASTER testing
Run Code Online (Sandbox Code Playgroud)
有一个逻辑可以判断是否存在仲裁,除非哨兵的网络接口不可用,否则一切正常.在这种情况下,redis-cli命令无限期挂起,即使有两个具有法定人数的健康哨兵,健康检查也会失败.
我似乎无法找到一种方法来为客户端的redis-cli设置超时,以防止它挂起.有没有办法使用redis-cli来执行此操作,或者我是否必须在命令之外执行以确保它不会无限期挂起?
我试图删除 redis master 和 slave 上的所有键,但是当我执行flushall或flushdb从redis-climaster 上执行时,它只删除 master 上的键,反之亦然,如果我删除 slave 上的键,它只会删除 slave 上的键。
我应该使用什么命令来删除 master 和 slave(s) 上的所有密钥?
我需要为此启用集群支持吗?因为现在它在我的设置中被禁用。
还有一个问题,为什么在 usingflushall或flushdbfrom 的情况下没有复制redis-cli?
我试图使用以下命令从我的远程Redis数据库中删除多个密钥.
redis-cli -h <host> -p 6379 KEYS "myprefix:*" | xargs redis-cli -h <host> -p 6379 DEL
Run Code Online (Sandbox Code Playgroud)
它删除了除了包含空格的键之外的所有匹配键.
例如
删除:
未删除:
什么应该是我的查询模式,以便这些也被删除?我试过谷歌搜索,但无法找到任何解决方案.
您好,我正在尝试向Redisdocker 容器发出命令。容器已启动并正在运行。我使用了以下命令:
docker run -d -p 8300:85 -t redis

但是,当我尝试从我的终端使用时:
redis-cli -p 8300没有任何反应。
它只是看起来在等待什么。
我如何与我的 redis 容器通信;我究竟做错了什么?
PS在我将 redis 端口设置为默认值后,6379我在使用时得到一个 id 作为响应,docker run但它仍然停在那里(第一张图片):
从另一个终端(第二张图片)您可以看到,当第一个终端被阻止时,该实例已创建但未启动。
PS 2等了 10 分钟后,我终于在运行 redis 容器时收到一条错误消息:
$ docker run -d -p 8300:6379 -t redis
244d898dcfb0cd1da4828ee99a16bdd12f62499f99e8dc3ee17af9bacefe5b41
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: failed to create endpoint upbeat_blackwell on network nat: HNS failed with error : You were not connected because a duplicate name exists on the network. If …Run Code Online (Sandbox Code Playgroud) 我们已经安装了redis 客户端。
当我们在里面输入以下命令时C:\Program Files\Redis\redis-cli.exe:
redis-cli -h redis-server.example.com -p 6390 ping
Run Code Online (Sandbox Code Playgroud)
它引发以下错误:
(错误)ERR 未知命令“redis-cli”
同样的命令在内部触发时C:\Windows\System32\cmd.exe会引发以下错误:
'redis-cli' 不是内部或外部命令,也不是可运行的程序或批处理文件。
注意Path设置为C:\Program Files\Redis\redis-cli.exe
问题是什么?
我有一个bash.sh脚本:
#!/usr/bin/env bash
val=$(cat ../my-microservice/conf/config.json)
echo "set my-microservice-config ${val}" | redis-cli
Run Code Online (Sandbox Code Playgroud)
config.json在哪里:
{
"key" : "value"
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到了:
ERR未知命令'}'
如何从json文件中正确设置json值?
形成许多博客,我了解到 redis 命令 keys *可能会阻塞redis服务器,其他命令无法按时执行。
然而,今天我keys *在我的数据库上运行,它有大约 800 万个数据。然后我使用我的另一个客户端来执行其他命令,例如get或set,这一切都很好,并按时给出响应。
所以,我很困惑为什么我的命令keys没有被阻止。
如果尚未使用 Expire 命令的 NX 选项设置过期时间,我尝试在密钥上设置过期时间。
但我不断从 redis-cli 收到错误,当我尝试使用代码时,NX 选项会被忽略。
当我尝试使用 redis-cli 中的 Expire 命令时,出现以下错误
127.0.0.1:6379> expire ns1 500 NX
(error) ERR wrong number of arguments for 'expire' command
Redis 版本 - v=6.2.6
另外,如果我尝试以编程方式执行此操作,则会忽略过期命令。下面的代码 -
let res = await client.INCRBY('ns1', 5)
console.log('incr val ' + res)
res = await client.EXPIRE('ns1', 60, { 'NX': true }) // this should set expiry
res = await client.EXPIRE('ns1', 180, { 'NX': true }) //this should ignore setting expiry
res = await client.TTL('ns1')console.log('ttl expiry ' + …Run Code Online (Sandbox Code Playgroud) INCR mykey初始化为 0 并将值增加到 1。我将如何mykey在同一个命令中将过期时间设置为 ,就像它可以完成的那样SETEX?
我在使用Redis缓存时陷入僵局。我想在按键启动时设置TTL。密钥将由hSet($ hash,$ key,$ data)设置
expire($key, '3600')
Run Code Online (Sandbox Code Playgroud)
似乎不起作用。是否有hExpire()方法?
在 Docker 中运行 Redis
文件docker-compose.yml
version: "3.8"
services:
redis:
image: redis
volumes:
- ./data:/data
ports:
- 6379:6379
Run Code Online (Sandbox Code Playgroud)
docker pull redis
docker-compose up
docker-compose up -d
docker container ls
telnet localhost 6379
Run Code Online (Sandbox Code Playgroud)
如何连接到Redis服务器redis-cli?
redis ×11
redis-cli ×11
docker ×2
node-redis ×2
node.js ×2
bash ×1
caching ×1
cmd ×1
connection ×1
json ×1