This document describes changes to the APIs.
- Upstream decided to play around with XPENDING again.
- Add support for
minid
andlimit
parameters onStream.trim()
, #169 - Cache decorators now cache calls that return
None
, #171
- Backwards incompatible change: redis-py changed the signature of the
xpending_range
function. This is resolved in walrus 0.9.0. - Add support for
autoclaim()
to theConsumerGroupStream
class. - Minor changes to the stop-word handling in
autocomplete
module.
- Use
HSET
instead ofHMSET
. - Add a
search_items()
method to the full-text index which returns a 2-tuple of(key, doc)
. - Add a timeout parameter to
bmove_tail
andbrpoplpush
wrappers. - Allow disabling lua script-loading for faster initialization (for applications that do not intend to utilize these features).
- Fix missing parameter in error message, #105.
- Remove redundant call to
delete()
when using Modelcreate()
API. - Fix TTL units and lock event wait timeout handling.
- Adds
Hash.setnx()
method to the hash container. - Do not double-decode strings when user has enabled decode_responses, #121.
- Fix mapping of types in
get_key()
method to return the proper container type, #120.
- Adds efficient bulk get, set and delete methods to the
Cache
class. - Fixes
repr
issues with some of the container types. - Fixed an inefficiency in the implementation of the
Graph
storage that cuts the amount of memory needed in half. - Fixed issues with unicode handling in the full-text search implementation.
Depends on redis-py 3.0 or newer. There are a number of backwards-incompatible changes in redis-py. Because walrus provides high-level abstractions for the Redis data-types/commands, your walrus code should work with little or no modifications. Refer to the list of changes for more information.
redis-py added support for stream
commands as well as zpop/bzpop. As a result, walrus no longer contains separate
implementations for these commands. For the majority of cases the low-level
method signatures and return values are unchanged, notably, the XREADGROUP
return value is slightly different. The timeout
parameter, where it was
accepted, has been renamed to block
for greater compatibility with redis-py.
Prior to 0.7.0, you would read from a consumer-group (which might contain one
or more streams) and receive a dict
keyed by the stream, whose value was a
list of (message_id, data)
2-tuples. Going forward, the return value will be
a list of [stream_name, [(message_id, data), ...]]
. To retain the
functionality of walrus prior-to 0.7.0, just wrap the return value in a call to
the dict
constructor: ret = dict(consumer_group.read(count=1))
.
- Added BloomFilter
container type, which supports
add()
andcontains()
. - Added a high-level BitField container type.
- Stream support added, including consumer groups.
- Support for
zpopmin
,zpopmax
, and the blockingbzpopmin
,bzpopmax
- Added APIs to container classes for converting to-and-from native data-types.
- Added atomic compare-and-set method to database.
- Fixed incompatibilities with Python 3.7.
- Fixed incorrect result scoring in full-text search model.
- Added standalone full-text search.
- Refactored various internal classes that support the new standalone full-text search index.
- The
models
API uses a backwards-incompatible serialization approach. This means that data stored using 0.4.1 cannot be read back using 0.5.0. Field()
no longer supportspickled
oras_json
parameters. Instead, use thePickledField
andJSONField
.