Package: pyaioredis
pyaioredis📢🚨 Aioredis is now in redis-py 4.2.0rc1+ 🚨🚨Aioredis is now in redis-py 4.2.0rc1+To install, just dopip install redis>=4.2.0rc1. The code is almost the exact same. You will just need to import like so:fromredisimportasyncioaspyaioredisThis way you don't have to change all your code, just the imports.https://github.com/462548187/pyaioredis.gitNow that pyaioredis is under Redis officially, I hope there will never be an unmaintained, asyncio Redis lib in the Python ecosystem again. I will be helping out maintenance at Redis-py for the foreseeable future just to get some of the asyncio stuff out of the way. There are also some bugs that didn't make it into thePRthat I'll be slowly migrating over throughout the next few weeks -- so long as my exams don't kill me beforehand :)Thank you all so much for your commitment to this repository! Thank you so much to @abrookins @seandstewart @bmerry for all the commits and maintenance. And thank you to everyone here who has been adopting the new code base and squashing bugs. It's been an honor!Cheers,
Andrewasyncio (3156) Redis client library.The library is intended to provide simple and clear interface to Redis
based on asyncio.FeaturesFeatureSupportedhiredis parser:white_check_mark:Pure-python parser:white_check_mark:Low-level & High-level APIs:white_check_mark:Pipelining support:white_check_mark:Multi/Exec support:white_check_mark:Connections Pool:white_check_mark:Pub/Sub support:white_check_mark:Sentinel support:white_check_mark:ACL support:white_check_mark:Streams support:white_check_mark:Redis Cluster support:no_entry_sign:Tested Python versions3.6, 3.7, 3.8, 3.9, 3.10, 3.11Tested for Redis servers5.0, 6.0Support for dev Redis serverthrough low-level APIInstallationThe easiest way to install pyaioredis is by using the package on PyPi:pip install pyaioredisRecommended with hiredis for performance and stability reasons:pip install hiredisRequirementsPython 3.6+hiredis (Optional but recommended)async-timeouttyping-extensionsBenchmarksBenchmarks can be found here:https://github.com/popravich/python-redis-benchmarkContributeIssue Tracker:https://github.com/aio-libs/pyaioredis/issuesGoogle Group:https://groups.google.com/g/aio-libsGitter:https://gitter.im/aio-libs/LobbySource Code:https://github.com/aio-libs/pyaioredisContributor's guide:develFeel free to file an issue or make pull request if you find any bugs or
have some suggestions for library improvement.LicenseThe pyaioredis is offered under aMIT License.Changelog2.0.1 - (2021-12-20)FeaturesAdded Python 3.10 to CI & Updated the Docs
(see #1160)Enable mypy in CI (see #1101)Synchronized reading the responses from a connection
(see #1106)FixesRemovedelfrom Redis (Fixes #1115)
(see #1227)fix socket.error raises (see #1129)Fix buffer is closed error when using PythonParser class
(see #1213)2.0.0 - (2021-03-18)FeaturesPort redis-py's client implementation to aioredis.(see #891)Make hiredis an optional dependency.(see #917)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)FeaturesImplemented new Stream command support(see #299)Reduceencode_command()cost about 60%(see #397)BugfixesFix pipeline commands buffering was causing multiplesendtosyscalls(see #464)
and  #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)MiscellaneousUpdate dependencies versionsMultiple tests improvements1.1.0 (2018-02-16)FeaturesImplement new commands:wait,touch,swapdb,unlink(see #376)Addasync_opargument toflushallandflushdbcommands(see #364, #370)BugfixesImportant!Fix Sentinel sentinel client with poolminsizegreater than 1(see #380)FixSentinelPool.discover_timeoutusage(see #379)FixReceiverhang on disconnect(see #354, #366)Fix an issue withsubscribe/psubscribewith empty pool(see #351, #355)Fix an issue whenStreamReader's feed_data is called before set_parser(see #347)MiscellaneousUpdate dependencies versionsMultiple test fixes1.0.0 (2017-11-17)FeaturesImportant!Drop Python 3.3, 3.4 support(see #321, #323, #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 insteadImplement 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)BugfixesFixCancelledErrorinconn._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_poolFix 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)MiscellaneousMultiple test fixesAdd PyPy3 to build matrixUpdate dependencies versionsAdd missing Python 3.6 classifier0.3.5 (2017-11-08)BugfixesFix for indistinguishable futures cancellation withasyncio.CancelledError(see #316, cherry-picked from master)0.3.4 (2017-10-25)BugfixesFix time command result decoding when using connection-wide encoding setting(see #266)0.3.3 (2017-06-30)BugfixesCritical bug fixed in patched asyncio.Lock(see #256)0.3.2 (2017-06-21)FeaturesAddedzrevrangebylexcommand(see #201 cherry-picked from master)Add connection timeout(see #221, cherry-picked from master)BugfixesFixed pool close warning(see #239, #236,
cherry-picked from masterFixed asyncio Lock deadlock issue(see #231, #241)0.3.1 (2017-05-09)BugfixesFix pubsub Receiver missing iter() method(see #203)0.3.0 (2017-01-11)FeaturesPub/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 #177, #179)BugfixesMinor tests fixesMiscellaneousUpdate 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 requirements0.2.9 (2016-10-24)FeaturesAllow multiple keys inEXISTScommand(see #156, #157)BugfixesClose RedisPool when connection to Redis failed(see #136)Add simpleINFOcommand argument validation(see #140)Remove invalid uses ofnext()MiscellaneousUpdate devel.rst docs; update Pub/Sub Channel docs (cross-refs)Update MANIFEST.in to include docs, examples and tests in source bundle0.2.8 (2016-07-22)FeaturesAddhmset_dictcommand(see #130)AddRedisConnection.addresspropertyRedisPoolminsize/maxsizemust not beNoneImplementclose()/wait_closed()/closedinterface for pool(see #128)BugfixesAdd test forhstrlenTest fixesMiscellaneousEnable Redis 3.2.0 on TravisAdd spell checking when building docs(see #132)Documentation updated0.2.7 (2016-05-27)create_pool()minsize default value changed to 1Fixed cancellation of wait_closed(see #118)Fixedtime()conversion to float(see #126)Fixedhmset()method to return bool instead ofb'OK'(see [#12))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 [#12))Documentation updates0.2.6 (2016-03-30)Fixed Multi/Exec transactions cancellation issue(see #110, #114)Fixed Pub/Sub subscribe concurrency issue(see #113, #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 added0.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 #94, #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 #108, #109)Fix RedisPool to close and drop connection in subscribe mode on releaseFixaioredis.util.decodeto recursively decode list responsesMore examples added and docs updatedAdd google groups link to READMEBump year in LICENSE and docs0.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 updated0.2.3 (2015-08-14)Redis cluster support work in progressFixed pool issue causing pool growth over max size &acquirecall hangs(see #71)infoserver command result parsing implementedFixed behavior of util functions(see #70)hstrlencommand addedFew fixes in examplesFew fixes in documentation0.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, randomkeyhash commands: hgetall, hkeys, hmget, hvalslist commands: blpop, brpop, brpoplpush, lindex, lpop, lrange, rpop, rpoplpushset commands: smembers, spop, srandmemberstring commands: getrange, getset, mgetBackward incompatibility:ltrimcommand now returns bool value instead of 'OK'Tests updated0.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 addedFix inzrevrangebyscorecommand(see #62)Fixes/tests/docs0.1.5 (2014-12-09)AutoConnector addedwait_closed method added for clean connections shutdownzscorecommand fixedTest fixes0.1.4 (2014-09-22)Dropped following Redis methods --Redis.multi(),Redis.exec(),Redis.discard()Redis.multi_exechack'ish property removedRedis.multi_exec()method addedHigh-level commands implemented:generic commands (tests)transactions commands (api stabilization).Backward incompatibilities:Following sorted set commands' API changed:zcount,zrangebyscore,zremrangebyscore,zrevrangebyscoreset string command' API changed0.1.3 (2014-08-08)RedisConnection.execute refactored to support commands pipelining(see #33)Several fixesWIP on transactions and commands interfaceHigh-level commands implemented and tested:hash commandshyperloglog commandsset commandsscripting commandsstring commandslist commands0.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 releaseRedisConnection implementedRedisPool implementedDocs for RedisConnection & RedisPoolWIP on high-level API.