Package: evo-aioredis
asyncio (PEP 3156) Redis client library.FeatureshiredisparserYesPure-python parserYesLow-level & High-level APIsYesConnections PoolYesPipelining supportYesPub/Sub supportYesSSL/TLS supportYesSentinel supportYesRedis Cluster supportWIPTrollius (python 2.7)NoTested CPython versions3.6, 3.7, 3.8, 3.9, 3.10[1]Tested for Redis server2.6, 2.8, 3.0, 3.2, 4.0 5.0Support for dev Redis serverthrough low-level API[1]For Python 3.3, 3.4 support use aioredis v0.3.Documentationhttp://aioredis.readthedocs.io/Usage exampleSimple high-level interface with connections pool:importasyncioimportaioredisasyncdefgo():redis=awaitaioredis.create_redis_pool('redis://localhost')awaitredis.set('my-key','value')val=awaitredis.get('my-key',encoding='utf-8')print(val)redis.close()awaitredis.wait_closed()asyncio.run(go())# will print 'value'RequirementsPython3.6+hiredisNotehiredis is preferred requirement.
Pure-python protocol parser is implemented as well and can be used
throughparserparameter.BenchmarksBenchmarks can be found here:https://github.com/popravich/python-redis-benchmarkDiscussion listaio-libsgoogle group:https://groups.google.com/forum/#!forum/aio-libsOr gitter room:https://gitter.im/aio-libs/LobbyLicenseThe aioredis is offered under MIT license.Changes1.3.4 (2022-02-02)Fix deprecation warning with async_timeout>=4.x;1.3.3 (2022-01-31)Add Python 3.10 support;1.3.2 (2022-01-28)No changes, release for testing publish package with new name.1.3.1 (2019-12-02)BugfixesFix transaction data decoding
(see#657);Fix duplicate calls topool.wait_closed()uponcreate_pool()exception.
(see#671);Deprecations and RemovalsDrop explicit loop requirement in API.
Deprecateloopargument.
Throw warning in Python 3.8+ if explicitloopis passed to methods.
(see#666);Misc#643,#646,#648;1.3.0 (2019-09-24)FeaturesAddedxdelandxtrimmethod which missed incommands/streams.py& also added unit test code for them
(see#438);Addcountargument tospopcommand
(see#485);Add support forzpopmaxandzpopminredis commands
(see#550);Addtowncrier: change notes are now stored inCHANGES.txt(see#576);Type hints for the library
(see#584);A few additions to the sorted set commands:the blocking pop commands:BZPOPMAXandBZPOPMINtheCHandINCRoptions of theZADDcommand(see#618);Addedno_ackparameter toxread_groupstreams method incommands/streams.py(see#625);BugfixesFix for sensitive logging
(see#459);Fix slow memory leak inwait_closedimplementation
(see#498);Fix handling of instances were Redis returns null fields for a stream message
(see#605);Improved DocumentationRewrite “Getting started” documentation.
(see#641);Misc#585,#611,#612,#619,#620,#642;1.2.0 (2018-10-24)NEW:Implemented new Stream command support
(see#299);Reduceencode_command()cost about 60%
(see#397);FIX:Fix pipeline commands buffering was causing multiplesendtosyscalls
(see#464and#473);Python 3.7 compatibility fixes
(see#426);Fix typos in documentation
(see#400);FixINFOcommand result parsing
(see#405);Fix bug inConnectionsPool._drop_closedmethod
(see#461);MISC:Update dependencies versions;Multiple tests improvements;1.1.0 (2018-02-16)NEW:Implement new commands:wait,touch,swapdb,unlink(see#376);Addasync_opargument toflushallandflushdbcommands
(see#364,
and#370);FIX:Important!Fix Sentinel sentinel client with poolminsizegreater than 1
(see#380);FixSentinelPool.discover_timeoutusage
(see#379);FixReceiverhang on disconnect
(see#354,
and#366);Fix an issue withsubscribe/psubscribewith empty pool
(see#351,
and#355);Fix an issue whenStreamReader’s feed_data is called before set_parser
(see#347);MISC:Update dependencies versions;Multiple test fixes;1.0.0 (2017-11-17)NEW:Important!Drop Python 3.3, 3.4 support;
(see#321,#323and#326);Important!Connections pool has been refactored; nowcreate_redisfunction will yieldRedisinstance instead ofRedisPool(see#129);Important!Change sorted set commands reply format:
return list of tuples instead of plain list for commands
acceptingwithscoresargument
(see#334);Important!Changehscancommand reply format:
return list of tuples instead of mixed key-value list
(see#335);Implement Redis URI support as supportedaddressargument value
(see#322);Droppedcreate_reconnecting_redis,create_redis_poolshould be
used instead;Implement customStreamReader(see#273);Implement Sentinel support
(see#181);Implement pure-python parser
(see#212);Addmigrate_keyscommand
(see#187);Addzrevrangebylexcommand
(see#201);Addcommand,command_count,command_getkeysandcommand_infocommands
(see#229);Addpingsupport in pubsub connection
(see#264);Addexistparameter tozaddcommand
(see#288);AddMaxClientsErrorand implementReplyErrorspecialization
(see#325);Addencodingparameter to sorted set commands
(see#289);FIX:FixCancelledErrorinconn._reader_task(see#301);Fix pending commands cancellation withCancelledError,
use explicit exception instead of callingcancel()method
(see#316);Correct error message on Sentinel discovery of master/slave with password
(see#327);Fixbytearraysupport as command argument
(see#329);Fix critical bug in patched asyncio.Lock
(see#256);Fix Multi/Exec transaction canceled error
(see#225);Add missing arguments tocreate_redisandcreate_redis_pool;Fix deprecation warning
(see#191);Make correct__aiter__()(see#192);Backward compatibility fix forwith (yield from pool) as conn:(see#205);Fixed pubsub receiver stop()
(see#211);MISC:Multiple test fixes;Add PyPy3 to build matrix;Update dependencies versions;Add missing Python 3.6 classifier;0.3.5 (2017-11-08)FIX:Fix for indistinguishable futures cancellation withasyncio.CancelledError(see#316),
cherry-picked from master;0.3.4 (2017-10-25)FIX:Fix time command result decoding when using connection-wide encoding setting
(see#266);0.3.3 (2017-06-30)FIX:Critical bug fixed in patched asyncio.Lock
(see#256);0.3.2 (2017-06-21)NEW:Addedzrevrangebylexcommand
(see#201),
cherry-picked from master;Add connection timeout
(see#221),
cherry-picked from master;FIX:Fixed pool close warning
(see#239and#236),
cherry-picked from master;Fixed asyncio Lock deadlock issue
(see#231and#241);0.3.1 (2017-05-09)FIX:Fix pubsub Receiver missing iter() method
(see#203);0.3.0 (2017-01-11)NEW:Pub/Sub connection commands acceptChannelinstances
(see#168);Implement new Pub/Sub MPSC (multi-producers, single-consumer) Queue –aioredis.pubsub.Receiver(see#176);Addaioredis.abcmodule providing abstract base classes
defining interface for basic lib components;
(see#176);Implement Geo commands support
(see#177and#179);FIX:Minor tests fixes;MISC:Update examples and docs to useasync/awaitsyntax
also keepingyield fromexamples for history
(see#173);Reflow Travis CI configuration; add Python 3.6 section
(see#170);Add AppVeyor integration to run tests on Windows
(see#180);Update multiple development requirements;0.2.9 (2016-10-24)NEW:Allow multiple keys inEXISTScommand
(see#156and#157);FIX:Close RedisPool when connection to Redis failed
(see#136);Add simpleINFOcommand argument validation
(see#140);Remove invalid uses ofnext()MISC:Update devel.rst docs; update Pub/Sub Channel docs (cross-refs);Update MANIFEST.in to include docs, examples and tests in source bundle;0.2.8 (2016-07-22)NEW:Addhmset_dictcommand
(see#130);AddRedisConnection.addressproperty;RedisPoolminsize/maxsizemust not beNone;Implementclose()/wait_closed()/closedinterface for pool
(see#128);FIX:Add test forhstrlen;Test fixesMISC:Enable Redis 3.2.0 on Travis;Add spell checking when building docs
(see#132);Documentation updated;0.2.7 (2016-05-27)create_pool()minsize default value changed to 1;Fixed cancellation of wait_closed
(see#118);Fixedtime()conversion to float
(see#126);Fixedhmset()method to return bool instead ofb'OK'(see#126);Fixed multi/exec + watch issue (changed watch variable was causingtr.execute()to fail)
(see#121);Replaceasyncio.Futureuses with utility method
(get ready to Python 3.5.2loop.create_future());Tests switched from unittest to pytest (see#126);Documentation updates;0.2.6 (2016-03-30)Fixed Multi/Exec transactions cancellation issue
(see#110and#114);Fixed Pub/Sub subscribe concurrency issue
(see#113and#115);Add SSL/TLS support
(see#116);aioredis.ConnectionClosedErrorraised inexecute_pubsubas well
(see#108);Redis.slaveof()method signature changed: now to disable
replication one should callredis.slaveof(None)instead ofredis.slaveof();More tests added;0.2.5 (2016-03-02)Close all Pub/Sub channels on connection close
(see#88);Additer()method toaioredis.Channelallowing to use it
withasync for(see#89);Inline code samples in docs made runnable and downloadable
(see#92);Python 3.5 examples converted to useasync/awaitsyntax
(see#93);Fix Multi/Exec to honor encoding parameter
(see#94and#97);Add debug message increate_connection(see#90);Replaceasyncio.asynccalls with wrapper that respects asyncio version
(see#101);Use NODELAY option for TCP sockets
(see#105);Newaioredis.ConnectionClosedErrorexception added. Raised if
connection to Redis server is lost
(see#108and#109);Fix RedisPool to close and drop connection in subscribe mode on release;Fixaioredis.util.decodeto recursively decode list responses;More examples added and docs updated;Add google groups link to README;Bump year in LICENSE and docs;0.2.4 (2015-10-13)Python 3.5asyncsupport:New scan commands API (iscan,izscan,ihscan);Pool made awaitable (allowingwith await pool: ...andasync with pool.get() as conn:constructs);Fixed dropping closed connections from free pool
(see#83);Docs updated;0.2.3 (2015-08-14)Redis cluster support work in progress;Fixed pool issue causing pool growth over max size &acquirecall hangs
(see#71);infoserver command result parsing implemented;Fixed behavior of util functions
(see#70);hstrlencommand added;Few fixes in examples;Few fixes in documentation;0.2.2 (2015-07-07)Decoding data withencodingparameter now takes into account
list (array) replies
(see#68);encodingparameter added to following commands:generic commands: keys, randomkey;hash commands: hgetall, hkeys, hmget, hvals;list commands: blpop, brpop, brpoplpush, lindex, lpop, lrange, rpop, rpoplpush;set commands: smembers, spop, srandmember;string commands: getrange, getset, mget;Backward incompatibility:ltrimcommand now returns bool value instead of ‘OK’;Tests updated;0.2.1 (2015-07-06)Logging added (aioredis.log module);Fixed issue withwait_messagein pub/sub
(see#66);0.2.0 (2015-06-04)Pub/Sub support added;Fix inzrevrangebyscorecommand
(see#62);Fixes/tests/docs;0.1.5 (2014-12-09)AutoConnector added;wait_closed method added for clean connections shutdown;zscorecommand fixed;Test fixes;0.1.4 (2014-09-22)Dropped following Redis methods –Redis.multi(),Redis.exec(),Redis.discard();Redis.multi_exechack’ish property removed;Redis.multi_exec()method added;High-level commands implemented:generic commands (tests);transactions commands (api stabilization).Backward incompatibilities:Following sorted set commands’ API changed:zcount,zrangebyscore,zremrangebyscore,zrevrangebyscore;set string command’ API changed;0.1.3 (2014-08-08)RedisConnection.execute refactored to support commands pipelining
(see#33);Several fixes;WIP on transactions and commands interface;High-level commands implemented and tested:hash commands;hyperloglog commands;set commands;scripting commands;string commands;list commands;0.1.2 (2014-07-31)create_connection,create_pool,create_redisfunctions updated:
db and password arguments made keyword-only
(see#26);Fixed transaction handling
(see#32);Response decoding
(see#16);0.1.1 (2014-07-07)Transactions support (in connection, high-level commands have some issues);Docs & tests updated.0.1.0 (2014-06-24)Initial release;RedisConnection implemented;RedisPool implemented;Docs for RedisConnection & RedisPool;WIP on high-level API.