Skip to main content

Python client for Valkey forked from redis-py

Project description

valkey-py

The Python interface to the Valkey key-value store.

CI docs MIT licensed pypi pre-release codecov

Installation | Usage | Documentation | Advanced Topics | Contributing


Installation

Start a valkey via docker:

docker run -p 6379:6379 -it valkey/valkey:latest

To install valkey-py, simply:

$ pip install valkey

For faster performance, install valkey with libvalkey support, this provides a compiled response parser, and for most cases requires zero code changes. By default, if libvalkey >= 2.3.2 is available, valkey-py will attempt to use it for response parsing.

$ pip install "valkey[libvalkey]"

Usage

Basic Example

import valkey
r = valkey.Valkey(host='localhost', port=6379, db=0)
r.set('foo', 'bar')
# True
r.get('foo')
# b'bar'

The above code connects to localhost on port 6379, sets a value in Redis, and retrieves it. All responses are returned as bytes in Python, to receive decoded strings, set decode_responses=True. For this, and more connection options, see these examples.

Migration from redis-py

You are encouraged to use the new class names, but to allow for a smooth transition alias are available:

import valkey as redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('foo', 'bar')
# True
r.get('foo')
# b'bar'

RESP3 Support

To enable support for RESP3 change your connection object to include protocol=3

import valkey
r = valkey.Valkey(host='localhost', port=6379, db=0, protocol=3)

Connection Pools

By default, valkey-py uses a connection pool to manage connections. Each instance of a Valkey class receives its own connection pool. You can however define your own valkey.ConnectionPool.

pool = valkey.ConnectionPool(host='localhost', port=6379, db=0)
r = valkey.Valkey(connection_pool=pool)

Alternatively, you might want to look at Async connections, or Cluster connections, or even Async Cluster connections.

Valkey Commands

There is built-in support for all of the out-of-the-box Valkey commands. They are exposed using the raw Redis command names (HSET, HGETALL, etc.) except where a word (i.e. del) is reserved by the language. See the complete set of commands, or the documentation.

Documentation

Check out the documentation

Advanced Topics

The official Valkey command documentation does a great job of explaining each command in detail. valkey-py attempts to adhere to the official command syntax. There are a few exceptions:

  • MULTI/EXEC: These are implemented as part of the Pipeline class. The pipeline is wrapped with the MULTI and EXEC statements by default when it is executed, which can be disabled by specifying transaction=False. See more about Pipelines below.

  • SUBSCRIBE/LISTEN: Similar to pipelines, PubSub is implemented as a separate class as it places the underlying connection in a state where it can't execute non-pubsub commands. Calling the pubsub method from the Valkey client will return a PubSub instance where you can subscribe to channels and listen for messages. You can only call PUBLISH from the Valkey client (see this comment on issue #151 for details).

For more details, please see the documentation on advanced topics page.

Pipelines

The following is a basic example of a Valkey pipeline, a method to optimize round-trip calls, by batching Valkey commands, and receiving their results as a list.

pipe = r.pipeline()
pipe.set('foo', 5)
pipe.set('bar', 18.5)
pipe.set('blee', "hello world!")
pipe.execute()
# [True, True, True]

PubSub

The following example shows how to utilize Valkey Pub/Sub to subscribe to specific channels.

r = valkey.Valkey(...)
p = r.pubsub()
p.subscribe('my-first-channel', 'my-second-channel', ...)
p.get_message()
# {'pattern': None, 'type': 'subscribe', 'channel': b'my-second-channel', 'data': 1}

Author

You can read valkey-py sources on GitHub, or download it from pypi It was created as a fork of redis-py

Special thanks to:

  • Andy McCurdy (sedrik@gmail.com) the original author of redis-py.
  • Ludovico Magnocavallo, author of the original Python Redis client, from which some of the socket code is still used.
  • Alexander Solovyov for ideas on the generic response callback system.
  • Paul Hubbard for initial packaging support in redis-py.

Valkey

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

valkey-6.2.0rc2.tar.gz (4.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

valkey-6.2.0rc2-py3-none-any.whl (260.7 kB view details)

Uploaded Python 3

File details

Details for the file valkey-6.2.0rc2.tar.gz.

File metadata

  • Download URL: valkey-6.2.0rc2.tar.gz
  • Upload date:
  • Size: 4.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for valkey-6.2.0rc2.tar.gz
Algorithm Hash digest
SHA256 5349c5f6e5ff63307d536a629ddafdd1f4e1676660f050542984605ee44dc91d
MD5 af27225a913494e1490def3122eced86
BLAKE2b-256 f3b919e3c6ba3fdcb4937e5a6db45b9edcbce86823f67e89c88b58950d6ab4f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for valkey-6.2.0rc2.tar.gz:

Publisher: pypi-publish.yaml on valkey-io/valkey-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file valkey-6.2.0rc2-py3-none-any.whl.

File metadata

  • Download URL: valkey-6.2.0rc2-py3-none-any.whl
  • Upload date:
  • Size: 260.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for valkey-6.2.0rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 f7b888c08f7b2fcfd13f4e550c04c6302775908dc76f934f3a7d9468e2aafff2
MD5 1bb88cf541b2551d24a4d5fc67de6227
BLAKE2b-256 8880ae6ffec49b70cf354d2e9e808b9b2ef3dad63d68f3a9fe88b5663eb8fcb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for valkey-6.2.0rc2-py3-none-any.whl:

Publisher: pypi-publish.yaml on valkey-io/valkey-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page