刚开始研究redis。
Redis 是一个单线程进程。
这是否意味着所有操作(例如 hset、hget 等)都以串行方式执行 - 这意味着例如具有以下操作:
hset foo:bar name 'Redis'
hget foo:bar name
hget只会在hset之后执行?
最佳答案
是的,Redis 实例是单线程的,所有基本操作都是原子的和序列化的。使用 Redis,您拥有并发性,但没有并行性。
在您的示例中,您可以保证 hget 将始终在 hset 之后执行。
您还可以保证,当您在 Redis 连接上发送多个查询时,回复将以完全相同的顺序返回(即 Redis 支持协议(protocol)流水线)。
请注意,它仅适用于与 Redis 实例的给定连接。如果数据在多个实例上分片,则将使用多个连接,并且在不同连接上发送的查询之间没有这种保证。
关于Redis 读/写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10298154/