1

刚开始研究redis。

Redis 是一个单线程进程。

这是否意味着所有操作(例如 hset、hget 等)都以串行方式执行 - 这意味着例如使用以下操作:

hset foo:bar name 'Redis'
hget foo:bar name

hget 只会在 hset 之后执行?

4

1 回答 1

3

是的,Redis 实例是单线程的,所有基本操作都是原子的和序列化的。使用 Redis,您有并发性,但没有并行性。

在您的示例中,您可以保证 hget 将始终在 hset 之后执行。

您还可以保证,当您在 Redis 连接上发送多个查询时,回复将以完全相同的顺序返回(即 Redis 支持协议流水线)。

请注意,这仅适用于与 Redis 实例的给定连接。如果数据在多个实例上分片,那么将使用多个连接,并且在不同连接上发送的查询之间没有这样的保证。

于 2012-04-24T13:02:28.590 回答