the redis docs seem to suggest that using the plain SET command, but with options, is preferable to trying to cobble together a multi-request of SETEX and SETNX and EXPIRE?
http://redis.io/commands/set