Redis refactor

dont merge, just useful for showing branch diffs