Fork of direct_redis with redis version bumped up to support asynchronous calls.
Project description
Direct-Redis (Async)
- Serialize any python datatypes and executes redis commands using redis-py
- When loading, it auutomatically converts serialized data into original data types
Getting Started
Install via pypi
pip install async-direct-redis
Instantiate
from direct_redis import AsyncDirectRedis
r = AsyncDirectRedis(host='localhost', port=6379)
All methods should be awaited
Supporting Data Types
- Built-in
- string
- number(int, float)
- dictionary
- list
- tuple
- etc (all other python built-in types)
- Module Classes
- pandas
- numpy
Supporting Redis Commands
Direct-Redis Supports
- Basic Functions
- KEYS
- RANDOMKEY
- TYPE
- SET
- GET
- Hash Functions
- HKEYS
- HSET
- HMSET
- HGET
- HMGET
- HGETALL
- HVALS
- Set Functions
- SADD
- SREM
- SMEMBERS
- SPOP
- SDIFF
- SCARD (Default)
- SRANDMEMBER
- List Functions
- LPUSH
- RPUSH
- LPUSHX
- RPUSHX
- LRANGE
- LPOP
- RPOP
- LINDEX
Examples
String
- Originally redis stores string into bytes.
>>> s = "This is a String. \n스트링입니다."
>>> print(s)
This is a String.
스트링입니다.
>>> r.set('s', s)
>>> r.get('s')
'This is a String. \n스트링입니다.'
>>> type(r.get('s'))
<class 'str'>
Numbers
>>> mapping = {
... 'a': 29,
... 'b': 0.5335113,
... 'c': np.float64(0.243623466363223),
... }
>>> r.hmset('nums', mapping)
>>> r.hmget('nums', *mapping.keys())
[29, 0.5335113, 0.243623466363223]
>>> list(mapping.values()) == r.hmget('nums', *mapping.keys())
True
Nested Dictionaries and Lists
>>> l = [1,2,3]
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> r.hmset('list and dictionary', {'list': l, 'dict': d})
>>> r.hgetall("list and dictionary")
{'list': [1, 2, 3], 'dict': {'a': 1, 'b': 2, 'c': 3}}
>>> type(r.hgetall("list and dictionary")['list'])
<class 'list'>
>>> type(r.hgetall("list and dictionary")['dict'])
<class 'dict'>
Pandas DataFrame
>>> df = pd.DataFrame([[1,2,3,'235', '@$$#@'],
['a', 'b', 'c', 'd', 'e']])
>>> print(df)
0 1 2 3 4
0 1 2 3 235 @$$#@
1 a b c d e
>>> r.set('df', df)
>>> r.get('df')
0 1 2 3 4
0 1 2 3 235 @$$#@
1 a b c d e
>>> type(r.get('df'))
<class 'pandas.core.frame.DataFrame'>
Numpy Array
>>> arr = np.random.rand(10).reshape(5, 2)
>>> print(arr)
[[0.25873887 0.00937433]
[0.0472811 0.94004351]
[0.92743943 0.93898677]
[0.87706341 0.85135288]
[0.06390652 0.86362001]]
>>> r.set('a', arr)
>>> r.get('a')
array([[0.25873887, 0.00937433],
[0.0472811 , 0.94004351],
[0.92743943, 0.93898677],
[0.87706341, 0.85135288],
[0.06390652, 0.86362001]])
>>> type(r.get('a'))
<class 'numpy.ndarray'>
Author
direct-redis
is developed and maintained by Yonghee Cheon (yonghee.cheon@gmail.com).
It can be found here: https://github.com/yonghee12/direct-redis
Special thanks to:
- Andy McCurdy, the author of redis-py.
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 Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file async_direct_redis-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: async_direct_redis-0.3.1-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fcca2878e008d28a3c507504b05182190a9e0d57e6d27ca7782cb43bc5329602 |
|
MD5 | 472550bce7df675e629a7ce3b590e09e |
|
BLAKE2b-256 | b065d870d5aef15d9b588a625608b3b0df7f642484a67ed63490e151ac494289 |