Här är vad jag kom på. Inte säker på hur det skulle hantera komplexa anslutningar och vad mer det kan gå sönder. Kör bara inte din självkörande bil med det...
def new_client(client, **kwargs):
"""return a new Redis client based on an existing one,
with some kwargs modified.
"""
kwargs = {**client.connection_pool.connection_kwargs, **kwargs}
return redis.StrictRedis(**kwargs)
Med detta kan vi nu göra t.ex.:
client.set(name, pickle.dumps(stuff))
...
# later
with new_client(client, decode_responses=False) as binclient:
data = binclient.get(name)
stuff = pickle.loads(data)