Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Python-redis:Binärdaten abrufen, nachdem ein Client mit decode_responses=True eingerichtet wurde

Hier ist, was ich mir ausgedacht habe. Ich bin mir nicht sicher, wie es mit komplexen Verbindungen umgehen würde und was sonst noch kaputt gehen könnte. Betreiben Sie Ihr selbstfahrendes Auto nur nicht damit ...

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)

Damit können wir jetzt z.B.:

client.set(name, pickle.dumps(stuff))

...

# later
with new_client(client, decode_responses=False) as binclient:
    data = binclient.get(name)
stuff = pickle.loads(data)