Использование CSV не очень хорошая идея, если вы хотите поддержать изменения. Вам нужно использовать сериализатор, который обрабатывает пропущенные / новые значения, если все находится в одном ключе, или вы можете использовать хэш redis, который дает вам именованные подключи. В любом случае вы можете добавлять / удалять поля с единственным требованием, чтобы ваш код знал, что делать, если он читает запись без нового значения.
Чтобы разрешить поиск по электронной почте, необходимо добавить индекс - в основном ключ (или список) для каждого электронного письма с идентификатором пользователя в качестве значения. Вам нужно будет заполнить этот индекс, получив все ключи один раз, а затем убедитесь, что вы обновляете его при изменении электронной почты.
Вы можете перебирать все ключи и хранить их с другим идентификатором, но это, вероятно, больше проблем, чем оно того стоит.