I have a table with one million rows of data. And It's schema is like:
```
create table redis_dictionary_test
(
	date String,
	id String,
	value Int64
)
engine = MergeTree()
partition by date
order by id
settings index_granularity = 8192;
```

I also inserted one million key-value pairs into Redis.
The dictionary is like:
```
create dictionary redis_dict
(
	date String,
	id String,
	value Int64
)
PRIMARY KEY date, id
SOURCE(REDIS(
	host '127.0.0.1'
	port 6379
	storage_type 'hash_map'
	db_index 0
))
LAYOUT(COMPLEX_KEY_DIRECT())
```
When I execute this query: `SELECT COUNT(DISTINCT dictGet('redis_dict', 'value', tuple(date, id))) FROM redis_dictionary_test;`, ClickHouse seems stuck. Progress was in this state: 122.88 thousand rows, 5.84 MB (1.20 million rows/s., 56.83 MB/s.)  12% about five minutes. Finally, I canceled query.

I am sure Redis is fine. Because I monitored Redis and it could accept read and write commands.

I also executed this query on 1000, 10000 and 100000 rows of data. They can return data normally.

What happened to ClickHouse? Where can I find out the reason?
RedisDictionarySource::RedisDictionarySource(
            const DictionaryStructure & dict_struct_,
            const String & host_,
            UInt16 port_,
            UInt8 db_index_,
            const String & password_,
            RedisStorageType storage_type_,
            const Block & sample_block_)
            : dict_struct{dict_struct_}
            , host{host_}
            , port{port_}
            , db_index{db_index_}
            , password{password_}
            , storage_type{storage_type_}
            , sample_block{sample_block_}
            , client{std::make_shared<Poco::Redis::Client>(host, port)}
    {
        if (dict_struct.attributes.size() != 1)
            throw Exception(ErrorCodes::INVALID_CONFIG_PARAMETER,
                "Invalid number of non key columns for Redis source: {}, expected 1",
                DB::toString(dict_struct.attributes.size()));
        if (storage_type == RedisStorageType::HASH_MAP)
        {
            if (!dict_struct.key)
                throw Exception(ErrorCodes::INVALID_CONFIG_PARAMETER,
                    "Redis source with storage type \'hash_map\' must have key");
            if (dict_struct.key->size() != 2)
                throw Exception(ErrorCodes::INVALID_CONFIG_PARAMETER,
                    "Redis source with storage type \'hash_map\' requires 2 keys");