Больше отличных статей.
«Микросервисы — это не все, а лишь подмножество определенного домена».
С таким количеством компонентов мониторинга всегда найдется подходящий для вас
«С Нетти, что мы разрабатываем? 》
«Вероятно, это наиболее подходящая спецификация Redis».
«Портрет программиста, десять лет взлетов и падений»
Самая полезная серия:
«Наиболее часто используемый набор навыков «vim» в производственной среде Linux.
«Наиболее часто используемый набор навыков «Sed» в производственной среде Linux.
«Наиболее часто используемый набор навыков «AWK» в производственной среде Linux.
Линукс из пяти частей и тому подобное.
«Остальная часть необитаемого острова» Linux (1) Подготовка»
«Linux« Остальная часть необитаемого острова »(2) Глава CPU»
«Linux« Остальная часть необитаемого острова »(3) глава памяти»
«Linux« Остальная часть необитаемого острова »(4) глава ввода-вывода»
«Сетевая глава Linux« Оставшаяся жизнь на необитаемом острове »(5)»
Больше, пожалуйста, следуйте. Конечно, вы также можете обратить внимание на общедоступный номер: xjjdog.
Redis мощен, богат типами данных, и какой бы быстрой ни была система, он не выдержит сумасшедших злоупотреблений. Отключив некоторые высокорисковые функции и надев оковы разработки, бизнес может думать о проблемах с краткой и общей идеей, а не привязываться к определенной реализации.
Redis будет иметь разные стратегии сохранения и стратегии вытеснения в зависимости от разных целей, поэтому, прежде чем использовать и подавать заявку на кластер Redis, уточните, используется ли он для кэширования или хранения. Кластер Redis имеет два режима: ведущий-ведомый и кластер, каждый из которых имеет свои преимущества и недостатки. В следующих спецификациях не делается различий между режимами кластера, и мы описываем их исходя из сценариев использования и эксплуатационных ограничений.
Условия эксплуатации
Различие горячих и холодных данных
Хотя Redis поддерживает сохраняемость, хранить все данные в Redis очень дорого. Рекомендуется загружать в Redis данные с горячими данными (например, QPS более 5k). Низкочастотные данные можно хранить в Mysql и ElasticSearch.
разделение бизнес-данных
Не помещайте все несвязанные службы данных в один Redis. С одной стороны, он позволяет избежать бизнес-взаимодействия, а с другой стороны, позволяет избежать расширения одного экземпляра и может уменьшить влияние и быстро восстановиться в случае сбоя.
Ограничение размера сообщения
Поскольку Redis является однопоточным сервисом, слишком большое количество сообщений будет блокировать и замедлять другие операции. Хорошей практикой является хранение содержимого сообщений размером менее 1 КБ. Одна запись размером более 50 КБ строго запрещена. Если сообщение слишком велико, это также приведет к перегрузке пропускной способности сети и проблемам с вводом-выводом при сохранении на диск.
Лимит подключений
Частое создание и уничтожение соединений приведет к трате большого количества системных ресурсов, а в крайних случаях произойдет сбой хоста. Обязательно используйте правильную конфигурацию пула клиентских подключений Redis.
Срок действия набора ключей кэша
В качестве Ключа, используемого кешем, должно быть установлено время истечения срока действия. Время истечения срока действия не является максимально возможным, пожалуйста, установите его в соответствии с характером бизнеса. Обратите внимание, что некоторые единицы времени отказа - секунды, а некоторые - миллисекунды. Многим учащимся легко сделать ошибку, если они не обращают внимания.
Кэши не могут иметь промежуточных состояний
Кэш должен использоваться только для кеширования, а бизнес-логика после его удаления не должна меняться, и его нельзя врезать в бизнес. Во-первых, высокая доступность кеша повлияет на бизнес; во-вторых, глубокая связь вызовет непредсказуемые последствия; в-третьих, это окажет скин-эффект на линии обслуживания.
Предпочтительный клиентский хэш метода расширения
Просто небольшое приложение
Если один кластер Redis не может обслуживать ваши данные, не спешите расширять свой кластер Redis (включая M/S и Cluster), Чем больше кластер, тем хуже производительность с точки зрения синхронизации состояний и сохраняемости. Используйте клиентский хэш для разделения кластера. Например, 10 кластеров разделены по идентификатору пользователя, и пользователь, чей хвостовой номер равен 0, попадает в первый кластер.
Эксплуатационные ограничения
Ключи строго запрещены
Команда keys крайне неэффективна, это операция O(N), она будет блокировать другие обычные команды, а в кластере это будет катастрофическая операция. Использование строго запрещено, администраторы баз данных должны переименовать эту команду, чтобы отключить от корня.
Флеш строго запрещен
Команда сброса удалит все данные, что является операцией с высоким риском. Использование строго запрещено, DBA должен переименовать эту команду, отключить от root, работать может только DBA.
Категорически запрещается использовать его как очередь сообщений
Если нет особых требований, строго запрещено использовать Redis в качестве очереди сообщений. Когда Redis используется в качестве очереди сообщений, возникают различные проблемы с емкостью, сетью, эффективностью и функциями. Если вам нужна очередь сообщений, вы можете использовать Kafka с высокой пропускной способностью или RocketMQ с высокой надежностью.
Массовые операции, не задающие диапазон, строго запрещены
Redis такой быстрый, а медленные запросы, помимо сетевой задержки, относятся к этим функциям пакетной обработки. Большинство онлайн-проблем вызвано этими функциями.
1. [zset] Категорически запрещается работать с zset без диапазона
2. Для ZRANGE, ZRANGEBYSCORE и других функций, оперирующих ZSET, категорически запрещается использовать ZRANGE myzset 0 -1 и другие операции, не устанавливающие диапазон. Укажите диапазон, например ZRANGE myzset 0 100. Если вы не уверены в длине, вы можете использовать ZCARD, чтобы оценить длину
3. [хэш] Категорически запрещается использовать HGETALL для ключей с большим объемом данных
4. HGETALL удалит все данные соответствующего HASH. Если количество данных слишком велико, это также приведет к блокировке. Пожалуйста, убедитесь, что бизнес находится под контролем. Если вы не уверены в длине, вы можете использовать HLEN, чтобы сначала оценить длину.
5. [ключ] операция mget кластера Redis Cluster Операция MGET Redis Cluster будет обращаться к каждому сегменту для получения агрегированных данных. По сравнению с традиционной архитектурой M/S производительность сильно снизится. Проведите стресс-тест и оцените заранее.
6. [Другое] Категорически запрещается использовать некоторые операции агрегации, такие как sunion, sinter, sdiff и т.д.
отключить функцию выбора
Функция выбора используется для переключения баз данных.Для пользователя это место, где легко могут возникнуть проблемы.Режим кластера не поддерживает несколько баз данных, и в этом нет никакой выгоды.Отключите его.
Отключить транзакции
Сам Redis и так очень быстрый, если не надо, то рекомендуется ловить исключения для отката и не использовать транзакционные функции, мало кто так делает.
Отключить расширения скрипта lua
Хотя lua-скрипт может делать много интересных вещей, он похож на хранимую процедуру SQL, которая привносит производительность и некоторые проблемы с обслуживанием, поэтому он отключен.
Запретить долгосрочный мониторинг
Функция монитора может быстро увидеть текущий поток данных, который выполняет redis, но будьте осторожны, блокировка команды монитора на долгое время в часы пик серьезно повлияет на производительность redis. Эта команда не запрещена к использованию, но использовать ее нужно с особым вниманием.
Ключевая спецификация
Ключ Redis должен быть стандартизирован, чтобы при возникновении проблем его можно было легко позиционировать. Redis — это база данных KV без схемы, поэтому мы полагаемся на соглашение, чтобы установить ее семантику схемы. Его преимущества:
1. Очистка данных может производиться по определенному типу ключа
2. Данные могут быть обновлены в соответствии с определенным типом ключа
3. Уметь понимать владельца и сценарии применения определенного типа ключа
4. Подготовьтесь к унификации и платформизации и сократите количество технических изменений
Как правило, ключ должен содержать следующие параметры: бизнес, назначение ключа, переменные и т. д., и каждый параметр разделяется: Ниже приведены примеры нескольких ключей:
пользователь: пол пол пользователя 10002232
MSG: ACHI 201712 Пользователи говорят много лидеров
End
Соответствующие ограничения являются необходимым условием для зрелой архитектуры, и наивысший уровень коллективного развития может быть достигнут с помощью соглашений. Redis используется много, но его нужно использовать стабильно, если дать какие-то ограничения и правила, жизнь станет лучше. Эффект лучше, если напрямую заблокировать Redis-клиент путем двойной инкапсуляции Redis-клиента.