РЕЖИМ ТОЛЬКО ДОБАВЛЕНИЕ добавлен
- appendonly
- appendfilename
- Appendfsync
-
- Всегда: синхронное сохранение. Каждый раз, когда происходит изменение данных, они немедленно записываются на диск. Низкая производительность, но улучшенная целостность данных.
- Everysec: заводская рекомендация по умолчанию, асинхронная работа, запись каждую секунду. Если в течение одной секунды будет простой, произойдет потеря данных.
- No
- No-appendfsync-on-rewrite: можно ли использовать Appendfsync при перезаписи, просто используйте значение по умолчанию no для обеспечения безопасности данных.
- Auto-aof-rewrite-min-size: установить базовое значение перезаписи
- Auto-aof-rewrite-percent: установите контрольное значение для перезаписи.
Откройте несколько серверов портов
1. Файл конфигурации Скопируйте копию redis.windows-service.conf и переименуйте ее в соответствующий файл, взяв в качестве примера 6380 и измените порт в файле конфигурации на указанный порт, порт 6380Примечание: пространство перед maxclients в файле конфигурации должно быть удалено, иначе служба установки сообщит об ошибке 2. Установите сервис redis-server.exe —service-install —service-name redis_6380 redis.windows-service-6380.conf После успешного запуска вы можете ввести services.msc, чтобы проверить список служб и убедиться, что установка прошла успешно: Вы можете запускать и останавливать службу, щелкнув правой кнопкой мыши непосредственно в приведенном выше списке служб; вы также можете запускать и останавливать ее с помощью следующей команды 3. Запустите службу redis-server.exe–service-start —service-name redis_6380 4. Остановите службу redis-server.exe —service-stop —service-name redis_6380 5. Удалите службу redis-server.exe —service-uninstall —service-name redis_6380
На этом этапе служба redis порта 6380 успешно настроена! Выполните шаги выше, чтобы добавить другие порты.
Настройка Redis в Unix/Linux
Откроем конфиг:
# vim /etc/redis/6379.conf
У меня он выглядит следующим образом:
bind 127.0.0.1 protected-mode yes port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize yes supervised no pidfile /var/run/redis_6379.pid loglevel notice logfile /var/log/redis_6379.log databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /var/lib/redis/6379 slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes
И так, у меня редис висит на локалхосте ( 127.0.0.1 ), вот строка:
bind 127.0.0.1
Вообще, можно изменить данную строку на «0.0.0.0» или на конкретный IP адрес.
Строка:
protected-mode yes
Говорит что включен мод-защиты. Это означает, что никто из вне, не сможет подключится к данному редис-серверу. Если хотите чтобы клиенты с других хостов подключались к Redis, то установить в «no».
Сервер использует 6379-й порт. Можно повесить на сокет при необходимости.
Это стандартная конфигурация и она не идеальная, т.к она может «сожрать» всю RAM. Для того чтобы этого не произошло, стоит добавить:
maxmemory 2147483648
И так, я для редиса, ограничил использования виртуальной памяти до 2 Гб. Так же, можно защитить редиску-сервис и установить пароль, для этого — находим строку:
# requirepass foobared
И приводим к виду:
requirepass Your_PASSWORD_here
Иногда, бывает полезным — запретить использование команд, находим:
# rename-command CONFIG ""
И прописываем:
rename-command CONFIG ""
Это запретит использования CONFIG команды в редис. Но можно и переименовать некоторую команду, например:
rename-command CONFIG rename_CONFIG
Данное выражение, заменит использование CONFIG на rename_CONFIG.
Чтобы проверить бенчмарк (нагрузку на редис-сервер), используйте команду:
$ redis-benchmark
На этом, у меня все. Статья «Установка Redis в Unix/Linux» завершена. В следующей теме, я расскажу как собрать кластер из редиску — как создать свой огород))))
5: Запуск и тестирование Redis
Запустите сервис:
Проверьте его состояние:
Чтобы убедиться, что сервис работает правильно, подключитесь к серверу Redis с помощью клиента командной строки:
В появившуюся сроку введите:
Команда вернет:
Установите ключ:
А теперь попробуйте извлечь значение ключа test:
Вы должны получить:
После этого вы можете закрыть командную строку Redis и вернуться в стандартную оболочку:
В качестве финального теста нужно убедиться, что Redis может сохранять данные даже после остановки или перезапуска. Для этого сначала перезапустите экземпляр Redis:
Затем снова подключитесь к клиенту и убедитесь, что ваше тестовое значение все еще доступно:
Значение должно появиться на экране:
Вернитесь в оболочку:
Если все тесты пройдены успешно и теперь вы хотите добавить Redis в автозагрузку, включите сервис:
Запуск и остановка серверной части
Запуск серверной части — это метод, который мы обязательно будем использовать в нашей разработке, но после использования команды запуска серверной части вам необходимо выполнить следующие шаги:
1) Конфигурация внутреннего запуска: На первом этапе вам нужно скопировать файл redis.conf из исходного каталога Redis в каталог bin каталога установки Redis.
Второй шаг — изменить файл redis.conf, изменить значение daemonize на yes и сохранить его.
После вышеуказанных шагов настройки нет необходимости снова настраивать в будущем, следующие команды можно использовать для запуска фона Redis.
2) Команды, инициированные серверной частью:
Можно обнаружить, что команды запуска серверной части — это просто больше «redis.conf», чем команды запуска интерфейса. Смысл очень ясен, просто позвольте redis работать в соответствии с конфигурацией этого файла конфигурации, и вы также можете увидеть Затем, после запуска фона redis, терминал не войдет в консоль redis. Это нужно для запуска redis в фоновом режиме. Теперь мы можем проверить, есть ли в системе процесс redis:
Вы можете видеть, что redis запущен, порт — 6379, а идентификатор процесса — 6087.
3) Команда выключения, инициированная серверной частью:
Поскольку бэкэнд запускает redis, невозможно напрямую нажать ctrl + c, чтобы закрыть redis, как передний конец запускает redis. Если вам нужно закрыть его принудительно, вы можете остановить redis, только убив процесс. Команда завершения работы Redis обычно такая же, как и команда завершения работы внешнего интерфейса, так что здесь нет особого смысла.
Периодические задачи в Celery
Для выполнения периодичных задач модифицируем созданный нами ранее файл celery.py, добавив в него такую конструкцию:
#... # Импортируем crontab для запуска по расписанию from celery.schedules import crontab # https://docs.celeryproject.org/en/stable/userguide/periodic-tasks.html app.conf.beat_schedule = { # Название задачи 'my-super-sum-every-5-min' = { # Регистрируем задачу. Для этого в качестве значения ключа task # Указываем полный путь до созданного нами ранее таска(функции) 'task': 'my_supper_app.tasks.supper_sum', # Периодичность с которой мы будем запускать нашу задачу # minute='*/5' - говорит о том, что задача должна выполнятся каждые 5 мин. 'schedule': crontab(minute='*/5'), # Аргументы которые будет принимать функция 'args': (5, 8), } }
Запуск периодической задачи в Celery выполняется командой:
celery -A my_supper_app beat -l INFO
Повторный запуск task (задач) при возникновении ошибки
Бывают ситуации когда, по независящим от нас причинам Celery не может выполнить нужную нам задачу, например в момент выполнения этой задачи отсутствовал интернет или упал какой-то сервер к которому мы обращались из задачи. В таких случаях целесообразно сделать так, что бы задача которая не смогла выполниться, повторилась заданный промежуток времени. По умолчанию в Celery интервал перезапуска задач равен 3 мин.
Ниже представлен пример который перезапустит задачу, если во время её выполнения произошла ошибка.
@app.task(bind=True, default_retry_delay=5* 60) def my_task_retry(self, x, y): try: return x + y except Exception as exc: # retry(countdown=60) задает перезапуск задачи через 60 сек raise self.retry(exc=exc, countdown=60)
Отложенный запуск задач
В ситуациях когда необходимо запустить задачу не сразу, а отложить её на некоторое время или выполнить её в конкретно заданный час и минуту применяется метод: apply_async() принцип его работы такой же как и у метода delay() за исключением того, что apply_async() принимает не много другие аргументы.
Итак, запуск задачи с задержкой в 60 секунд выглядит так:
# Передаем кортеж с параметрами функции и задержку. supper_sum.apply_async((5, 7), countdown=60)
Шаг 1 — Установка и настройка Redis
Чтобы получить последнюю версию Redis, мы будем использовать для установки из официальных репозиториев Ubuntu.
Обновите локальный кэш пакета и установите Redis с помощью следующей команды:
После этого будет выполнена загрузка и установка Redis и ее зависимостей
После этого в файл конфигурации Redis, созданный автоматически при установке, необходимо внести одно важное изменение
Откройте этот файл в предпочитаемом текстовом редакторе:
Внутри файла найдите директиву . Эта директива позволяет объявить систему инициализации для управления Redis как службой, предоставляя вам более широкий контроль за ее работой. Для директивы по умолчанию установлено значение . Поскольку вы запускаете Ubuntu, которая использует систему инициализации systemd, измените значение на :
/etc/redis/redis.conf
Это единственное изменение, которое вам нужно внести в файл конфигурации Redis на данный момент,поэтому сохраните и закройте его после завершения редактирования. Перезапустите службу Redis, чтобы изменения в файле конфигурации вступили в силу:
После этого установка и настройка Redis будет закончена, и вы можете запускать его на вашем компьютере. Перед началом использования Redis рекомендуется сначала проверить корректность работы системы.
Механиз подписок PUS-SUB
Одно из основных преимуществ Redis от других key-value хранилищ заключается в том, что в Redis есть механизм подписок. То есть Redis можно использовать как сервер сообщений.
Одни клиенты подписываются на определенные каналы используя команду SUBSCRIBE имя_канала
Другие клиенты могут отправлять сообщения в этот канал используя команду PUBLISH имя_канала значение
Допустим один клиент подписывается на канал
SUBSCRIBE channel Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "channel" 3) (integer) 1
Другой клиент что то отправляет в этот канал
PUBLISH channel "hello world" (integer) 1
И в этот момент первый клиент получит это сообщение
SUBSCRIBE channel Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "channel" 3) (integer) 1 1) "message" 2) "channel" 3) "hello world"
Что такое Redis?
Redis (расшифровывается как Remote Dictionary Server) – это быстрое хранилище данных типа «ключ‑значение» в памяти с открытым исходным кодом. Проект возник, когда Сальваторе Санфилиппо, первоначальный разработчик Redis, захотел улучшить масштабируемость стартапа в Италии. Он создал хранилище Redis, которое теперь используется в качестве базы данных, кэша, брокера сообщений и очереди.
Redis обеспечивает время отклика на уровне долей миллисекунды и позволяет приложениям, работающим в режиме реального времени, выполнять миллионы запросов в секунду. Такие приложения востребованы в сферах игр, рекламных технологий, финансовых сервисов, здравоохранения и IoT. Сегодня Redis – одно из наиболее популярных ядер с открытым исходным кодом, в течение пяти лет подряд называемое «самой любимой» базой данных от Stack Overflow. Благодаря быстрой производительности Redis широко применяется для кэширования, управления сеансами, разработки игр, создания таблиц лидеров, аналитики в режиме реального времени, работы с геопространственными данными, поддержки служб такси, чатов и сервисов обмена сообщениями, потоковой передачи мультимедиа и приложений с отправкой сообщений по модели «издатель – подписчик» (Pub/Sub).
AWS предлагает два полностью управляемых сервиса для запуска Redis. Amazon MemoryDB for Redis – совместимый с Redis надежный сервис базы данных в памяти, который обеспечивает сверхбыструю производительность. Amazon ElastiCache for Redis – полностью управляемый сервис кэширования, который ускоряет доступ к данным из первичных баз данных и хранилищ с микросекундной задержкой. Более того, ElastiCache также предлагает поддержку Memcached, другой популярной системы кэширования с открытым исходным кодом.
Подробную информацию об ускорении приложений с Amazon ElastiCache for Redis см. в онлайн-вебинаре Tech Talk.
Настройка аутентификации
При необходимости, мы можем установить логин и пароль для подключения к Redis. Наши действия будут отличаться в зависимости от способа установки сервера баз данных.
а) Установка на операционную систему
Открываем конфигурационный файл:
vi /etc/redis/redis.conf
Снимаем комментарий с параметра requirepass и в качестве значения присваиваем парольное слово:
requirepass password
* в данном примере в качестве пароля используем слово password.
Перезапускаем сервис:
systemctl restart redis-server
Подключаемся к консоли ввода команд:
redis-cli
Авторизовываемся:
> auth password
* где password — наше парольное слово.
Если мы ввели правильный пароль, то система покажет:
OK
Теперь можно вводить запросы, например:
> get test_key
б) Запуск в Docker
Для докера мы выполним запуск контейнера с помощью Docker Compose. Для начала, .
Создаем каталог, в котором разместим конфигурационный файл на хосте докер:
mkdir -p /opt/docker/redis/etc
Создадим наш конфигурационный файл:
vi /opt/docker/redis/etc/redis.conf
requirepass password
* в данном примере в качестве пароля используем слово password.
Перейдем в каталог:
cd /opt/docker/redis/
Создадим файл docker-compose:
vi docker-compose.yml
redis:
image: redis
container_name: ‘redis-server’
restart: unless-stopped
ports:
— «6379:6379»
volumes:
— /opt/docker/redis/etc:/usr/local/etc/redis
command: [ «redis-server», «/usr/local/etc/redis/redis.conf» ]
* в данном примере мы запускаем контейнер redis-server из образа redis; сервис должен работать на порту 6379; также мы пробросим созданный каталог /opt/docker/redis/etc внутри контейнера в /usr/local/etc/redis; наконец, запуск сервиса будет выполнен с параметром /usr/local/etc/redis/redis.conf — нашим конфигурационным файлом.
Уничтожаем ранее запущенный контейнер:
docker container stop redis-server && docker container rm -v redis-server
Запускаем новый с помощью docker-compose:
docker-compose up -d
Теперь можно подключиться к консоли redis-cli:
docker exec -it redis-server redis-cli
Авторизоваться:
> auth password
* где password — пароль, заданный в конфигурационном файле.
Мы должны увидеть:
OK
Можно попробовать ввести запросы:
> get test_key
Redis серверные команды
В следующей таблице перечислены команды, связанные с сервером Redis:
Серийный номер | Команда и описание |
---|---|
1 | BGREWRITEAOF Асинхронно выполняет операцию перезаписи файла AOF (файл AppendOnly) |
2 | BGSAVE Асинхронно сохраняет текущие данные базы данных на диск в фоновом режиме |
3 | CLIENT KILL Закрыть клиентское соединение |
4 | CLIENT LIST Получить список клиентских подключений к серверу |
5 | CLIENT GETNAME Получить имя соединения |
6 | CLIENT PAUSE timeout Завершить команду от клиента в течение указанного времени |
7 | CLIENT SETNAME connection-name Установите имя текущего соединения |
8 | CLUSTER SLOTS Получить сопоставленный массив узлов кластера |
9 | COMMAND Получить массив сведений о команде Redis |
10 | COMMAND COUNT Получить общее количество команд Redis |
11 | COMMAND GETKEYS Получить все ключи для данной команды |
12 | TIME возвращает текущее время сервера |
13 | COMMAND INFO command-name Получить массив, описанный указанной командой Redis |
14 | CONFIG GET parameter Получить значение указанного параметра конфигурации |
15 | CONFIG REWRITE Переписать файл конфигурации redis.conf, указанный при запуске сервера Redis |
16 | CONFIG SET parameter value Изменить параметры конфигурации redis без перезапуска |
17 | CONFIG RESETSTAT Сбросить некоторую статистику в команде INFO |
18 | DBSIZE возвращает количество ключей в текущей базе данных |
19 | DEBUG OBJECT key Получить информацию об отладке ключа |
20 | DEBUG SEGFAULT аварийно завершает работу службы Redis |
21 | FLUSHALL удалить все ключи всех баз данных |
22 | FLUSHDB удалить все ключи текущей базы данных |
23 | INFO Получить различную информацию и статистику сервера Redis |
24 | LASTSAVE Возвращает последний раз, когда Redis успешно сохранял данные на диск, в формате отметки времени UNIX. |
25 | MONITOR Распечатывать команды, полученные сервером Redis в режиме реального времени для отладки |
26 | ROLE Возвращает роль, которой принадлежит главный и подчиненный экземпляры. |
27 | SAVE Асинхронное сохранение данных на жесткий диск |
28 | SHUTDOWN Асинхронно сохраняйте данные на жесткий диск и выключайте сервер |
29 | SLAVEOF host port превращает текущий сервер в подчиненный сервер указанного сервера |
30 | SLOWLOG subcommand Управление медленным журналом повторов |
31 | SYNC Внутренние команды для репликации |
Redis на Windows
Этот проект содержит бинарную версию MS Open Tech, порт Redis для окон и конфигурацию Redis Vagrant, позволяющую запустить собственную версию Redis в виртуальной машине Virtual Box.
Хотя рекомендуется использовать на LinuxRedisДля производства, но для разработчиков на платформе Windows часто полезно запускать локальную версию redis, разработанную ими самими.
3 самых популярных способа запустить Redis в Windows — это использоватьMicrosoft родной порт редисДвоичная версия, но поскольку это неофициальный порт, он всегда стоит за последней официальной разработкой redis для linux / OSX.
спасибоVagrant,Вы можете запустить последнюю версию Linux на виртуальной машине Virtual Box Linux, где вы можете запустить официальную версию Redis.
Или если у вас последняя версияWindows 10,Вы можетеНа Ubuntu на WindowsустанавливатьBash,Это может сделать васНа окнахЗапуск официальной версии Redis на Ubuntu Это наш предпочтительный метод, поскольку он позволяет вам запускать собственные двоичные файлы Ubuntu в Windows более эффективно, чем Linux на виртуальной машине:
Подключение к Redis
Если вы работаете с локальной установкой redis-server, вы можете подключиться к экземпляру Redis с помощью команды redis-cli:
Это переведет вас в интерактивный режим redis-cli, который предоставляет REPL (read-eval-print loop), где вы можете запускать встроенные команды Redis и получать ответы.
В интерактивном режиме префикс командной строки изменится: теперь в нем указывается соединение с локальным экземпляром Redis (127.0.0.1) и порт Redis по умолчанию (6379).
Альтернативой интерактивному режиму Redis является запуск команд в качестве аргументов команды redis-cli. Делается это так:
Если вы хотите подключиться к удаленному хранилищу данных Redis, вы можете указать хосты и номера портов с помощью флагов -h и -p. Если вы настроили аутентификацию Redis, вы можете включить флаг -a и указать ваш пароль:
Если вы установили пароль Redis, клиенты смогут подключаться к базе данных, даже если они не включат флаг -a в свою команду redis-cli. Однако они не смогут добавлять, изменять или запрашивать данные до тех пор, пока не пройдут аутентификацию. Чтобы пройти аутентификацию после подключения, используйте команду auth и укажите пароль:
Если пароль, переданный в команде auth, действителен, команда вернет OK. В противном случае она вернет ошибку.
Если вы работаете с управляемой базой данных Redis, ваш облачный провайдер может предоставить вам URI, начинающийся с redis:// или rediss://, который вы можете использовать для доступа к вашему хранилищу данных. Если строка подключения начинается с redis://, вы можете включить ее в качестве аргумента в redis-cli.
Однако если строка подключения начинается с rediss://, то вашей управляемой базе данных требуются соединения по TLS/SSL. Команда redis-cli не поддерживает соединения TLS, поэтому для соединения по URI вам нужно использовать другой инструмент с поддержкой этого протокола – например, Redli.
Используйте следующий синтаксис для подключения к базе данных с помощью Redli
Обратите внимание, этот пример включает опцию –tls, которая указывает, что соединение должно быть установлено через TLS, и флаг -u, который объявляет, что следующий аргумент содержит URI соединения:. Если вы попытаетесь подключиться к несуществующему экземпляру, redis-cli перейдет в отключенный режим
Командная строка будет отражать это:
Если вы попытаетесь подключиться к несуществующему экземпляру, redis-cli перейдет в отключенный режим. Командная строка будет отражать это:
В этом режиме Redis будет пытаться восстановить соединение при каждом новом запуске команды.
Пример подключения из языков программирования
Рассмотрим примеры подключения и выполнения запросов из нескольких языков программирования.
PHP
Устанавливаем необходимые зависимости для PHP — пример для Ubuntu / Debian:
apt-get install php-pear php-dev
Также нам нужно установить расширение pecl — обновляем канал:
pecl channel-update pecl.php.net
И компилируем расширение:
pecl install redis
Для каждого возможного варианта использования PHP необходимо создать отдельный конфигурационной файл. В данном примере, под php 7.4 для cli, php-fpm, apache.
В системах на базе RPM (например, CentOS или Red Hat), нет разделения php на версии. Таким образом, нам нужно будет создать только один файл (как правило, в каталоге /etc/php.d).
а) CLI
vi /etc/php/7.4/cli/conf.d/20-redis.ini
extension=redis.so
б) PHP-FPM
vi /etc/php/7.4/fpm/conf.d/20-redis.ini
extension=redis.so
в) APACHE
vi /etc/php/7.4/apache/conf.d/20-redis.ini
extension=redis.so
Проверяем, что в php появился новый модуль:
php -m | grep redis
Мы должны увидеть:
redis
Создаем каталог для нашего скрипта:
mkdir /scripts
Создаем сам скрипт:
vi /scripts/test_redis.php
- <?php
- $redis = new Redis();
- $redis->connect(‘localhost’, 6379);
- $redis->auth(‘password’);
- $redis->set(«test_php_key», «test php value»);
- echo $redis->get(«test_php_key»);
- echo «\r\n»;
- ?>
* в данном скрипте мы подключаемся к нашему локальному серверу Redis, авторизовываемся и создаем ключ test_php_key со значением test php value. В конечном итоге, скрипт должен нам вернуть данное значение.
Запускаем на выполнение данный скрипт:
php /scripts/test_redis.php
Мы должны увидеть:
test php value
Python
Устанавливаем необходимое расширение:
pip3 install redis
Создаем каталог для размещения скрипта:
mkdir /scripts
Создаем сам скрипт:
vi /scripts/test_redis.py
- #!/usr/bin/env python3
- # -*- encoding: utf-8 -*-
- import redis
- r = redis.Redis(host=’localhost’, port=6379, db=0, password=’password’)
- r.set(‘test_py_key’, ‘test py value’)
- redis_get = r.get(‘test_py_key’)
- print(redis_get)
* в данном скрипте мы подключаемся к нашему локальному серверу Redis, авторизовываемся и создаем ключ test_py_key со значением test py value. В конечном итоге, скрипт должен нам вернуть данное значение.
Разрешаем запускать наш скрипт на выполнение:
chmod +x /scripts/redis.py
Запускаем скрипт:
/scripts/test_redis.py
Мы должны получить в качестве ответа:
b’test py value’
5 последних уроков рубрики «PHP»
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак
В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение
В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Redis: плюсы и минусы
Самым большим преимуществом Redis является то, что это хранилище данных исключительно в памяти , а это означает, что оно невероятно быстрое, поскольку база данных хранится в ОЗУ, поэтому операции ввода-вывода файлов на жесткий диск не требуются.
Другими дополнительными преимуществами являются его простота, поддержка кластеризации через Redis-cluster, а также поддержка восьми различных типов данных, обеспечивающая гибкость, необходимую для хранения данных и управления ими по мере необходимости.
Однако его самым большим недостатком также является тот факт, что это чисто хранилище данных в памяти, поэтому оно имеет ограничения по размеру. Это зависит от инфраструктуры вашего сервера, но для простоты и простоты этой статьи ваша типичная база данных Redis будет содержать не более 2–4 ГБ данных.
Это означает, что Redis используется для дополнения широко используемых механизмов баз данных, таких как mySQL, PostgreSQL и MongoDB, и не предназначен для замены. Основное использование Redis включает кеширование, временные / недавние данные, срок действия которых истекает через короткий период времени, или небольшие фрагменты данных, к которым часто обращаются.
Установка Redis
Что бы протестировать работу Redis рекомендую использовать облачное решение. Зарегистрируйтесь на Redis Labs, они дают бесплатный сервер для обучения и тестирования.
- Пройдите регистрацию.
- Подтвердите почту.
- Создайте подписку (сервер).
4. Создайте базу данных:
После активации приложения вам понадобятся хост(Endpoint) и пароль (Default User Password).
Далее установим redis:
Строка подключения к Redis
Как и в случае с обычными базами данных подключить экземпляр Redis можно с помощью строки подключения. Вот как такая выглядит в Redis:
Разберем по пунктам:
- — это суффикс, который нужен во всех URI Redis. Он определяет способ подключения к приложению. — стандартное соединение, — подключается по SSL, — зарезервированный тип для сокетов Unix и — тип подключения для кластеров Redis с высоким уровнем доступности.
- — URL или IP приложения Redis. Если вы используете облачное решение, то, скорее всего, вам нужен адрес AWS EC2. (Такова особенность современного капитализма, где все весь мелкий бизнес — это реселлеры с заранее настроенным ПО).
- — у приложения Redis есть пароль, но нет пользователей. Скорее всего, это связано с тем, что в случае с резидентной базой данных сложно было хранить их имена.
- — выбранный порт.
- — если не уверены, что здесь указать, просто напишите 0.
Создание клиента Redis
URI есть. Теперь нужно подключиться к Redis, создав объект клиента:
Копировать
Но почему StrictRedis, вы можете спросить? Есть два вида создания клиентов Redis: и . StrictRedis пытается правильно применять типы данных. Старые экземпляры так не умеют. — обратно совместимая с устаревшими экземплярами Redis версия с любыми наборами данных, а — нет. Если сомневаетесь — используйте StrictRedis.
Есть множество других аргументов, которые можно (и нужно) передать в , чтобы упростить себе жизнь. Обязательно передайте , ведь это избавит необходимости явно расшифровывать каждое значение из базы. Также не лишним будет указать кодировку:
Копировать
Работа с хэш-таблицами
Как уже упоминалось, данный тип можно сопоставить с ассоциативными таблицами. Команды:
- HSET: установка элемента ключ-значение
- HGET: извлечение элемента ключ-значение
- HGETALL: извлечение всех элементов
- HMSET: установка нескольких элементов ключ-значение
- HDEL: Удаление элемента по ключу
- HINCRBY: увеличить элемент ключ-значение.
<?php $key = ';linus torvalds';; $redis->hset($key, ';age';, 44); $redis->hset($key, ';country';, ';finland';); $redis->hset($key, 'occupation', 'software engineer'); $redis->hset($key, 'reknown', 'linux kernel'); $redis->hset($key, 'to delete', 'i will be deleted'); $redis->get($key, 'age'); // 44 $redis->get($key, 'country')); // Finland $redis->del($key, 'to delete'); $redis->hincrby($key, 'age', 20); // 64 $redis->hmset($key, ); // finally $data = $redis->hgetall($key); print_r($data); // возвращает все значения, которые принадлежат хэшу /* */
Основные команды
Redis поддерживает операции со строками, списками, множествами, хеш-таблицами, упорядоченными множествами и так далее.
Рассмотрим основные операции на примере хеш-таблиц.
HSET — сохраняет значение по ключу:
В примере выше мы создали объект person1 с двумя полями (name и age) и соответствующими значениями.
HGET — получение значения по ключу (для определённого поля):
Выше мы получили значение поля name у ключа person1.
HGETALL — получение всех пар «ключ-значение»:
Получили значения всех полей по ключу person1.
HKEYS и HVALS — получение всех ключей и соответствующих им значений: