Redis 提供了字符串、使用哈希、配合集合和列表等多种数据结构可供使用。超存 这些数据结构都是越缓储存数据的好帮手, 其中列表就可以用作一个非常棒的使用队列(queue)。
为了将列表用作队列,配合 我们需要使用 RPUSH 将新项目推送至列表末尾,超存 然后使用 LPOP 或者 BLPOP 将它们从列表的越缓前面弹出。 由于 Redis 对数据库的使用所有修改都是在单个线程里面完成的, 所以这些操作都是配合原子的。

作为例子,IT技术网超存 下面这段在队列里面添加了一些大脚怪的越缓踪迹。
复制import asyncio import aioredis async def main(): redis = await aioredis.create_redis(redis://:foobared@localhost:6379/0,使用 encoding=utf-8) await asyncio.gather( add_to_queue(redis, Possible vocalizations east of Makanda), add_to_queue(redis, Sighting near the Columbia River), add_to_queue(redis, Chased by a tall hairy creature) ) redis.close() await redis.wait_closed() def add_to_queue(redis, message): return redis.rpush(bigfoot:sightings:received, message) asyncio.run(main()) 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.import asyncio 这个程序非常直接。 我们只需要在第 18 行调用 redis.rpush ,配合 就能够将指定的超存元素推入到队列。 接下来是从队列另一端读取元素的代码, 同样非常简单。
复制 import aioredis from pprint import pp async def main(): redis = await aioredis.create_redis(redis://:foobared@localhost:6379/0, encoding=utf-8) while True: sighting = await redis.blpop(bigfoot:sightings:received) pp(sighting) asyncio.run(main()) 1.2.3.4.5.6.7.8.9.10.11.12.13.Redis 还有 一些同样很酷的命令 , 它们不仅可以将列表用作队列甚至堆栈。 我最喜欢的是 BRPOPLPUSH , 它可以从列表的右侧阻塞并弹出一些元素, 然后将被弹出的WordPress模板元素推入到另一个列表。 你可以使用这个命令来将一个队列中的元素传递至另一个队列, 这是非常棒的一个命令。第 11 行和第 12 行的无限循环将等待并且打印被推入至队列中的大脚怪踪迹。 这里使用了 redis.blpop 而不是 redis.lpop , 因为前者可以阻塞客户端并等待列表中的元素返回。 比起让 Redis 和 Python 代码之间的网络无休止地轮询并做无用功, 让客户端阻塞并等待元素出现的做法会高效得多。