我们如何在 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.

优势

  • 一次调用即可获取所有记录。
  • 减少网络调用。

另请阅读

Redis transactions official doc