Skip to main content

An redis python datastructures package.

Project description

redis-cooker

GitHub Build Status codecov PyPI

An redis python datastructures package

Installation

To install redis-cooker, simply:

$ pip install redis-cooker

or from source:

$ python setup.py install

Getting Started

>>> from redis_cooker.clients import set_connection_url
>>> from redis_cooker.collections import RedisList
>>>
>>> set_connection_url('redis://:@127.0.0.1:6379/15')
>>> for i in RedisList("Testing:RedisList", init=['Hello', 'World']):
>>>     print(i)
Hello
World

By default, all data will use the built-in json serializer.

Attention!

  • If the key has existed in Redis, new object will connect to the existed key and ignore the "init" value.
  • For complex operations, redis-cooker uses lua instead of python.

Datastructures

redis-cooker provide 6 datastructures in current version:

  • collections: RedisMutableSet, RedisString, RedisList, RedisDict, RedisDeque, RedisDefaultDict
  • others: ABNTest

Integration with Pydantic

>>> from typing import List
>>>
>>> from pydantic import BaseModel
>>> from redis_cooker.clients import set_connection_url
>>> from redis_cooker.collections import RedisList
>>>
>>> set_connection_url('redis://:@127.0.0.1:6379/15')
>>>
>>>
>>> class Person(BaseModel):
        name: str
        age: int
>>>
>>>
>>> data = [{"name": "A", "age": 15},{"name": "B", "age": "16"}]
>>> for i in RedisList("Testing:Pydantic", init=data, schema=Person):
>>>     print(i)
{'name': 'A', 'age': 15}
{'name': 'B', 'age': '16'}

Integration with DRF Serializer

>>> from typing import List
>>>
>>> from rest_framework import serializers
>>> from redis_cooker.clients import set_connection_url
>>> from redis_cooker.collections import RedisList
>>>
>>> set_connection_url('redis://:@127.0.0.1:6379/15')
>>>
>>>
>>> class DRFPerson(serializers.Serializer):
        name = serializers.CharField()
        age = serializers.IntegerField()
>>>
>>>
>>> data = [{"name": "A", "age": 15},{"name": "B", "age": "16"}]
>>> for i in RedisList("Testing:DRF", init=data, schema=DRFPerson):
>>>     print(i)
OrderedDict([('name', 'A'), ('age', 15)])
OrderedDict([('name', 'B'), ('age', 16)])

Use ABNTest in your internal A/B Test

>>> from redis_cooker.abn_test import ABNTest, Choice
>>> from redis_cooker.clients import current_redis_client, set_connection_url
>>>
>>> set_connection_url('redis://:@127.0.0.1:6379/15')
>>> client = current_redis_client()
>>>
>>> topic = "lead comment"
>>> choices = [Choice(name="A", value=5), Choice(name="B", value=5), Choice(name="C", value=2)]
>>> abn_test = ABNTest(topic, choices)
>>> choice = abn_test.fetch()

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

redis-cooker-2020.12.1.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

redis_cooker-2020.12.1-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file redis-cooker-2020.12.1.tar.gz.

File metadata

  • Download URL: redis-cooker-2020.12.1.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.12

File hashes

Hashes for redis-cooker-2020.12.1.tar.gz
Algorithm Hash digest
SHA256 23c1cab5dfb236d25012aa6ba14832730571c268f22ff54f79514fbc664998c5
MD5 27ab9a747d9b3a98a2435326749268d3
BLAKE2b-256 acc59c603ad781b9f6d82ff4ac183f0a3f6295053ac07b8b5b18034134ede065

See more details on using hashes here.

File details

Details for the file redis_cooker-2020.12.1-py3-none-any.whl.

File metadata

  • Download URL: redis_cooker-2020.12.1-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.12

File hashes

Hashes for redis_cooker-2020.12.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f3c4b1ae805bce65eff527bbc2a5ab365ef59ba197d4bae405f033c3ab5c1915
MD5 0a3f46bce0304ae2bfeca6d0a31d2405
BLAKE2b-256 45eaaa8d3c5af1dabb479985c90c49f304a3392389e57a60abca06761c36a58f

See more details on using hashes here.

Supported by

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