Your use case will determine your mileage from each of the following, though I think they're in order of bang-for-buck:
1) Database: Mysql has lots of different cache parameters, and you can get a lot of extra db performance by getting them just right. The thing is, it's different for every app. One helpful tool here is mysqltuner.
2) Bytecode: Most PHP accelerators (APC, XCache, eAccellerator) cache bytecode in memory, which speeds up your PHP execution by skipping the compilation step. This probably won't use too much RAM, but it's a good step if you're looking to increase performance. Some of these also let you access a shared cache through code.
3) App: You could choose one of the accelerators that offers explicit app cache, and Memcached also does this very well. The problem with this is that you have to write your app to take advantage of it. This can be really nice, but expensive (dev time), so make sure you profile first.