我们如何在 django-redis 中使用 redis 管道?
How we can use redis pipeline in django-redis?
我想在 django-redis 中使用 Redis 管道(执行多个命令)。
我们可以在 Redis 中使用 multi 和 exec 命令,但我们如何在 django-redis 中使用?
一个解决方案是:
我有散列键列表,我想使用散列键获取所有散列。
在每次迭代时,命令都会发送到 Redis 服务器以逐一获取哈希值。
for hashkey in feedlist:
result = con.execute_command('hgetall',hashkey)
print(result)
这不是一个好主意,我们可以使用 redis 管道。
但是我如何在 django-redis 中实现 Redis 管道?
在 django-redis 中使用 Redis 管道。
#first create pipline object using con object
pipeline = con.pipeline()
正在将所有命令插入管道。
一个接一个地获取所有哈希键并将它们插入到管道中。
if feedlist:
for post in feedlist:
pipeline.execute_command('hgetall',post)
#hgetall redis command to get all items of given hash key
然后在管道上调用 execute()
方法。
它将 return 结果返回到结果变量。
result = pipeline.execute()
Redis 事务
MULTI, EXEC, DISCARD and WATCH are the foundation of transactions in Redis. They allow the execution of a group of commands in a single step.
优势
- 一次调用即可获取所有记录。
- 减少网络调用。
另请阅读
我想在 django-redis 中使用 Redis 管道(执行多个命令)。
我们可以在 Redis 中使用 multi 和 exec 命令,但我们如何在 django-redis 中使用?
一个解决方案是:
我有散列键列表,我想使用散列键获取所有散列。
在每次迭代时,命令都会发送到 Redis 服务器以逐一获取哈希值。
for hashkey in feedlist:
result = con.execute_command('hgetall',hashkey)
print(result)
这不是一个好主意,我们可以使用 redis 管道。 但是我如何在 django-redis 中实现 Redis 管道?
在 django-redis 中使用 Redis 管道。
#first create pipline object using con object
pipeline = con.pipeline()
正在将所有命令插入管道。 一个接一个地获取所有哈希键并将它们插入到管道中。
if feedlist:
for post in feedlist:
pipeline.execute_command('hgetall',post)
#hgetall redis command to get all items of given hash key
然后在管道上调用 execute()
方法。
它将 return 结果返回到结果变量。
result = pipeline.execute()
Redis 事务
MULTI, EXEC, DISCARD and WATCH are the foundation of transactions in Redis. They allow the execution of a group of commands in a single step.
优势
- 一次调用即可获取所有记录。
- 减少网络调用。
另请阅读