В масштабируемой системе мне часто приходится запрашивать данные из PostgreSQL и кэшировать их в Redis.Интересно, сколько данных я могу передать одновременно, и когда мне нужно рассмотреть возможность создания нескольких пакетов или использования очереди сообщений.
Один из вариантов использования: при входе пользователя в систему я хочу кэшировать все идентификаторы его друзей в Redis.Мы социальная платформа, поэтому у пользователя может быть много друзей, 1К, 10К или даже больше.
Поэтому, когда пользователь входит в систему, мне нужно сделать что-то, как показано ниже (например, Python, но вопрос должен быть не языковым)
cur = pg_conn.cursor()
cur.execute('SELECT friend_id FROM friends WHERE user_id = ?', user_id)
friend_ids = [item['friend_id'] for item in cur.fetchall()]
cur.close()
redis.sadd('%s.friends' % user_id, *friend_ids)
Мой вопрос: при какой величинеданные могут обрабатывать этот кусок кода.Допустим, friend_id - это UUID (36 байт). Сколько friend_id я могу запросить не более, чтобы этот фрагмент кода мог надежно перенести эти идентификаторы из PostgresSQL в Redis?
Какие факторы могут повлиять на верхний предел размера передачи данных?Предполагая, что оба сервера приложений, PostgreSQL и Redis работают в одном регионе AWS.
Надежно, я имею в виду, что приведенный выше код, скорее всего, не даст сбой (> 99% или 99,9% или около того), но не должен быть таким же надежным, как банк.