Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
asyncio (3156) Redis client library.
The library is intended to provide simple and clear interface to Redis based on asyncio.
Feature | Supported |
---|---|
hiredis 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 versions | 3.6, 3.7, 3.8, 3.9, 3.10 |
Tested for Redis servers | 5.0, 6.0 |
Support for dev Redis server | through low-level API |
The easiest way to install aioredis is by using the package on PyPi:
pip install aioredis
Recommended with hiredis for performance and stability reasons:
pip install hiredis
Benchmarks can be found here: https://github.com/popravich/python-redis-benchmark
Feel free to file an issue or make pull request if you find any bugs or have some suggestions for library improvement.
The aioredis is offered under a MIT License.
Port redis-py's client implementation to aioredis.
(see #891)
Make hiredis an optional dependency.
(see #917)
pool.wait_closed()
upon create_pool()
exception.loop
argument.
Throw warning in Python 3.8+ if explicit loop
is passed to methods.xdel
and xtrim
method which missed in commands/streams.py
& also added unit test code for themcount
argument to spop
commandzpopmax
and zpopmin
redis commandstowncrier
: change notes are now stored in CHANGES.txt
BZPOPMAX
and BZPOPMIN
CH
and INCR
options of the ZADD
commandno_ack
parameter to xread_group
streams method in commands/streams.py
wait_closed
implementationencode_command()
cost about 60%sendto
syscallsINFO
command result parsingConnectionsPool._drop_closed
methodwait
, touch
, swapdb
, unlink
async_op
argument to flushall
and flushdb
commandsminsize
greater than 1SentinelPool.discover_timeout
usageReceiver
hang on disconnectsubscribe
/psubscribe
with empty poolStreamReader
's feed_data is called before set_parserImportant! Drop Python 3.3, 3.4 support
(see #321, #323, #326)
Important! Connections pool has been refactored; now create_redis
function will yield Redis
instance instead of RedisPool
(see #129)
Important! Change sorted set commands reply format:
return list of tuples instead of plain list for commands
accepting withscores
argument
(see #334)
Important! Change hscan
command reply format:
return list of tuples instead of mixed key-value list
(see #335)
Implement Redis URI support as supported address
argument value
(see #322)
Dropped create_reconnecting_redis
, create_redis_pool
should be
used instead
Implement custom StreamReader
(see #273)
Implement Sentinel support
(see #181)
Implement pure-python parser
(see #212)
Add migrate_keys
command
(see #187)
Add zrevrangebylex
command
(see #201)
Add command
, command_count
, command_getkeys
and
command_info
commands
(see #229)
Add ping
support in pubsub connection
(see #264)
Add exist
parameter to zadd
command
(see #288)
Add MaxClientsError
and implement ReplyError
specialization
(see #325)
Add encoding
parameter to sorted set commands
(see #289)
CancelledError
in conn._reader_task
CancelledError
,
use explicit exception instead of calling cancel()
methodbytearray
support as command argumentcreate_redis
and create_redis_pool
__aiter__()
with (yield from pool) as conn:
asyncio.CancelledError
zrevrangebylex
commandChannel
instancesaioredis.pubsub.Receiver
aioredis.abc
module providing abstract base classes
defining interface for basic lib components (see #176)async
/await
syntax
also keeping yield from
examples for historyEXISTS
commandINFO
command argument validationnext()
hmset_dict
commandRedisConnection.address
propertyminsize
/maxsize
must not be None
close()
/wait_closed()
/closed
interface for poolhstrlen
create_pool()
minsize default value changed to 1time()
conversion to floathmset()
method to return bool instead of b'OK'
tr.execute()
to fail)asyncio.Future
uses with utility methodloop.create_future()
)aioredis.ConnectionClosedError
raised in execute_pubsub
as wellRedis.slaveof()
method signature changed: now to disable
replication one should call redis.slaveof(None)
instead of redis.slaveof()
iter()
method to aioredis.Channel
allowing to use it
with async for
async
/await
syntaxcreate_connection
asyncio.async
calls with wrapper that respects asyncio versionaioredis.ConnectionClosedError
exception added. Raised if
connection to Redis server is lostaioredis.util.decode
to recursively decode list responsesPython 3.5 async
support:
iscan
, izscan
, ihscan
)with await pool: ...
and async with pool.get() as conn:
constructs)Fixed dropping closed connections from free pool
(see #83)
Docs updated
acquire
call hangsinfo
server command result parsing implementedhstrlen
command addedDecoding data with encoding
parameter now takes into account
list (array) replies
(see #68)
encoding
parameter added to following commands:
Backward incompatibility:
ltrim
command now returns bool value instead of 'OK'
Tests updated
wait_message
in pub/subzrevrangebyscore
commandzscore
command fixedDropped following Redis methods -- Redis.multi()
,
Redis.exec()
, Redis.discard()
Redis.multi_exec
hack'ish property removed
Redis.multi_exec()
method added
High-level commands implemented:
Backward incompatibilities:
Following sorted set commands' API changed:
zcount
, zrangebyscore
, zremrangebyscore
, zrevrangebyscore
set string command' API changed
RedisConnection.execute refactored to support commands pipelining
(see #33)
Several fixes
WIP on transactions and commands interface
High-level commands implemented and tested:
create_connection
, create_pool
, create_redis
functions updated: db and password
arguments made keyword-onlyFAQs
asyncio (PEP 3156) Redis support
We found that aioredis demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.