@Override
    public RLock writeLock() {
        return new RedissonWriteLock(commandExecutor, getName());
    }
@Test
    public void testWriteLockExpiration() throws InterruptedException {
        RReadWriteLock rw1 = redisson.getReadWriteLock("test2s3");

        RLock l1 = rw1.writeLock();
        assertThat(l1.tryLock(10000, 10000, TimeUnit.MILLISECONDS)).isTrue();
        RLock l2 = rw1.writeLock();
        assertThat(l2.tryLock(1000, 1000, TimeUnit.MILLISECONDS)).isTrue();

        await().atMost(Duration.ofSeconds(10)).until(() -> {
            RReadWriteLock rw2 = redisson.getReadWriteLock("test2s3");
            try {
                return !rw2.writeLock().tryLock(3000, 1000, TimeUnit.MILLISECONDS);
            } catch (InterruptedException e) {
                e.printStackTrace();
                return false;
            }
        });
    }