Subject: | [PATCH] feature additions - most of them from Cache::Memcached::Fast |
This bug report is actually an enhancement request/patch.
The new features are documented and include full tests. Some additional
tests for the existing code, as well as some benchmarks, have also been added.
The CMFast (Cache::Memcached::Fast) contains features that are currently
available in Cache::Memcached::Fast, and uses the same API.
The "digest_keys" feature is one I have not found elsewhere, so I have
included it as a separate patch. It's also something that *could* be
implemented via a wrapper class or a class inheriting from C:M, though
that would be messier and slower.
These features are also being made available on github:
https://github.com/unrtst/Cache-Memcached/tree/CMFastFeatures
https://github.com/unrtst/Cache-Memcached/tree/DigestKeys
https://github.com/unrtst/Cache-Memcached/tree/bugfix-1.30
Please consider these for inclusion in Cache::Memcached.
This code is being supplied under the same license as Cache::Memcached:
Show quoted text
> You may distribute under the terms of either the GNU General Public
> License or the Artistic License, as specified in the Perl README file.
patch Cache-Memcached-CMFast-features.patch:
* Add many features currently found in Cache::Memcached::Fast:
compress_ratio
max_size
compress_methods
serialize_methods
hash_namespace
* Add tests for new features:
t/08_compression.t
t/09_serialize_methods.t
t/10_compress_methods.t
t/13_max_size.t
t/14_compress_ratio.t
t/16_hash_namespace.t
* Add benchmark scripts:
script/benchmark_method_overrides.pl
script/benchmark_simple.pl
* Includes bugfixes from rt#93094 : bugfix for deleting keys that contain utf8 values
https://rt.cpan.org/Ticket/Display.html?id=93094&results=743fb0e21e93e45119cc98b2eb1a3e9f
** * Fix delete with utf8 keys. Added tests for it.
lib/Cache/Memcached.pm, t/06_utf8_key.t
https://rt.cpan.org/Ticket/Display.html?id=93094
** * Fix usage of compress_enable in new(). It was hardcoded to enabled.
Options now override that setting. Updated docs to reflect that update.
Added set_compress_enable as an alias of enable_compress.
** * Update tests to delete any keys that the test adds.
** * Added additional tests:
t/07_storable.t t/08_compression.t t/15_namespace.t t/test_structs.pl
patch Cache-Memcached-DigestKeys-feature.patch:
* Includes everything from Cache-Memcached-CMFast-features.patch, as well as...
* Add digest_keys_enable/digest_keys_method support.
If enabled, all memcached keys are hashed (ex. Digest::MD5::md5_base64)
before being sent to the memcached server, and mapped back to user supplied
values when needed (get_multi). IE. it's transparent to the user, and
enables the use of arbitrarily large keys with almost no performance penalty.
* Add tests and updated benchmarks for digest key hashing.
script/benchmark_method_overrides.pl
t/11_digest_keys_simple.t
t/12_digest_keys_more.t
* Add benchmark to gauge possibility of adding caching to digest key generation.
script/benchmark_digest_keys_caching.pl
* Fix size of test errors. Test using large values were testing results of get()
with is(), which is normal, but if there was an error then a very large amount
of data would dump to the screen. Changed to using ok() for those.
t/08_compression.t
t/10_compress_methods.t
t/13_max_size.t
t/14_compress_ratio.t
Subject: | Cache-Memcached-DigestKeys-feature.patch |
Message body is not shown because it is too large.