English 中文(简体)
Expiring memcached using mysql proxy when an update occurs?
原标题:

I have mysql Proxy running which takes a query, performs an md5 on it, and caches the result into a memcached DB. the problem occurs when an update happens in the rails app that would invalidate that cache. Any ideas on how to invalidate all of the proper keys in the cache at that time?

最佳回答

The core of the problem, is you don t know what the key is since it is md5 generated.

However, you can mitigate the problem by not storing data for that query.

You query may look like this "SELECT my_data.* FROM my_data WHERE conditions"

However, you can reduce the redudeancy of data by use this query instead

SELECT my_data.id FROM my_data WHERE conditions

Which is then followed up by

Memcache.mget( ids )

This won t prohibit the return on data that no longer matches the conditions, but may mitigate returning stale data.

--

Another option is to look into using namespaces: See here:

http://code.google.com/p/memcached/wiki/NewProgrammingTricks#Namespacing

You can namespace all of your major queries. You won t be able to delete the keys, but you can change the key version id, which will in effect expire your data.

Logistically messy, but you could use it on a few bad queries.

--

lastly, you could store those queries in a different memcache server and flush on a more frequent basis.

问题回答

暂无回答




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签