I'm refactoring an existing prod-app to use cb instead of memcached - The transition has been fairly smooth as I've configured cb to use memcached buckets over 11211/SASL instead of the cb buckets.
The engineering team relies heavily on a cache-access utility to validate cache content during development which, in turn, relies on the memcached API method: getAllKeys(). I've spent a half-day researching and determined that:
-- you can use views to fetch keys if you have a couchbase bucket and write a method to return all keys
-- access TAP which isn't guaranteed to work correctly and not sure if I can do that with memcached buckets anyway...
The TAP explanation is ok - but lacks information on implementation - and the fact that the result sets are undefined means that I don't want to invest limited time in exploring.
So, thinking that someone has to have solved this problem before...and was wondering if there were any work-arounds that addresses how to retrieve a key dump from the memcached bucket.
After a couple of days of deploying Couchbase as a replacement for memcached, I have a couple of observations/comments to share:
- In the PHP SDK/API doc, there's reference to the CAS key used to restrict operations. However, the documentation for what a CAS key actually is, or examples of usage, is pretty well hidden. If it exists at all.
- using the delete() method (PHP API) shows that a successful delete returns the CAS key. Unfortunately, if you're not using CAS, then you're basically returning a string(0) which is the default value for when you're not using CAS keys. Through some testing, I was able to determine that the method, on deleting a non-existent key, returns a bool(0) - as opposed to a string(0). Knowing this, I can code a test to check if the delete() was successful or not.
Just finding out, post-implementation of couchbase, that it's constrained on max_item_size to 1MB and that's not tunable by the user's.
Sorry - third strike... have to revert back to memcached... couchbase as a memcached replacement just isn't viable...