- Handle blank
STAT
values.
Client.get
returns the default when usingignore_exc
and if memcached is unavailable- Added
noreply
support toHashClient.flush_all
.
- Sockets are now closed on
MemcacheUnexpectedCloseError
. - Added support for TCP keepalive for client sockets on Linux platforms.
- Added retrying mechanisms by wrapping clients.
- Idle connections will be removed from the pool after
pool_idle_timeout
.
- Fix
HashClient.{get,set}_many()
with UNIX sockets.
- Remove trailing space for commands that don't take arguments, such as
stats
. This was a violation of the memcached protocol.
- CAS operations will now raise
MemcacheIllegalInputError
whenNone
is given as thecas
value.
- Added IPv6 support for TCP socket connections. Note that IPv6 may be used in preference to IPv4 when passing a domain name as the host if an IPv6 address can be resolved for that domain.
HashClient
now supports UNIX sockets.
HashClient
can now be imported from the top-levelpymemcache
package (e.g.pymemcache.HashClient
).HashClient.get_many()
now longer storesFalse
for missing keys from unavailable clients. Instead, the result won't contain the key at all.- Added missing
HashClient.close()
andHashClient.quit()
.
PooledClient
andHashClient
now support customClient
classes
- Improve
MockMemcacheClient
to behave even more likeClient
- Add TLS support for TCP sockets.
- Fix corner case when dead hashed server comes back alive.
- Make MockMemcacheClient more consistent with the real client.
- Pass
encoding
from HashClient to its pooled clients whenuse_pooling
is enabled.
- The serialization API has been reworked. Instead of consuming a serializer
and deserializer as separate arguments, client objects now expect an argument
serde
to be an object which implementsserialize
anddeserialize
as methods. (serialize
anddeserialize
are still supported but considered deprecated.) - Validate integer inputs for
expire
,delay
,incr
,decr
, andmemlimit
-- non-integer values now raiseMemcacheIllegalInputError
- Validate inputs for
cas
-- values which are not integers or strings of 0-9 now raiseMemcacheIllegalInputError
- Add
prepend
andappend
support toMockMemcacheClient
. - Add the
touch
method toHashClient
. - Added official support for Python 3.8.
- Fix
long_description
string in Python packaging.
- Fix
flags
when setting multiple differently-typed values at once.
- Drop official support for Python 3.4.
- Use
setup.cfg
metadata insteadsetup.py
config to generate package. - Add
default_noreply
parameter toHashClient
. - Add
encoding
parameter toClient
constructors (defaults toascii
). - Add
flags
parameter to write operation methods. - Handle unicode key values in
MockMemcacheClient
correctly. - Improve ASCII encoding failure exception.
- Fix
setup.py
dependency on six already being installed.
- Public classes and exceptions can now be imported from the top-level
pymemcache
package (e.g.pymemcache.Client
). #197 - Add UNIX domain socket support and document server connection options. #206
- Add support for the
cache_memlimit
command. #211 - Commands key are now always sent in their original order. #209
- Change set_many and set_multi api return value. #179
- Fix support for newbytes from python-future. #187
- Add support for Python 3.7, and drop support for Python 3.3
- Properly batch Client.set_many() call. #182
- Improve _check_key() and _store_cmd() performance. #183
- Properly batch Client.delete_many() call. #184
- Add option to explicitly set pickle version used by serde. #190
pypy3 to travis test matrix
full benchmarks in test
fix flake8 issues
Have mockmemcacheclient support non-ascii strings
Switch from using pickle format 0 to the highest available version. See #156
Warning: different versions of python have different highest pickle versions: https://docs.python.org/3/library/pickle.html
- Documentation improvements
- Fixed cachedump stats command, see #103
- Honor default_value in HashClient
- Drop support for python 2.6, see #109
- Python 3 serializations fixes #131
- Drop support for pypy3
- Comment cleanup
- Add gets_many to hash_client
- Better checking for illegal chars in key
- Unicode keys support. It is now possible to pass the flag
allow_unicode_keys
when creating the clients, thanks @jogo! - Fixed a bug where PooledClient wasn't following
default_noreply
arg set on init, thanks @kols! - Improved documentation
- use cpickle instead of pickle when possible (python2)
- default parameter on get(key, default=0)
- fixed docs to autogenerate themselves with sphinx
- fix linter to work with python3
- improve error message on illegal Input for the key
- refactor stat parsing
- fix MockMemcacheClient
- fix unicode char in middle of key bug
- Fix flake8 and cleanup tox building
- Fix security vulnerability by sanitizing key input
- Bug fix for HashClient when retries is set to zero.
- Adding the VERSION command to the clients.
- Bug fix for the HashClient that corrects behavior when there are no working servers.
- Adding caching to the Travis build.
- A bug fix for pluggable hashing in HashClient.
- Adding a default_noreply argument to the Client ctor.
- Making the location of Memcache Exceptions backwards compatible.
- Python 3 Support
- Introduced HashClient that uses consistent hasing for allocating keys across many memcached nodes. It also can detect servers going down and rebalance keys across the available nodes.
- Retry sock.recv() when it raises EINTR
- Introduced PooledClient a thread-safe pool of clients