An redis python datastructures package.
Project description
redis-cooker
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
Release history Release notifications | RSS feed
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 hashes)
Built Distribution
Close
Hashes for redis_cooker-2020.12.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3c4b1ae805bce65eff527bbc2a5ab365ef59ba197d4bae405f033c3ab5c1915 |
|
MD5 | 0a3f46bce0304ae2bfeca6d0a31d2405 |
|
BLAKE2b-256 | 45eaaa8d3c5af1dabb479985c90c49f304a3392389e57a60abca06761c36a58f |