@Override
    public Iterator<V> distributedIterator(String pattern) {
        String iteratorName = "__redisson_scored_sorted_set_cursor_{" + getRawName() + "}";
        return distributedIterator(iteratorName, pattern, 10);
    }
@Test
    public void testDistributedIterator() {
        RScoredSortedSet<String> set = redisson.getScoredSortedSet("set", StringCodec.INSTANCE);

        // populate set with elements
        Map<String, Double> stringsOne = IntStream.range(0, 128).boxed()
                .collect(Collectors.toMap(i -> "one-" + i, Integer::doubleValue));
        Map<String, Double> stringsTwo = IntStream.range(0, 128).boxed()
                .collect(Collectors.toMap(i -> "two-" + i, Integer::doubleValue));;
        set.addAll(stringsOne);
        set.addAll(stringsTwo);

        Iterator<String> stringIterator = set.distributedIterator("iterator_{set}", "one*", 10);

        // read some elements using iterator
        List<String> strings = new ArrayList<>();
        for (int i = 0; i < 64; i++) {
            if (stringIterator.hasNext()) {
                strings.add(stringIterator.next());
            }
        }

        // create another iterator instance using the same name
        RScoredSortedSet<String> set2 = redisson.getScoredSortedSet("set", StringCodec.INSTANCE);
        Iterator<String> stringIterator2 = set2.distributedIterator("iterator_{set}", "one*", 10);

        assertTrue(stringIterator2.hasNext());

        // read all remaining elements
        stringIterator2.forEachRemaining(strings::add);
        stringIterator.forEachRemaining(strings::add);

        assertThat(strings).containsAll(stringsOne.keySet());
        assertThat(strings).hasSize(stringsOne.size());
    }