there seems to be a bug in client-side caching support when handling hash READ operations that specify field(s), such as HGET and HMGET.
current implementation only stores redis_keys and not hash field names, so the cache entry is shared for different field combinations and end up returning the wrong value.
it's easy to reproduce:
import redis
from redis.cache import CacheConfig
url = 'xxx'
key = 'abcde'
r = redis.from_url(url, protocol=3, cache_config=CacheConfig())
r1 = redis.from_url(url)
r1.hset(key, mapping={'field1': 'aaa', 'field2': 'bbb'})
print(r.hget(key, 'field1')) # prints 'aaa'
print(r.hget(key, 'field2')) # should print 'bbb', but uses the cache entry created in previous line and prints 'aaa'