Storing MySQL data in Memcache
Four things come to mind:


You're mixing object oriented programing with the more 'traditional' way PHP was written.  You don't need to use both.  If you will use the older memcache_connect, memcache_get and memcache_get functions, you don't need to instantiate an object with new Memcache.  Checkout the bottom of the connect page for the two side by side. Instantiating gives you more flexibility though (see point 3 below).  You tend to call memcache_connect even though the rest of your code is object-oriented; be consistent and use $memcache_obj-&gt;connect(...)
memcache_get returns FALSE when the object is not in the cache. So there is no need in your getCache function to do if(empty($res)){$res=false} because $res will already be false.
Consider closing the connection to the cache when you're done with it. Otherwise you may have a large number of active connections as you create a new instance and connect every time getCache and setCache are called. I would call Memcache::close before returning from either function.  Alternatively, if these functions are called often within one request-response cycle, you could have a Cache class that you instantiate; the Memcache instance would be a property of the class. Then in the class constructor, you can call new Memcache and Memcache::connect, and use the same connection for all operations. Then in the class destructor (the __destruct function, you can close the connection.
Your _getData indiscriminately uses caching. No matter what data is sought, it gets cached. You may have to be a bit more surgical because if you have fast changing DB data, _getData will soon start returning obsolete information (for instance, one would not seriously consider serving current stock prices or currency conversion rates from a cache). You may want to apply caching only to a subset of your DB, depending on the nature of your data