3 ms·
Right, I know what the docs say, however, it's fine to use this for cache invalidation (but maybe not other use-cases) in production. The docs also say: "Whil
by dickeytk 15y ago
Right, I know what the docs say, however, it's fine to use this for cache invalidation (but maybe not other use-cases) in production.
The docs also say:
"While the time complexity for this operation is O(N), the constant times are fairly low. For example, Redis running on an entry level laptop can scan a 1 million key database in 40 milliseconds."
If you have so many keys that this is an issue for cache invalidation, you should be using memcached anyways. (Since it can be distributed, where in Redis distribution is left up to you to figure out)
I wasn't able to dig it up, but I know I read an article about some consulting group making a site for a major shoe company where they did exactly this.
Your hash method isn't the best way either though since it's more efficient to store everything in individual key-value pairs, and hashes cannot be nested.
Really the BEST way to do this in Redis is to use a set containing all they keys related to an object, then clear each of them out when destroying an item.
- dickeytk 15y agoIt's no authoritative source, but I'm obviously not the only one that thinks this: http://www.webdevelopment-blog.com/2011/07/puma-on-redis/ http://www.webdevelopment-blog.com/2011/07/puma-on-redis/
- tabbyjabby 15y agoWhy is it more efficient to store everything in individual k-v pairs? Hash tables are certainly more memory efficient, and the difference in CPU efficiency is so slight as to be inconsequential.
- dickeytk 15y agodoh! I got it backwards. You are right that hashes are more efficient: http://redis.io/topics/memory-optimization http://redis.io/topics/memory-optimization However, for this particular problem, the docs do say: Don't use KEYS in your regular application code. If you're looking for a way to find keys in a subset of your keyspace, consider using sets. I wonder why they don't suggest hashes?
- tabbyjabby 15y agoBecause you might want to use sets to group any type of keys, including hashes.