1
刚开始研究redis。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,您可以获得并发性,但不具有并行性。
在你的例子中,你有保证hget总是在hset后执行。
您还可以保证,当您在Redis连接上发送多个查询时,应答将以相同的顺序返回(即Redis支持协议流水线)。
请注意,只有与Redis实例的给定连接才是真实的。如果数据在多个实例中分片,则将使用多个连接,并且在不同连接上发送的查询之间不存在这样的保证。
通常在一台机器上启动多个Redis实例,比如每个内核启动一个Redis实例以充分利用CPU。 – 2012-04-26 03:06:40
是的,在这种情况下,您不能保证在不同实例上的操作顺序。但是,您仍然保证涉及给定键(存储在给定实例中)的操作是序列化的。 – 2012-05-19 08:44:03