Мы используем Redis на Trello для эфемерных данных, которые мы могли бы проиграть.Мы не сохраняем данные в Redis на диск и используем их allkeys-lru , поэтому мы храним только те вещи, которые могут быть выгружены в любое время, только с очень незначительными неудобствами для пользователей (например, на мгновение увидевневерный статус пользователя).При этом мы даем ему более чем 5-кратное пространство, необходимое для хранения его фактического рабочего набора, и выбираем из 10 ключей для истечения срока действия, поэтому мы действительно никогда не увидим, чтобы что-то выбило из-под контроля.
Это наш сервер pubsub.Когда пользователь делает что-то с платой или картой, мы хотим отправить сообщение с этой дельтой всем клиентам, подключенным к веб-сокету, которые подписаны на измененный объект, поэтому все наши процессы Node подписываются на канал pubsub, который распространяетсяэти сообщения, и они распространяют это в соответствующим образом разрешенные и подписанные веб-сокеты.
Мы ВИДИМ это используем для поддержки socket.io, но так как мы используем только веб-сокеты, и так как сокет.io * слишком болтливый , чтобы масштабировать так, как нам нужно в данный момент, у нас есть патч, который отключает все, кроме одного необходимого нам канала.
Для наших пользователей, у которых нет веб-сокетов, мы должны вести список действий, которые произошли на каждом объектном канале с момента последнего запроса пользователя.Для этого мы используем список, который мы ограничиваем самыми последними 100 элементами, и вспомогательный счетчик того, сколько элементов было добавлено в список с момента его создания.Поэтому, когда мы отвечаем на запрос опроса от такого браузера, мы можем проверить последний элемент, который он сообщает, что он видел, и отправлять только те сообщения, которые были добавлены в очередь с тех пор.Таким образом, запрос на опрос сводится к проверке разрешений и проверке ключа Redis в большинстве случаев, что очень быстро.
Мы храним некоторые эфемерные данные об активном статусе подключенногопользователи в Redis, потому что эти данные часто изменяются и нет необходимости сохранять их на диске.
Мы храним кратковременные ключи для поддержки входа OAuth в Redis.
Мы любим Redis;как только у вас есть экземпляр этого и работает, вы хотите использовать его для всех видов вещей.Единственная реальная проблема, с которой мы столкнулись - это медленно работающих клиентов, которые занимают доступное пространство .
Мы используем MongoDB для наших более традиционных потребностей в базе данных.