多个客户端可以同时访问同一个列表而不会被Redis阻止吗?

Ame*_*tor 4 redis

假设有两个客户端正在访问相同的redis list datastructure.一个是做LPOP而另一个是在同一个列表上做RPUSH.如果它们并行运行,这两个客户端之间是否存在任何争用?当一个客户端访问它时,Redis会锁定mylist(下面),即使并行运行的客户端正在访问mylist的不同端点吗?

Client 1
RPUSH mylist a
RPUSH mylist b

Client 2
LPOP mylist
LPOP mylist
Run Code Online (Sandbox Code Playgroud)

客户端1和客户端2并行运行.如果在这种情况下会有争用,请告诉我.

hym*_*oth 6

Redis是单线程的,因此每个命令都会(保证)以原子方式执行.没有并行/并发访问redis的数据结构,因此在您的方案中,您无法确定谁将首先执行.

  • 在一天结束时,所有命令都按顺序提供.谁先来,得到服务.多路复用指的是如何从侦听套接字中挑选所有传入命令并进行序列化以便执行.但严重的是,您的情况受到并发随机性的强烈影响. (3认同)