【问题标题】:Redis reads / writesRedis 读/写
【发布时间】:2012-05-05 02:29:53
【问题描述】:

刚开始研究redis。

Redis 是一个单线程进程。

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

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

hget 只会在 hset 之后执行?

【问题讨论】:

    标签: redis


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 通常在一台机器上启动多个 Redis 实例,比如每个内核一个,以充分利用 CPU。
    • 是的,在这种情况下,您无法保证不同实例上的操作顺序。但是,您仍然可以保证涉及给定键(存储在给定实例中)的操作是序列化的。
    猜你喜欢
    • 2013-12-08
    • 2017-05-05
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多