Coder Social home page Coder Social logo

toredis's Introduction

TOREDIS

This is minimalistic, but feature rich redis client for Tornado built on top of hiredis protocol parser.

Supports all redis commands, which are auto-generated from the redis JSON documentation file.

Key design points:

  1. While toredis attempts to add some syntactical sugar to the API, all responses are returned "as is". For example, if command returns list of items and developer requested only one key, list with one entry will be returned. For example:

    def handle(self, result):
        print(len(result))
    
    conn.hkeys('test1', handle)
  2. Most redis commands accept one or more keys. Toredis adds a bit of logic to handle single key or array of keys. Due to python limitations, it is not possible to use *args with named callback argument, so you will have to pass array of key names:

    # This will work
    conn.blpop('test', callback=callback)
    conn.blpop(['test', 'test2'], callback=callback)
    
    # This won't work
    conn.blpop('test', 'test2', callback=callback)
  3. If redis connection will be dropped while waiting for response, callback will be triggered with None as a value.
  4. Toredis does not provide reconnection feature, but you can override ~toredis.Client.on_disconnect method and implement your reconnection logic.

You can find command documentation here (will be moved to rtd later).

Pipelining is also supported:

# For more than one pipeline for connection create it with Pipeline(conn)
pipeline = conn.pipeline()
pipeline.set('foo', 'bar')
pipeline.get('foo')
pipeline.send(callback=callback)

For more examples please refer to tests. More on redis pipelining.

Things missing:

  • Backport pure-python redis protocol parser (for PyPy support)
  • Connection pools

toredis's People

Contributors

dmgening avatar ei-grad avatar joshmarshall avatar mrjoes avatar ovidiucp avatar swiecmich avatar vasylnakvasiuk avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.