是否有Redis命令用于获取数据库中的所有密钥?我看到一些python-redis库获取它们.但是想知道redis-client是否有可能.
我的整体问题是:使用Redis for PubSub,当发布者将消息推送到某个频道的速度超过订阅者能够阅读它们时,消息会发生什么变化?
例如,假设我有:
我天真的假设是订阅者只会看到50%的消息发布到Redis上.为了测试这个理论,我写了两个脚本:
pub.py
queue = redis.StrictRedis(host='localhost', port=6379, db=0)
channel = queue.pubsub()
for i in range(10):
queue.publish("test", i)
time.sleep(0.5)
Run Code Online (Sandbox Code Playgroud)
sub.py
r = redis.StrictRedis(host='localhost', port=6379, db=0)
p = r.pubsub()
p.subscribe('test')
while True:
message = p.get_message()
if message:
print "Subscriber: %s" % message['data']
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
结果
sub.py,然后紧接着pub.py,我发现sub.py实际上显示了所有的消息(1-10),一个接一个地延迟了1秒.我最初的假设是错误的,Redis正在排队消息.需要更多测试.pub.py,然后在跑步前等了5秒sub.py,我发现sub.py只显示了消息的后半部分(5-10).我本来会假设这个,但鉴于我之前的结果,我会认为消息排队,这导致我得出以下结论......结论
剩下的问题
redis-cli info命令查看排队的消息数(对于每个客户端/通道)?在redis-cli中,在不事先知道列表大小的情况下打印列表中所有值的命令是什么?我明白了lrange,但它需要命名起始索引和结束索引.
psql通过向连接字符串提供它而不必在不同的参数中打破它,我习惯使用它,也就是说,
psql postgres://<username>:<password>@<host>:<port>
Run Code Online (Sandbox Code Playgroud)
例如,当我从Heroku获得这样的字符串时,这很有用.我可以做类似的事redis-cli吗?我想直接向它提供一个连接字符串,例如当我安装Redis插件时作为环境变量存储在Heroku上的连接字符串.那可能吗?我想要使用的语法示例:
redis-cli redis://<username>:<password>@<host>:<port>
Run Code Online (Sandbox Code Playgroud) 我正在使用该redis-cli工具来观察redis-server延迟.这是一个例子:
ubuntu:~$ redis-cli --latency -h 127.0.0.1 -p 6379
min: 0, max: 15, avg: 0.12 (2839 samples)
Run Code Online (Sandbox Code Playgroud)
问题是,这些值究竟意味着什么?除了通过工具自己的帮助文档提供的内容之外,我很难找到相关文档.
使用redis-cli连接到特定服务器:
redis-cli -h 10.1.xx.xx
和 select 1
然后只是获取一个关键功能的列表:
KEYS data_column*
这将在命令行上打印该列值的列表.但是,有很多值,我想将查询输出保存到文件.
一般来说,使用> file_name命令后工作.但在这种情况下,它在redis服务器上不起作用,但是从命令行开始.如何保存这样的查询结果?
我已经编写了 redis-cli bash 脚本来处理批量检索的所有键和值,但值未按预期打印。当我在 redis-cli 中给出密钥时,它会打印所有特殊字符:
我的密钥和 redis-cli 的输出
redis-cli MGET "0124" "0016"
1) "\x1f\x8b\b\x00\x00\x00\x00\x00\x00\x00\x1d\x8e1\x0e\xc3@\b\x04?\x04\x0e8Q\x17\xa9\xf9\xdc\xdeY\x0b2\x91[\xfd>K\x99\xfd\xaf\xfc\x03\xeb-1\x10\xef\x00\x00\x00"
2) "\x1f\x8b\b\x00\x00\x00\x00\x00\x00\x00\x1d\x8e1\x92\x031\b\x04?\x04k\x84\x10\xa0\xf8\x1;\xa8-7\xbb\xa2> \xc0n\xdc\xe1\xce\xdb\xbdk\xac\x81\x9a]Q*\x8ex\xa4\xe0\x99\xd5\xd1\xb3\x94w^\x9f]\xa7$2\xce;\xdcp\x9c\x9b\xff;\xff\x01\xb3\xcc\xd5H\xf0\x00\x00\x00"
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙如何在 redis-cli 或 shell 脚本中解码这个值吗?我是 Redis 新手 - 如果您能帮助我解决这个问题,我将不胜感激
我使用了gunzip - 但出现以下错误:
redis-cli -h GET "100" | gunzip
Run Code Online (Sandbox Code Playgroud)
错误:
gzip: stdin: unexpected end of file
gzip: stdin: decompression OK, trailing garbage ignored
Run Code Online (Sandbox Code Playgroud)
Redis-cli 代码:
#!/bin/sh
hostName=$1
port=$2
count=$3
cursor=-1
keys=""
recordCount=0
while [ $cursor -ne 0 ];
do
if [ $cursor -eq -1 ]
then
cursor=0
fi
reply=`redis-cli -h $hostName -p $port …Run Code Online (Sandbox Code Playgroud) 如何使用redis-cli删除redis中与某个模式匹配的键.我想从以下列表中删除所有foo.
KEYS *
foo:1
foo:2
bar:1
foo:3
bar:2
foo:4
Run Code Online (Sandbox Code Playgroud) 我在 redis 缓存中有哈希值,例如:
Hash Key Value
hashme:1 Hello World
hashme:2 Here Iam
myhash:1 Next One
Run Code Online (Sandbox Code Playgroud)
我的目标是将哈希作为 CLI 中的输出,例如:
hashme
myhash
Run Code Online (Sandbox Code Playgroud)
如果没有这样的选项,这也可以:
hashme:1
hashme:2
myhash:1
Run Code Online (Sandbox Code Playgroud)
我在 Redis API 中没有找到任何相关的命令。
有什么建议 ?
当尝试创建集群时,redis-cli如下所示
redis-cli --cluster create
Run Code Online (Sandbox Code Playgroud)
出现提示要求确认配置?
有没有办法编写此脚本(最好在 中ansible)并以非交互方式运行它?
我知道这个主题,但它涉及数据操作,这不是这个问题的范围。