> 1. может возникнуть ситуация, что у обоих пользователей отвалился интернет и они в это время они добавляли новые элементы в список, в этом случае непонятно как матчить id если они у обоих будут одинаковые но с разными значениями, вместо порядкового id, использовать значение элемента?
смотрите теорию в сторону confict-free data types.
можете использовать timestamp.
но в любом случае вам придётся сначала описать обычной логикой то, как вы собираетесь решать такой конфликт.
> 2. мне нужно чтобы у каждого пользователя был одинаковый список, если они в хаотичном порядке добавляли/изменяли/удаляли в одно и тоже время элементы в списке, использовать транзакции? тогда как отработает транзакция, если оба пользователя изменяют список, у одного будет откат?
в самом тарантуле у вас все транзакции сериализованы друг за другом. "одновременности" не существует: кто-то будет обязательно раньше. сортировать список можно опять-же по времени изменения. тогда сортировка будет для всех одинакова.
> 3. предполагается что человек может использовать список не по прямому назначению для покупок, а дня обмена ссылками к примеру, тогда текст элемента может быть достаточно длинный
да, но в этом случае контект уникальный и нет смысла под него заводить отдельный "словарь"
4. что значит нормализовать в отдельный спейс?
https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0убрать повторяющиеся записи в отдельный спейс и в целевом спейсе держать их в виде идентификаторов