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
例如,在上述情况下:-
第一个用户将获得完整hashmapuser: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服务器上运行它。