【发布时间】:2012-05-05 02:29:53
【问题描述】:
刚开始研究redis。
Redis 是一个单线程进程。
这是否意味着所有操作(例如 hset、hget 等)都以串行方式执行 - 这意味着例如具有以下操作:
hset foo:bar name 'Redis'
hget foo:bar name
hget 只会在 hset 之后执行?
【问题讨论】:
标签: redis
刚开始研究redis。
Redis 是一个单线程进程。
这是否意味着所有操作(例如 hset、hget 等)都以串行方式执行 - 这意味着例如具有以下操作:
hset foo:bar name 'Redis'
hget foo:bar name
hget 只会在 hset 之后执行?
【问题讨论】:
标签: redis
是的,Redis 实例是单线程的,所有基本操作都是原子的和序列化的。使用 Redis,您有并发,但没有并行性。
在您的示例中,您可以保证 hget 将始终在 hset 之后执行。
您还可以保证,当您在 Redis 连接上发送多个查询时,回复将以完全相同的顺序返回(即 Redis 支持协议流水线)。
请注意,这仅适用于与 Redis 实例的给定连接。如果数据在多个实例上分片,则将使用多个连接,并且在不同连接上发送的查询之间没有这样的保证。
【讨论】: