Structure of the memcached KEY
krw at nobugz.com
Fri Nov 3 14:08:31 UTC 2006
Just FYI, in our application we use the full SQL query to generate a
UUID. We are far more concerned about false collisions than about
the overhead, which is tiny (and once the sql is transformed on the
client side, we save the result in a local hashtable, thus only
having to generate the UUID once).
On Nov 3, 2006, at 4:57 AM, Daniel Beckham wrote:
> The protocol documentation explains this. Look for the "Keys"
> section a few paragraphs down:
> 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.
> 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.
More information about the memcached