I think that last weekend's outage is testament to how dangerous using this feature is. There are several arguments to avoid the use of LUA scripting in Redis:
- It's a CPU black hole and a monitoring nightmare. One's datastore suddenly munching on CPU because of a stored procedure isn't something any Ops person wants.
- It can bring down the data store and/or the site easily.
- It's inefficient, with the script having to be pushed every time.
- Fellow large shops using Redis consider that "LUA is not production ready in Redis today" http://highscalability.com/blog/2014/9/8/how-twitter-uses-redis-to-scale-105tb-ram-39mm-qps-10000-ins.html
- Resorting to LUA scripting is a sign that Redis isn't the right tool for the task at hand. If that scripting capability wasn't there, a solution using another tool would have to be implemented, and this is what we should be doing.
What is the LUA scripting currently being used for in the jobrunner? Could it be reimplemented in PHP? Is it a sign that Redis isn't the best queue provider and that we should be using something else?