问题标签 [redis-py]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 是否可以将过期设置为 redis 键(批量操作)
我正在使用 mget(keys, *args) 批量设置密钥。
我还想为密钥设置过期时间。我使用 mset 的原因是为了保存对 redis 的调用。
有没有办法批量设置过期的密钥?
谢谢。
python - redis比订阅者更快,无法获取所有数据
我正在使用 python 发布和订阅消息队列
出版商:
订户:
当发布者循环范围高于 20000 时,订阅者似乎无法获取所有数据,只有当我向发布者添加睡眠方法时,它才能工作。
如何在不给发布者添加休眠方法的情况下使其工作,并且无论发布者发布数据的范围是多少,订阅者都可以获取所有数据?
python - 在 Python 中忽略函数的返回以节省内存
这甚至可能不是问题,但我有几个相关的 Python 问题,希望能帮助解决我在过去一两周中一直坚持的一些调试问题。
如果调用返回大对象的函数,有没有办法忽略返回值以节省内存?
我最好的例子是,假设您正在将一个大文本文件逐行传输到另一台服务器,当您完成管道时,该函数会为每个成功的行返回一个确认。如果管道太多,返回的确认列表可能会超出您的可用内存。
如果您删除response
变量,我相信返回值仍会加载到内存中,所以当您不真正关心响应时,有没有办法忽略/阻止返回值?
更多背景:我正在使用 redis-python 包来管道大量的集合添加。即使文件本身不是那么大,我的进程偶尔也会因内存不足而死机,我也不完全确定为什么。这只是我的最新假设。
linux - 守护进程时如何使 Redis dump.rdb 保存在目录中
所以,我可以通过使用正常启动时的选项dump.rdb
来更改位置的目录(只需调用)。如果我希望 redis-server 一直运行(我愿意)而不需要始终打开终端窗口,我想我需要对其进行守护。但是,这似乎不会自动持久化到磁盘上,并且每当 redis-server 进程结束时(我一直在通过运行或有时只是用 杀死进程来结束它的测试)并重新启动,所有数据库更改丢失,如果将来发生崩溃或意外关闭,这似乎很糟糕。在运行数据处理的代码中(使用 redis-py 的 python 或使用 jedis 的 java),我可以显式运行,但这可以节省dir
redis.conf
redis-server
redis-cli shutdown
kill PID
bgsave()
dump.rdb
在代码运行的目录中,而不是dir
选项指定的目录中redis.conf
那么,是否有另一种方法来运行 redis-server 而不需要整个终端窗口保持打开状态以允许我想要做的事情,或者有没有办法让数据在运行时保留在磁盘上的正确目录中redis-server --daemonize yes
或相似的?
python - 如何从哨兵网址创建redis python客户端?
我有网址
在此,redis 运行在192.168.10.1
,192.168.10.2
和192.168.10.3
. 一个节点是主节点,其他节点是从节点。如果master宕机了,其他节点代替master。
我检查了redis客户端,但它没有方法,我们可以像我提供的那样提供url。
我们必须提供主机名和端口。就我而言,主人将是这三个中的任何人。
python - Redis Python 客户端打开许多连接
我正在使用以下代码连接 Redis 服务器。我看到巨大的连接处于 TIME_WAIT 状态。有什么问题?
一旦使用下面的代码对 Redis 服务器完成操作,我想关闭连接。但我得到了这个错误。
我收到以下错误,
对巨大的 TIME_WAIT 连接/使用 Redis 完成操作后关闭连接有任何想法吗?代码:
python - 流水线时Redis中的MemoryError
我正在使用这个 python 脚本将数据从一个 ElastiCache redis 实例迁移到另一个实例。它使用 redis 流水线以块的形式迁移数据。
https://gist.github.com/thomasst/afeda8fe80534a832607
但我收到了这个奇怪的错误:
RAM 没有问题,因为节点有 6 GB 的 RAM。
源redis的Memory Profile如下:
这可能是什么原因?
redis - 确定 Redis Pipeline 中的操作数
我一直在使用 pyredis 中的 Redis 管道(一组操作批量运行以降低单个操作的套接字 i/o 成本)。
有时我的管道变得非常大并且积累了太多的 RAM,所以当给定的管道已经积累了 N 个操作时,我想执行该pipeline.execute()
方法来运行存储在管道中的操作。
这就提出了一个问题:如何衡量 Redis 管道中的操作数量?我知道我可以存储一个计数器变量,但更愿意只查询管道以确定其中有多少操作。其他人可以在这个问题上提供的任何帮助都将非常有帮助!
redis - GET 和 TTL 的 SETEX 等效项
SETEX
是一个有用的 Redis 命令,可以在单个原子操作中设置键的value
和。expiry
是否有一个等效的操作可以原子地使人能够检索密钥的value
和ttl
?我知道我也可以在管道中做到这一点,但我在问是否SETEX
存在类似优雅的东西。如果重要的话,我使用的是 Redis 2.8.4。
python - REDIS-Python -> 从 1 个数据库中获取所有键和相应的值
我正在尝试从 REDIS 数据库中获取所有键和值。其他用户在 REDIS 上大约有 35000 多个打开的连接。我正在使用 r.scan_iter() 来获取所有密钥,并将它们附加到列表中。我目前正在使用 pipeline.execute() 来获取这些键列表的所有值。这是从redis获取键值的必要条件吗?或者有什么方法可以从 r.scan_iter() 循环中访问键的值。键 = a|b|c 值 = V1:X1 V2:X2 V3:X3
我的代码如下: