Structure of the memcached KEY
Daniel Beckham
dbeckham-memcached at dealnews.com
Fri Nov 3 12:57:58 UTC 2006
The protocol documentation explains this. Look for the "Keys" section a
few paragraphs down:
http://cvs.danga.com/browse.cgi/wcmtools/memcached/doc/protocol.txt?rev=HEAD&content-type=text/plain
To answer your second question, hashing the SQL query is the first thing
that I would think to do. You are correct in saying that hashing adds
overhead to the entire operation, but it is going to be insignificant
for many operations. Except for very high load situations or extremely
time sensitive situations, hashing is going to be your best all around
choice.
But, that question can easily be answered yourself by writing a quick
benchmark script to to test it. Perform a large number of
query/memcached store operations using a hash of the SQL query and then
try it just using a sequential value for the key.
One additional thought. For a memcached application like a website,
it's normal that your database operation results in the creation of some
common object that is used in a web page. Instead of caching a raw
query that still needs to be turned into something useful, why not go
ahead and turn it into that useful object and then store that? Usually
that can be more easily identified by some unique column in the table,
like a post ID, etc. By doing this you would actually save many more
CPU cycles and resources than you would figuring out how to no hash a
SQL query.
-Daniel
Luc Levesque wrote:
> What are the restrictions / limits on the format of the key used to
> get / set strings into memcached?
>
> I simply used the SQL query for the key ( which contained quotes,
> spaces and all that stuff ) and it barfed. I now run a SHA1 hash on
> the query string and use that but this is adding overhead.
>
> Ideas?
More information about the memcached
mailing list