redisson解决redis的主节点和从节点一致性的问题。从而解决锁被错误获取的情况。
实际开发中我们会搭建多台redis服务器,但这些服务器分主次,主服务器负责处理写的操作(增删改),从服务器负责处理读的操作,当从主务器坏了,会从次服务器中选出一个服务器重新作为主服务器。
这样会出现主从一致性问题(存储的信息不一致):
当主服务器宕机时,次服务器还没有接收主服务器同步过来的信息,这时其他java线程来获取锁(存入锁信息成功就是能获取锁)时,会出现直接获取锁的情况。
redission是如何解决这样的问题的呢?
redission直接不分主服务器和从服务器了,所有redis服务器都是主,都能处理读写操作,这时java线程想成功获取锁,必须在所有的存活着的redis服务器中都获取到锁,才能算是获取锁成功。因为没有主从redis服务器之分,所以不会出现主从一致性问题,所有服务器中存的都是最新的数据。我们甚至可以给这些主redis服务器再增加从redis服务器,让可用性更强。