Redis/nutcracker client for Turnstile
The NutJob client is an alternate Redis client based on redis.StrictRedis. It is meant for use with Turnstile, in conjunction with the Redis proxy nutcracker, aka twemproxy. Certain functionality which is unsupported by nutcracker is overridden in NutJob, either to disable it (such as Turnstile’s PUBLISH to report errors) or to replace it with equivalent functionality (such as the register_script() call used by the Turnstile compactor daemon).
NutJob is really only intended for use with Turnstile; it is not meant as a general-purpose Redis/nutcracker client.
How to Use
To use NutJob, add the following configuration settings to the appropriate sections of your Turnstile configuration:
[redis] redis_client = nutjob server_version = <see text> host = <nutcracker IP> [control] redis_client = redis server_version = host = <Redis server IP>
Note the overrides in the [control] section, particularly the explicitly empty value of server_version: the Turnstile control daemon MUST be configured to use the standard Redis client and to connect to an actual Redis server; the control daemon relies on functionality that nutcracker does not support.
As for the server_version value in the [redis] section: this value is optional, but if set, it should be the minimum server version of the Redis servers connected behind the nutcracker proxy. This information is used by the Turnstile compactor daemon to enable an optimization; normally, the compactor daemon determines whether to use this optimization based on the server version reported by the Redis server itself, but nutcracker does not support this version retrieval, and so NutJob provides this server_version side channel to allow its use.