Redis Protocol

February 12, 2015 · View on GitHub

=============================== Redis Protocol

.. image:: https://badge.fury.io/py/redis_protocol.png :target: http://badge.fury.io/py/redis_protocol

.. image:: https://travis-ci.org/youngking/redis_protocol.png?branch=master :target: https://travis-ci.org/youngking/redis_protocol

.. image:: https://pypip.in/d/redis_protocol/badge.png :target: https://crate.io/packages/redis_protocol?version=latest

Redis Protocol implemented by python

Usage

This is the protocol implemented followed by redis protocol specification <http://redis.io/topics/protocol>. I had used it in my redis_proxy <https://github.com/youngking/redis_proxy> project.

::

>>> from redis_protocol import decode, encode
>>> encode("ping")  # encode a request 
... '*1\r\n\$4\r\nping\r\n'
>>> decode('*1\r\n\$4\r\nping\r\n') # decode a request body
... ["ping"]
>>> decode("\$6\r\nfoobar\r\n")  # decode a response
... "foobar"

parse redis protocol stream

parse redis protocol stream to redis commands,such as redis pipeline requests or raw responses.

::

>>> from redis_protocol import parse_stream
>>> data = '*3\r\n\$3\r\nSET\r\n\$15\r\nmemtier-8232902\r\n\$2\r\nxx\r\n' \
       '*3\r\n\$3\r\nSET\r\n\$15\r\nmemtier-8232902\r\n\$2\r\nxx\r\n' \
       '*3\r\n\$3\r\nSET\r\n\$15\r\nmemtier-7630684\r\n\$3\r\nAAA\r\n'
>>> print(parse_stream(data))
... ['SET memtier-8232902 xx', 'SET memtier-8232902 xx', 'SET memtier-7630684 AAA']