redis - 确定 Redis 管道中的操作数

标签 redis redis-py

我一直在 pyredis 中使用 Redis 管道(批量运行的操作集以减少单个操作的套接字 i/o 成本)。

有时我的管道变得非常大并且积累了太多的 RAM,所以我想执行 pipeline.execute() 方法来运行存储在管道中的操作当给定的管道已经积累N个操作。

这就提出了一个问题:如何衡量 Redis 管道中的操作数量?我知道我可以存储一个计数器变量,但更愿意只查询管道以确定其中有多少操作。其他人可以就此问题提供的任何帮助都将非常有帮助!

最佳答案

是的,您可以使用 len(pipeline) 来获取操作数。在redis-py/client.py中定义了类BasePipeline,它实现了__len__方法:获取其command_stack的长度,记录了所有的command管道。

def __len__(self):
    return len(self.command_stack)

例如

>>> import redis
>>> redis = redis.StrictRedis()
>>> p = redis.pipeline()
>>> len(p)
0
>>> p.set('test',1)
StrictPipeline<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>
>>> len(p)
1

关于redis - 确定 Redis 管道中的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46045333/

相关文章:

python - Redis - 解析远程服务器提供的数据流

redis - 订阅redis数据库如何知道通知消息的操作?

Redis - SET覆盖其他类型

python - 如何从哨兵 url 创建 redis python 客户端?

php - redis lua 脚本调用 redis.call ("ZREVRANGE", KEYS[1], start, end, 'WITHSCORES' )

redis - 如何使用 JEDISCLUSTER 客户端在 Redis 中搜索键空间?

docker - redis.conf 中的 'requirepass' 没有生效

ruby-on-rails - 我刚刚部署了 discourse 应用程序,在 Heroku db :migrate. 期间出现错误,可能是 redis 无法连接

redis - Redis 是 SignalR 在 SQL Server 上横向扩展的更好选择吗?每个都支持故障转移吗?