Memcached vs Redis
Недавно компания приобрела программное обеспечение, и во время оценки определенное программное обеспечение говорило об использованииMemcached
а такжеRedis
кеш. В этой статье для облегчения понимания и запоминания будут изучены сходства и различия между этими двумя популярными кэшами.
1. Memcached и Redis
Как правило, мы рассматриваем возможность использования при работе с большими объемами данныхтайникПовысить производительность.
Memcached
— это распределенная система кэширования в памяти, разработанная так, чтобы быть простой и удобной в использовании, идеально подходящая для использования в качестве кэша или хранилища сеансов.Redis
— это хранилище структур данных в памяти, которое предоставляет богатый набор функций. Он очень полезен в качестве кэша, базы данных, брокера сообщений и очереди.
2. Установка
2.1. Установите Memcached
Загрузите последнюю версиюMemcached
упаковать и выполнить make для установки:
$ wget http://memcached.org/latest
$ tar -zxvf memcached-1.6.3.tar.gz
$ cd memcached-1.6.3
$ ./configure && make && make test && sudo make install
2.2. Установка Redis
Точно так же установите последнюю версиюRedis server:
$ wget http://download.redis.io/releases/redis-5.0.8.tar.gz
$ tar xzf redis-5.0.8.tar.gz
$ cd redis-5.0.8
$ make
3. Попросите согласия
3.1 Задержка менее миллисекунды
Memcached
а такжеRedis
Оба обеспечивают время отклика менее миллисекунды, сохраняя данные в памяти.
3.2 Раздел данных
Точно так же две базы данных памяти позволяют распределить данные по нескольким узлам.
3.3 Поддержка языков программирования
Кроме того, оба поддерживают все основные языки программирования, включая Java, Python, JavaScript, C и Ruby.
Кроме того, в памяти есть несколько Java-клиентов для обеих баз данных. Например, у Memcached естьXmemcachedа такжеMemcached-java-client, у Redis естьJedis, Lettuce, а такжеRedisson.
3.4. Очистка кеша
Memcached позволяет использоватьflush_allкоманда для очистки кеша, Точно так же Redis позволяет нам удалить все из кеша с помощью команды:FLUSHDB and FLUSHALL.
3.5 Масштабируемость
Оба этих решения для кэширования обеспечивают высокую масштабируемость для обработки больших данных по мере экспоненциального роста спроса.
4. Отличия
4.1 Режим командной строки
Memcached может подключаться к серверу через telnet и выполнять команды:
$ telnet 192.168.8.123 6605
Trying 192.168.8.123
Connected to 192.168.8.123
$ stats
STAT pid 14868
STAT uptime 175931
STAT time 1220540125
// ...
В отличие от Memcached, Redis имеет специальный интерфейс командной строки:Redis cli, что позволяет нам выполнитьЗаказ:
$ redis-cli COMMAND
1) 1) "save"
2) (integer) 1
3) 1) "admin"
2) "noscript"
// ...
2) 1) "multi"
2) (integer) 1
3) 1) "noscript"
2) "fast"
// ...
3) 1) "geodist"
2) (integer) -4
3) 1) "readonly"
// ...
// ...
Здесь мы выполняемКОМАНДНАЯ командаПеречислите все команды, предоставляемые Redis.
4.2 Дисковый дамп ввода/вывода
Memcached использует сторонние инструменты для обработки дампов дисков, такие какlibmemcached toolsили нравитсяmemcached dd.
Однако Redis предоставляет легко настраиваемые механизмы по умолчанию для дампов диска, такие как RDB (файл базы данных Redis) или AOF (добавлять только файл). Это полезно для архивирования и восстановления.
Используя redis cli, мы можем выполнять синхронныеSAVEКоманда для получения снимка данных в памяти:
$ redis-cli SAVE OK
Здесь команда сохраняет снимокДамп. RDB.двоичный файл, вернуть статус, когда сделаноКонечно.
Однако асинхронныйBGSAVEВыполнение запустит фоновый процесс, создающий снимок:
$ redis-cli BGSAVE
OK
Кроме того, мы можем использоватьLASTSAVEКоманда проверяет время Unix последнего успешного моментального снимка базы данных.
$ redis-cli LASTSAVE
(integer) 1410853592
4.3 Структуры данных
Memcached хранит пары ключ-значение в виде строк с ограничением размера 1 МБ на значение. но,Redis также поддерживает другие структуры данных, такие как список, набор и хэш, которые могут хранить до 512 МБ..
4.4. Копировать
Memcached поддерживает использование третьих сторон, таких какrepcachedсделать копию.
А другой Memcached, Redis путем копирования основного хранилища обеспечивает удвоение возможностей кластера, чтобы мы могли получить лучшую масштабируемость и высокую доступность.
Во-первых, мы можем использоватьREPLICAOFСоздайте реплику мастера Redis. Далее выполняем на репликеPSYNCкоманда для запуска репликации с хоста.
4.5. Транзакции
Memcached не поддерживает транзакции, хотя его операции атомарны.
Redis предоставляет готовую поддержку транзакций для выполнения команд.
мы можем использоватьMULTIкоманда для начала транзакции. затем используйтеEXECИспользуется для выполнения последующих команд. Наконец, Redis предоставляетWATCHКоманды используются для условного выполнения транзакций.
4.6. Публикация и подписка на сообщения
Memcached не предоставляет готовый механизм публикации/подписки.
Redis, с другой стороны, использует очереди сообщений публикации/подписки, чтобы предоставить возможность подписываться на сообщения.
Это полезно при разработке приложений, требующих общения в реальном времени, таких как чаты, каналы социальных сетей и общение внутри сервера.
Redis поставляется с такими инструментами, как[ПУБЛИКОВАТЬ],[SUBSCRIBE] а также [UNSUBSCRIBE] — это специальные команды для публикации сообщений в каналах, подписки и отмены подписки клиентов на указанные каналы соответственно.
4.7. Геопространственная поддержка
Очень полезно для функций на основе местоположения для достижения применения геопространственной поддержки. В отличие от MEMCACHED, Redis с [командованием для управления геопространственными данными в реальном времени]
Например,GEODISTКоманда для расчета расстояния между двумя геопространственными записями. По аналогии,GEORADIUSКоманда возвращает все записи в пределах заданного радиуса.
В качестве альтернативы мы можем использоватьSpring Data RedisВключите геопространственную поддержку Redis в приложении Java.
4.8 Архитектура
Redis использует одно ядро и показывает лучшую производительность, чем Memcached для хранения небольших наборов данных.
Memcached с использованием нескольких ядерРеализовать многопоточную архитектуру. Таким образом, Memcached превосходит Redis для хранения больших наборов данных.
Еще одним преимуществом многопоточной архитектуры Memcached является ее высокая масштабируемость за счет использования нескольких вычислительных ресурсов.
Redis можно масштабировать горизонтально через кластеры, а установка и эксплуатация относительно сложны. Конечно, мы можем включить кластер Redis с помощью jedis или Lettuce с помощью приложения Java.
4.9. LUA Scripting
В отличие от Memcached, мы можем выполнять [скрипты LUA] для Redis. Он предоставляет что-то вроде [EVAL*] и *[ЗАГРУЗКА СЦЕНАРИЯ]команды, полезные для выполнения сценариев LUA.
Например, мы можем выполнитьEVALКоманда для расчета скрипта:
$ redis-cli eval "return redis.call('set',KEYS[1],'welldone')" 1 website
OK
Здесь мы можем использовать eval для установки key=websiteценностьwelldone.
4.10 Использование памяти
Memcached использует больше памяти, чем Redis, при сравнении строковых структур данных.
Тем не менее, когда Redis использует хэш-структуру, он обеспечивает более высокое использование памяти, чем Memcached.
5. Пишите в конце
В этой статье мы рассмотрели Memcached и Redis. Во-первых, мы исследуем сходство двух баз данных в оперативной памяти. Затем мы исследуем различия в возможностях, предоставляемых этими двумя решениями для кэширования.
На сегодняшний день существует множество решений для кэширования в памяти. Поэтому мы должны учитывать характеристики механизма кэширования и сопоставлять их с нашим реальным вариантом использования.
Мы можем с уверенностью заключить, что Memcached — хороший выбор для решения простых проблем с кэшированием. Однако, в целом,Redis превосходит Memcached, предоставляя более богатые функции и множество возможностей, которые более выгодны для решения сложных сценариев..
Дин Дин Дин! Обратите внимание на общедоступную учетную запись: большой парень вне банка, присоединяйтесь к внешнему кругу банка и время от времени экспортируйте благосостояние, приветДобро пожаловать присоединитьсяАдрес закрытого блога:www.developlee.top