It's my last day at Moodle HQ today and while cleaning things up for my departure I have organised a proposal for changes to the cache stores in Moodle 2.9. This just involved consolidating what was already out there and fixing a few bugs in the process. I'm purposing the introduction of new stores as well as the removal of less used/desirable stores.
I have created MDL-48226 for this, let me summarise what I am purposing:
- MDL-37069 Add an XCache store.
- MDL-39117 Add an APC store.
- MDL-38987 Add a WinCache store.
- MDL-48468 Add aRedis store.
- MDL-48469 Remove the MongoDB store.
- MDL-48505 Remove the Memcache store.
To summarise my view: I really like XCache and APC, nice fast opcode caches, not multi-site safe but in situations where you've only one web server these are ideal. Redis is fast, really fast for an external service and right up there with memcache. Truthfully I haven't even published this plugin in the plugins database yet (I will do of course). MongoDB is slow, really slow, I needed it when writing the Cache API to test functionality and it shows what a NoSQL store would look like. That being said I doubt anyone really uses it and I don't believe it needs to be in core. Memcache, well this is an interesting one, its removal is based really on the fact that it is not multi-application safe, and cannot be made to be so. I have created MDL-48506 to make Memcached multi-application safe as that is possible. WinCache I've there for completeness, I've truthfully not looked at it nor run it in a long time.
So my votes: +1: Add XCache, add APC, remove memcache, remove mongodb +0: Add Redis -1: Add WinCache
That would see 2 added, 2 removed, 1 left to public vote/time, and 1 rejected.
I'd really appreciate any thoughts, feedback, votes if you can muster the effort.
Many thanks Sam