Redis中的锁定是如何工作的?

Redis中的锁定是如何工作的?,redis,Redis,假设两个用户正在更新/将密钥放入同一个哈希中,那么这里是如何获取读/写锁的 hmset user:A:address city NY // First user hmset user:A:address city SEATLE // Second user 例如,在上述情况下:- 第一个用户将获得完整hashmapuser:A:address上的锁,第二个用户将被阻止,直到第一个用户完成 如果用户在同一hashmap下处理不同的键呢 hmset user:A

假设两个用户正在更新/将密钥放入同一个哈希中,那么这里是如何获取读/写锁的

    hmset user:A:address  city NY     // First user
    hmset user:A:address  city SEATLE // Second user
例如,在上述情况下:- 第一个用户将获得完整hashmap
user:A:address
上的锁,第二个用户将被阻止,直到第一个用户完成

如果用户在同一hashmap下处理不同的键呢

    hmset user:A:address  county test_county  // First user
    hmset user:A:address  zip    01001        // Second user

Redis在一个线程中处理这些命令,不需要任何锁


不管两个用户是设置相同的散列字段还是不同的散列字段,这些命令都会逐个处理。当Redis处理一个命令时,它会阻止其他命令,因为Redis是单线程的,不需要任何锁


不管两个用户是设置相同的散列字段还是不同的散列字段,这些命令都会逐个处理。当Redis处理命令时,它会阻止其他命令,因为Redis是(大部分)单线程。

%s/因为Redis是单线程的/因为Redis是(大部分)单线程的/g;)谢谢@ItamarHaber。B.T.W,Vim是最好的编辑器:)通常,Redis的性能非常好。事实上,它太快了,通常,瓶颈是I/O,而不是CPU。对于大多数Redis命令,例如
SET
GET
HSET
,您不必担心性能。但是,那些缓慢的命令,例如
排序
,可能会长时间阻止Redis。您不应该在生产环境中使用它们,或者您需要在专用的Redis实例上运行这些命令。感谢@for_stack。我相信Redis进程总是托管在自己的Redis服务器上。正确的?redis能否在tomcat等现有Web服务器上运行?@Emily redis作为独立进程运行。当然,您可以在现有Web服务器上运行它。%s/因为Redis是单线程的/因为Redis(大部分)是单线程的/g;)谢谢@ItamarHaber。B.T.W,Vim是最好的编辑器:)通常,Redis的性能非常好。事实上,它太快了,通常,瓶颈是I/O,而不是CPU。对于大多数Redis命令,例如
SET
GET
HSET
,您不必担心性能。但是,那些缓慢的命令,例如
排序
,可能会长时间阻止Redis。您不应该在生产环境中使用它们,或者您需要在专用的Redis实例上运行这些命令。感谢@for_stack。我相信Redis进程总是托管在自己的Redis服务器上。正确的?redis能否在tomcat等现有Web服务器上运行?@Emily redis作为独立进程运行。当然,您可以在现有的Web服务器上运行它。