is there some reason why we can't use setnx/msetnx?
http://redis.io/commands/setnx