redis-collections is a Python library that provides a high-level interface to Redis, the excellent key-value store.
Install the library with pip install redis-collections. Import the collections from the top-level redis_collections package.
The standard collections (e.g. Dict, List, Set) behave like their Python counterparts:
>>>fromredis_collectionsimportDict, List, Set>>>D=Dict() >>>D['answer'] =42>>>D['answer'] 42| Collection | Redis type | Description |
|---|---|---|
Dict | Hash | Emulates Python's dict |
List | List | Emulates Python's list |
Set | Set | Emulates Python's set |
Counter | Hash | Emulates Python's collections.Counter |
DefaultDict | Hash | Emulates Python's collections.defaultdict |
Deque | List | Emulates Python's collections.deque |
The syncable collections in this package provide types whose contents are kept in memory. When their sync method is called those contents are written to Redis:
>>>fromredis_collectionsimportSyncableDict>>>withSyncableDict() asD: ... D['a'] =1# No write to Redis ... D['a'] +=1# No read from or write to Redis>>>D['a'] # D.sync() is called at the end of the with block2| Collection | Python type | Description |
|---|---|---|
SyncableDict | dict | Syncs to a Redis Hash |
SyncableList | list | Syncs to a Redis List |
SyncableSet | set | Syncs to a Redis Set |
SyncableCounter | collections.Counter | Syncs to a Redis Hash |
SyncableDeque | collections.deque | Syncs to a Redis List |
SyncableDefaultDict | collections.defaultdict | Syncs to a Redis Hash |
The LRUDict collection stores recently used items in in memory. It pushes older items to Redis:
>>>fromredis_collectionsimportLRUDict>>>D=LRUDict(maxsize=2) >>>D['a'] =1>>>D['b'] =2>>>D['c'] =2# 'a' is pushed to Redis and 'c' is stored locally>>>D['a'] # 'b' is pushed to Redis and 'a' is retrieved for local storage1>>>D.sync() # All items are copied to RedisThe SortedSetCounter provides access to the Redis Sorted Set type:
>>>fromredis_collectionsimportSortedSetCounter>>>ssc=SortedSetCounter([('earth', 300), ('mercury', 100)]) >>>ssc.set_score('venus', 200) >>>ssc.get_score('venus') 200.0>>>ssc.items() [('mercury', 100.0), ('venus', 200.0), ('earth', 300.0)]For more information, see redis-collections.readthedocs.io
- Bo Bayles (@bbayles)
- Honza Javorek (@honzajavorek)
© 2013-? Honza Javorek <mail@honzajavorek>
This work is licensed under ISC license.