Установка redis в ubuntu 18.04
Содержание:
- *Administration
- 5 последних уроков рубрики «PHP»
- *Programming with Redis
- What is Redis?
- Step 3 – Start Coding
- Redis и Memcached
- Модели данных
- Шаг 5 — Переименование опасных команд
- *Elements with the same score
- Step 1 — Setup Redis
- Пример создания реплики
- 1: Установка Redis
- 2: Настройка Redis для поддержки внешних соединений
- 4: Тестирование подключения и авторизации Redis
- *Books
- *Redis modules API
- Типы данных Redis
- 5: Настройка обработки сессий
- Install Ubuntu on Windows 10
- Related commands
- *ZADD options (Redis 3.0.2 or greater)
- *Return value
*Administration
- Redis-cli: Learn how to master the Redis command line interface, something you’ll be using a lot in order to administer, troubleshoot and experiment with Redis.
- Configuration: How to configure redis.
-
Replication: What you need to know in order to
set up master-replicas replication. -
Persistence: Know your options when configuring
Redis’ durability. - Redis Administration: Selected administration topics.
- Security: An overview of Redis security.
- Redis Access Control Lists: Starting with version 6 Redis supports ACLs. It is possible to configure users able to run only selected commands and able to access only specific key patterns.
- Encryption: How to encrypt Redis client-server communication.
- Signals Handling: How Redis handles signals.
- Connections Handling: How Redis handles clients connections.
- High Availability: Redis Sentinel is the official high availability solution for Redis.
- Latency monitoring: Redis integrated latency monitoring and reporting capabilities are helpful to tune Redis instances for low latency workloads.
- Benchmarks: See how fast Redis is in different platforms.
- Redis Releases: Redis development cycle and version numbering.
5 последних уроков рубрики «PHP»
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак
В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение
В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
*Programming with Redis
- The full list of commands implemented by Redis, along with thorough documentation for each of them.
-
Pipelining: Learn how to send multiple commands
at once, saving on round trip time. - Redis Pub/Sub: Redis is a fast and stable Publish/Subscribe messaging system! Check it out.
- Redis Lua scripting: Redis Lua scripting feature documentation.
- Debugging Lua scripts: Redis 3.2 introduces a native Lua debugger for Redis scripts.
-
Memory optimization: Understand how
Redis uses RAM and learn some tricks to use less of it. - Expires: Redis allows to set a time to live different for every key so that the key will be automatically removed from the server when it expires.
- Redis as an LRU cache: How to configure and use Redis as a cache with a fixed amount of memory and auto eviction of keys.
- Redis transactions: It is possible to group commands together so that they are executed as a single transaction.
- Client side caching: Starting with version 6 Redis supports server assisted client side caching. This document describes how to use it.
- Mass insertion of data: How to add a big amount of pre existing or generated data to a Redis instance in a short time.
- Partitioning: How to distribute your data among multiple Redis instances.
- Distributed locks: Implementing a distributed lock manager with Redis.
- Redis keyspace notifications: Get notifications of keyspace events via Pub/Sub (Redis 2.8 or greater).
- Creating secondary indexes with Redis: Use Redis data structures to create secondary indexes, composed indexes and traverse graphs.
What is Redis?
Redis is an open-source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports various data structures such as Strings, Hashes, Lists, Sets, etc.
In simple words, we can store the data from our database in our backend storage as a cache. Afterward, this data is served to our front-end for the same API request through a specific amount of time period.
Redis is made using ANSI C programing language and it uses NoSQL structure to store data which makes it more popular nowadays.
Currently, tech giants like GitHub, Weibo, Pinterest, Snapchat, Craigslist, Digg, StackOverflow, Flickr, etc. are using Redis. So we can trust Redis in using within our application.
Step 3 – Start Coding
Sample program
import redis
r = redis.Redis( host= ‘redis.us-east-1-1.ec2.cloud.redislabs.com’, port= ‘12345’, Password = ‘thisismypassword’)
r.set(‘foo’,’bar’)
r.get(‘foo’)
2. Java
Recommended libraryJedisHow to installrelease page<repositories> <repository> <id>snapshots-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url> </repository>
</repositories><dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.0-SNAPSHOT</version> </dependency>
</dependencies>
Sample program
Jedis jedis = new Jedis(“redis.us-east-1-1.ec2.cloud.redislabs.com”,”12345″);
jedis.auth(“thisismypassword”);
jedis.set(“foo”, “bar”);
String value = jedis.get(“foo”);
Sample program
var redis = require(‘redis’); var redisHost = ‘redis.us-east-1-1.ec2.cloud.redislabs.com’;
var redisPort = process.argv || 12345;
var redisAuth = ‘thisismypassword’; var client = redis.createClient ({ port : redisPort, host : redisHost
}); client.auth(redisAuth, function(err, response){ if(err){ throw err; }
}); client.set(‘foo’,’bar’);
client.get(‘foo’, function(err, response){ if(err) { throw err; }else{ console.log(response); }
});
Redis и Memcached
На первый взгляд может показаться, что Redis мало чем отличается от Memcached. И Redis, и Memcached хранят данные в памяти и осуществляют доступ к ним по ключу. Оба написаны на Си и распространяются под лицензией BSD. Но в действительности, между ними больше различий, чем сходства.
В первую очередь, Redis умеет сохранять данные на диск. Можно настроить Redis так, чтобы данные вообще не сохранялись, сохранялись периодически по принципу copy-on-write или сохранялись периодически и писались в журнал (binlog). Таким образом, всегда можно добиться требуемого баланса между производительностью и надежностью.
Redis, в отличие от Memcached, позволяет хранить не только строки, но и массивы (которые могут использоваться в качестве очередей или стеков), словари, множества без повторов, большие массивы бит (bitmaps), а также множества, отсортированные по некой величине. Разумеется, можно работать с отдельными элементами списков, словарей и множеств. Как и Memcached, Redis позволяет указать время жизни данных (двумя способами — «удалить в заданный момент времени» и «удалить через заданный промежуток времени»). По умолчанию все данные хранятся вечно.
Интересная особенность Redis заключается в том, что это — однопоточный сервер. Такое решение сильно упрощает поддержку кода, обеспечивает атомарность операций и позволяет запустить по одному процессу Redis на каждое ядро процессора. Разумеется, каждый процесс будет прослушивать свой порт. Решение нетипичное, но вполне оправданное, так как на выполнение одной операции Redis тратит очень небольшое количество времени.
Модели данных
Все данные Redis хранит в виде словаря, в котором ключи связаны со своими значениями. Одно из ключевых отличий Redis от других хранилищ данных заключается в том, что значения этих ключей не ограничиваются строками. Поддерживаются следующие абстрактные типы данных:
- Строки (strings). Базовый тип данных Redis. Строки в Redis бинарнобезопасны, могут использоваться так же как числа.
- Списки (lists). Классические списки строк, упорядоченные в порядке вставки, которая возможна как со стороны головы, так и со стороны хвоста списка.
- Множества (sets). Множества строк в математическом понимании: не упорядочены, поддерживают операции вставки, проверки вхождения элемента, пересечения и разницы множеств.
- Хеш-таблицы (hashes). Классические хеш-таблицы или ассоциативные массивы.
- Упорядоченные множества (sorted sets). Упорядоченное множество отличается от обычного тем, что его элементы упорядочены по особому параметру «score».
Тип данных значения определяет, какие операции (команды) доступны для него. Redis поддерживает такие высокоуровневые операции, как объединение и разность наборов, а также их сортировку.
Шаг 5 — Переименование опасных команд
Другой элемент безопасности, встроенные в Redis, подразумевает переименование или полное удаление определенных команд, которые считаются опасными.
При использовании неавторизованными пользователями, такие команды могут использоваться для изменения конфигурации, уничтожения или выведения из строя ваших данных. Как и в случае пароля для аутентификации, переименование или отключение команд выполняется в том же разделе в файле .
Список команд, которые считаются опасными, включает: FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME и DEBUG. Данный список не является всеобъемлющим, но переименование или удаление всех команд в этом списке служит хорошим отправным пунктом для повышения безопасности вашего сервера Redis.
Решение о том, нужно ли отключить или переименовать команду, зависит от ваших потребностей или потребностей вашего сайта. Если вы знаете, что вы не будете использовать команду, которая может быть использована злоумышленниками, тогда вы можете отключить ее. В другом случае мы рекомендуем вам переименовать ее.
Чтобы активировать или отключить команды Redis, откройте файл конфигурации еще раз:
Предупреждение. Седующие шаги с демонстрацией отключения или переименования команд являются примерами. Вы должны отключить или переименовать команды, имеющие смысл для вас. Вы можете просмотреть полный список команд самостоятельно и узнать, как они могут использоваться злоумышленниками, по адресу redis.io/commands.
Чтобы отключить команду, просто укажите пустую строку в качестве имени (обозначается парой кавычек без символов между ними), как показано ниже:
/etc/redis/redis.conf
Чтобы переименовать команду, дайте ей другое имя, как показано в приведенных ниже примерах. Переименованные команды должно быть трудно подобрать, но легко запомнить:
/etc/redis/redis.conf
Сохраните изменения и закройте файл.
После переименования команды примените изменения, перезапустив Redis:
Чтобы протестировать новую команду, откройте командную строку Redis:
Затем выполните аутентификацию:
Предположим, вы переименовали команду в , как показано в предыдущем примере. Сначала попробуйте воспользоваться первоначальной команду . Команда не будет выполнена, потому что вы переименовали ее:
Вызов переименованной команды будет успешным. Регистр не имеет значения:
После этого вы можете закрыть :
Обратите внимание, что если вы уже используете командную строку Redis, а затем перезапустите Redis, вам нужно будет повторно выполнить аутентификацию. Иначе вы получите следующую ошибку при вводе команды:. В отношении практики переименования команд в конце раздела файла есть следующее предостережение:
В отношении практики переименования команд в конце раздела файла есть следующее предостережение:
Примечание: проект Redis предпочитает использовать термины «master» и «slave», в то время как DigitalOcean предпочитает использовать варианты «primary» и «secondary». Чтобы не допустить путаницы, мы решили использовать здесь термины, используемые в документации Redis.
Это значит, что, если переименованная команда не содержится в файле AOF, либо содержится, но AOF файл не передается «slave» компонентам, не будет никаких проблем.
Учитывайте этот момент, когда будете переименовать команды. Лучшее всего переименовать команду, пока вы не используете AOF сохранение или сразу после установки, т.е. до развертывания использующего Redis приложения.
Если вы используете AOF и работаете с конфигурацией master-slave, изучите этот ответ на странице проблем проекта на GitHub. Ниже приводится ответ на вопрос автора:
Таким образом, при переименовании необходимо убедиться, что переименованные команды применяются во всех экземплярах на установках типа «master-slave».
*Elements with the same score
While the same element can’t be repeated in a sorted set since every element
is unique, it is possible to add multiple different elements having the same score. When multiple elements have the same score, they are ordered lexicographically (they are still ordered by score as a first key, however, locally, all the elements with the same score are relatively ordered lexicographically).
The lexicographic ordering used is binary, it compares strings as array of bytes.
If the user inserts all the elements in a sorted set with the same score (for example 0), all the elements of the sorted set are sorted lexicographically, and range queries on elements are possible using the command ZRANGEBYLEX (Note: it is also possible to query sorted sets by range of scores using ZRANGEBYSCORE).
Step 1 — Setup Redis
Option A: Redis Cloud
Redis Cloud
- Sign-up for a free Redis Cloud account: Visit the Redis Labs Get Started page, and click on SIGN UP under “Cloud Hosted” section.
- Setup a database endpoint: Once you create and verify your email address, you can login to your Redis Cloud account and create a new database. Your Redis Cloud database will be password protected. The URL to your endpoint will look like:
redis-11111.c1.us-east-1-1.ec2.cloud.redislabs.com:12345redis-11111.c1.us-east-1-1.ec2.cloud.redislabs.com
Option B: Build from Source
- Download Redis source code from the downloads page
- Unzip the file
tar -xzf redis-VERSION.tar.gz - Compile and build Redis
cd redis-VERSION
make - Start Redis
cd src
./redis-server
Option C: Docker
Docker hub
- Run Redis as a container on port 6379
docker run –name redis -p 6379:6379 -d redis - Command to stop Redis
docker stop redis
docker rm redis
Пример создания реплики
Для создания реплики нам нужно две машины, с уже установленными Redis. Как установить его, уже было описано выше. На второй машине делаем то же самое, с одним лишь отличием: когда при установке запросит порт, пропишем не стандартный 6379, а любой другой, например 6380. Далее просто настраиваем связь master-slave, при помощи следующих программ.
На машине master прописываем:
redis-cli -p 6379 config set requirepass mypass
На машине slave прописываем:
redis-cli -p 6380 config set masterauth mypass redis-cli -p 6380 SLAVEOF master_ip 6379
Чтобы убедиться, можно просмотреть информацию о репликациях.
На master:
redis-cli -p 6379 -a mypass info replication
На slave:
redis-cli -p 6380 info replication
Т.к. я использую виртуальные машины для реализации данной связи, то мне придётся предварительно настроить внутреннюю сеть и связать мои виртуальные машины, чтобы они могли связаться друг с другом.
1: Установка Redis
Сначала нужно установить сервер Redis.
Для этого подойдёт пакет из репозитория PPA.
Важно! Используйте наиболее актуальную версию Redis. Из соображений безопасности рекомендуется работать только с надёжными и проверенными источниками репозиториев PPA
Из соображений безопасности рекомендуется работать только с надёжными и проверенными источниками репозиториев PPA.
Чтобы добавить репозиторий PPA, введите:
Для подтверждения нажмите Enter.
Обновите кэш пакетного менеджера:
Установите Redis:
Чтобы убедиться, что установка прошла успешно, введите команду:
Команда создаст подключение к Redis с локального хоста на порт 6379. Если установка прошла успешно, команда вернёт:
2: Настройка Redis для поддержки внешних соединений
По умолчанию Redis поддерживает подключения только с локального хоста. Это значит, что Redis доступен только с того сервера, на котором он установлен. Эту настройку нужно изменить.
По умолчанию Redis не предоставляет шифрования, поскольку предполагает развёртывание в изолированной сети заведомо безопасных серверов. Следовательно, чтобы все внешние соединения были безопасными, оба сервера должны находиться в изолированной сети, либо же вы должны защитить трафик между серверами при помощи специальных инструментов шифрования.
Изолированная сеть
Если серверы находятся в изолированной сети, достаточно просто отредактировать конфигурационный файл Redis и добавить IP-адрес сети.
Перейдите на сервер redis, создайте резервную копию конфигурационного файла Redis и откройте его:
Найдите строку bind и вставьте IP-адрес сети, в которой находится сервер Redis.
Сохраните и закройте файл. Перезапустите сервис:
Откройте доступ к порту в брандмауэре.
Теперь сервер Redis может принимать внешние соединения в изолированной сети.
Инструменты шифрования
Если сервер развёрнут вне изолированной среды, обязательно нужно защитить трафик между серверами. Существует несколько способов сделать это:
- Инструмент stunnel – инструмент для туннелирования. Позволяет настроить входящий туннель на сервере redis и исходящий туннель на сервере web. Сервер web будет подключаться к локальному порту для связи с удаленным сервисом Redis.
- Инструмент spiped: сервер web будет использоваться в качестве клиента spiped.на каждом сервере нужно создать юнит-файл system. Сервер web будет подключаться к локальному порту для связи с удаленным сервисом Redis.
- PeerVPN: оба сервера будут помещены в VPN. Сервер web будет подключаться к серверу redis с помощью IP-адреса VPN.
Выберите один из предложенных методов и зашифруйте трафик между серверами.
4: Тестирование подключения и авторизации Redis
Чтобы убедиться в том, что все настройки работают должным образом, подключитесь к Redis с сервера web.
По умолчанию сервис Redis прослушивает порт 6379 на локальном интерфейсе. Однако данные могут отличаться в зависимости от настроек безопасности трафика Redis (раздел 2). С помощью клиента redis-cli и флага –h можно указать IP-адрес, с помощью флага –p – задать порт удалённого сервиса, к которому нужно подключиться.
Примечание: Если вы используете нестандартные параметры, замените 127.0.0.1 и порт 6379 соответствующими данными.
Итак, если серверы работают в изолированной среде, вам нужно использовать IP-адрес этой сети и стандартный порт 6379 (его можно не указывать).
Если вы используете stunnel или spiped, укажите номер локального порта, который подключен к удаленному сервису Redis:
Если вы используете PeerVPN, укажите IP-адрес VPN:
Общий синтаксис команды выглядит так:
Теперь вы можете подключиться к удалённому сервису Redis с сервера web.
Если вы определили пароль, вы не получите доступа к данным, а на экране появится ошибка AUTH:
Чтобы пройти аутентификацию, нужно запустить команду AUTH и указать пароль, указанный в файле /etc/redis/redis.conf.
Если всё сработало, на экране появится вывод:
Теперь снова запустите:
На экране появится примерно такой вывод:
Это значит, что на сервере Redis пока что нет никаких данных; это нормальное поведение сервера, поскольку сервер web пока что не может использовать его в качестве обработчика сессий.
Вернитесь в командную строку:
*Books
The following is a list of books covering Redis that are already published. Books are ordered by release date (newer books first).
- Mastering Redis (Packt, 2016) by Jeremy Nelson.
- Redis Essentials (Packt, 2015) by Maxwell Da Silva and Hugo Tavares
- Redis in Action (Manning, 2013) by Josiah L. Carlson (early access edition).
- Instant Redis Optimization How-to (Packt, 2013) by Arun Chinnachamy.
- Instant Redis Persistence (Packt, 2013) by Matt Palmer.
- The Little Redis Book (Free Book, 2012) by Karl Seguin is a great free and concise book that will get you started with Redis.
- Redis Cookbook (O’Reilly Media, 2011) by Tiago Macedo and Fred Oliveira.
The following books have Redis related content but are not specifically about Redis:
- Seven databases in seven weeks (The Pragmatic Bookshelf, 2012).
- Mining the Social Web (O’Reilly Media, 2011)
- Professional NoSQL (Wrox, 2011)
*Redis modules API
- Introduction to Redis modules. A good place to start learing about Redis 4.0 modules programming.
- Implementing native data types. Modules scan implement new data types (data structures and more) that look like built-in data types. This documentation covers the API to do so.
- Blocking operations with modules. This is still an experimental API, but a very powerful one to write commands that can block the client (without blocking Redis) and can execute tasks in other threads.
- Redis modules API reference. Directly generated from the top comments in the source code inside . Contains many low level details about API usage.
Типы данных Redis
Redis работает с пятью типами данных: Strings (строки), Sets (множества), Sorted Sets (сортированные множества), Lists (списки), Hashes (хеш)
Строки
Строки — самый распространённый тип данных в Redis. Часто встречаемые команды при работе со строками:
SET — установка значения ключу
GET — выборка значения по ключу
DEL — удаление ключа и значения
INCR — автоматический инкремент ключа
INCRBY — инкремент на указанную величину
EXPIRE — время жизни данных в секундах
Строки могут быть использованы для хранения объектов, отсортированных по ключу. Пример:
> SET newkey "the redis string begins" OK > GET newkey "the redis string begins"
Множества
Группировать строки можно при помощи множеств — набор строк без сортировки. Часто встречающиеся команды:
SADD — добавление одного или нескольких значений к множеству
SMEMBERS — выборка всех значений множества
SINTER — выборка общих значений нескольких множеств
SISMEMBER — проверка присутствия значения во множестве
SRANDMEMBER — выборка случайного значения из множества
Множества довольно часто применимы в разных ситуациях. Так как каждое значение множества индивидуально, не требуется проверка перед добавлением. При выполнении команды SADD такая проверка выполняется автоматически.
> SADD colors red (integer) 1 redis 127.0.0.1:6379> SADD colors orange (integer) 1 redis 127.0.0.1:6379> SADD colors yellow (integer) 1 redis 127.0.0.1:6379> SADD colors orange (integer) 0 redis 127.0.0.1:6379> SMEMBERS colors 1) "red" 2) "yellow" 3) "orange"
Примером использования множеств может быть проверка IP адреса посетителя сайт на уникальность или извлечение случайного значения командой SRANDMEMBER.
Множества с сортировкой
Название говорит само за себя — коллекция строк ассоциированных с численным значением, отсортированных по увеличению этого значения.
Такой тип данных часто применяется с диапазонами, так как добавление и удаление данных выполняется значительно быстрее. Часто встречаемые команды:
ZADD — добавление значения ко множеству
ZRANGE — отображение значений отсортированных по индексу (от меньшего к большему)
ZREVRANGE — отображение значений отсортированных по индексу (от большему к меньшему)
ZREM — удаление значения
Мы можем создать простое множество с размерами самых маленьких стран в мире.
> zadd countries 9 Tuvalu (integer) 1 > zadd countries 62 Liechtenstein (integer) 1 > zadd countries .7 Monaco (integer) 1 > zadd countries .2 VaticanCity (integer) 1 > zadd countries 107 Seychelles (integer) 1 redis 127.0.0.1:6379> zrange countries 0 -1 1) "VaticanCity" 2) "Monaco" 3) "Tuvalu" 4) "Liechtenstein" 5) "Seychelles"
Списки
Списки в Redis — коллекция отсортированных значений, что их и отличает от множеств. Добавление элемента в начало или конец списка выполняется очень быстро даже если список состоит из десяти миллионов элементов. Часто встречающиеся команды:
LPUSH — добавление значения в начало списка
RPUSH — добавление значения в конец списка
LPOP — выборка и удаление значения первого элемента в списке
RPOP — выборка и удаление последнего элемента в списке
LREM — удаление диапазона элементов из списка
LRANGE — выборка диапазона элементов из списка
LTRIM — изменения списка с удалением всех элементов не входящих в указанный диапазон
Пример списка людей ответственных за ланч:
> rpush lunch.provider alice (integer) 1 > rpush lunch.provider bob (integer) 2 > rpush lunch.provider carol (integer) 3 > rpush lunch.provider don (integer) 4 > rpush lunch.provider emily (integer) 5
Добавление человека в начало очереди выглядит следующим образом:
lpush lunch.provider zoe (integer) 6
Команда LRANGE выведет весь список:
lrange lunch.provider 0 -1 1) "zoe" 2) "alice" 3) "bob" 4) "carol" 5) "don" 6) "emily"
Списка часто применяются для хранения временных событий или коллекции из ограниченного числа элементов.
Хэш
Хэш в Redis — способ хранения объектов, состоящих из множества полей. Они предназначены для хранения большого числа полей в маленьком пространстве. Хэш способны хранить больше 4 миллиардов пар поле-значение. Часто встречающиеся команды:
HMSET — установка нескольких значений
HSET — установка поля со строковым значением
HGET — выборка значения по полю
HMGET — выборка всех значений указанных полей
HGETALL — выборка всех значений
Пример использования типа хэш для описания примера с пользователем сайта
> hmset user:1 username jsmith password 4bAc0s email jsmith@gmail.com OK > hgetall user:1 1) "username" 2) "jsmith" 3) "password" 4) "4bAc0s" 5) "email" 6) "jsmith@gmail.com"
Для получения определенной информации используйте команду HMGET
> hmget user:1 username email 1) "jsmith" "jsmith@gmail.com"
5: Настройка обработки сессий
Оставайтесь на сервере web. Откройте файл php.ini, в котором можно определить стандартный обработчик сессий PHP. Место хранения файла зависит от используемого программного стека.
В стеке LAMP в Ubuntu 16.04 этот файл обычно находится в /etc/php/7.0/apache2/php.ini. В стеке LEMP в системе Ubuntu 16.04 файл, как правило, хранится в /etc/php/7.0/fpm/php.ini.
Поиск файла php.ini (опционально)
Примечание: Если вы уже нашли файл php.ini, пропустите этот раздел.
Если вы не знаете точного пути файла php.ini, его можно быстро узнать при помощи функции phpinfo(). Просто откройте в каталоге /var/www/html файл info.php:
и поместите в него следующий код:
Затем откройте скрипт в браузере и найдите строку Loaded Configuration File. В ней указано местонахождение нужного файла.
Примечание: После этого рекомендуется удалить файл info.php, поскольку он открывает доступ к конфиденциальным данным о сервере.
Изменение настроек
Откройте файл php.ini.
Примечание: Если путь к файлу php.ini отличается, укажите правильный путь.
В файле php.ini найдите строку session.save_handler. По умолчанию она имеет значение files. Замените значение на redis, чтобы использовать PHP-расширение Redis вместо файлов.
Теперь вы должны найти строку session.save_path. Раскомментируйте ее и измените значение, указав строку подключения Redis в таком формате:
Опять же, правильные значения зависят от выбранного вами метода защиты данных. используйте те же данные, что и в разделе 4. Например, если вы используете stunnel или spiped, строка session.save_path будет иметь такой вид:
Сохраните и закройте файл.
Затем перезапустите сервер PHP.
Install Ubuntu on Windows 10
We have already told that Redis is not developed to work within Windows systems because Windows servers not using widely. So it requires a Unix based operating system like Ubuntu, or macOS to run Redis server. macOS can only be installed on Windows 10 using Virtualbox and it’s most complicated. But Ubuntu can be easily installed within our Windows 10 operating system easily because it’s available in Microsoft store. We can simply install the LTS version of Ubuntu from Microsoft store using the link below.
Ubuntu is not mandatory to set up the Redis server. It supports other Linux versions such as Debian and Kali Linux. Use the below link to download it.
In this tutorial, we are going to set up a Redis server in Ubuntu operating system. Without using any URL’s above, we are manually downloading it from the Microsoft store.
First, open the Microsoft Store by searching “store” in the left-bottom Windows 10 search box.
2. Install Ubuntu
The Microsoft Store will be opened and now search for Ubuntu. In the top-right search box, search for Ubuntu and click on the latest version(18.04 LTS) from the suggestions and Get the app.
3. Launch Ubuntu
So the Ubuntu is installed on our Windows system and now we need to launch it. So search for “ubuntu” in the Windows search box.
An Ubuntu terminal will be opened and this terminal is used to set up Redis.
Related commands
-
ACL CAT
-
ACL DELUSER
-
ACL GENPASS
-
ACL GETUSER
-
ACL HELP
-
ACL LIST
-
ACL LOAD
-
ACL LOG
-
ACL SAVE
-
ACL SETUSER
-
ACL USERS
-
ACL WHOAMI
-
BGREWRITEAOF
-
BGSAVE
-
COMMAND
-
COMMAND COUNT
-
COMMAND GETKEYS
-
COMMAND INFO
-
CONFIG GET
-
CONFIG RESETSTAT
-
CONFIG REWRITE
-
CONFIG SET
-
DBSIZE
-
DEBUG OBJECT
-
DEBUG SEGFAULT
-
FLUSHALL
-
FLUSHDB
-
INFO
-
LASTSAVE
-
LATENCY DOCTOR
-
LATENCY GRAPH
-
LATENCY HELP
-
LATENCY HISTORY
-
LATENCY LATEST
-
LATENCY RESET
-
LOLWUT
-
MEMORY DOCTOR
-
MEMORY HELP
-
MEMORY MALLOC-STATS
-
MEMORY PURGE
-
MEMORY STATS
-
MEMORY USAGE
-
MODULE LIST
-
MODULE LOAD
-
MODULE UNLOAD
-
MONITOR
-
PSYNC
-
REPLICAOF
-
ROLE
-
SAVE
-
SHUTDOWN
-
SLAVEOF
-
SLOWLOG
-
SWAPDB
-
SYNC
-
TIME
*ZADD options (Redis 3.0.2 or greater)
ZADD supports a list of options, specified after the name of the key and before
the first score argument. Options are:
- XX: Only update elements that already exist. Never add elements.
- NX: Don’t update already existing elements. Always add new elements.
- CH: Modify the return value from the number of new elements added, to the total number of elements changed (CH is an abbreviation of changed). Changed elements are new elements added and elements already existing for which the score was updated. So elements specified in the command line having the same score as they had in the past are not counted. Note: normally the return value of ZADD only counts the number of new elements added.
- INCR: When this option is specified ZADD acts like ZINCRBY. Only one score-element pair can be specified in this mode.
*Return value
: as a collection of text lines.
Lines can contain a section name (starting with a # character) or a property.
All the properties are in the form of terminated by .
redis>
INFO
# Server redis_version:6.0.6 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:b63575307aaffe0a redis_mode:standalone os:Linux 5.4.0-1017-aws x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:9.3.0 process_id:2854672 run_id:90a5246f10e0aeb6b02cc2765b485d841ffc924e tcp_port:6379 uptime_in_seconds:3664315 uptime_in_days:42 hz:10 configured_hz:10 lru_clock:5101418 executable:/usr/local/bin/redis-server config_file:/etc/redis/redis.conf # Clients connected_clients:2 client_recent_max_input_buffer:2 client_recent_max_output_buffer:0 blocked_clients:0 tracking_clients:0 clients_in_timeout_table:0 # Memory used_memory:411392312 used_memory_human:392.33M used_memory_rss:423780352 used_memory_rss_human:404.15M used_memory_peak:411398016 used_memory_peak_human:392.34M used_memory_peak_perc:100.00% used_memory_overhead:126883852 used_memory_startup:801944 used_memory_dataset:284508460 used_memory_dataset_perc:69.29% allocator_allocated:411396216 allocator_active:411811840 allocator_resident:423575552 total_system_memory:16596942848 total_system_memory_human:15.46G used_memory_lua:37888 used_memory_lua_human:37.00K used_memory_scripts:0 used_memory_scripts_human:0B number_of_cached_scripts:0 maxmemory:0 maxmemory_human:0B maxmemory_policy:noeviction allocator_frag_ratio:1.00 allocator_frag_bytes:415624 allocator_rss_ratio:1.03 allocator_rss_bytes:11763712 rss_overhead_ratio:1.00 rss_overhead_bytes:204800 mem_fragmentation_ratio:1.03 mem_fragmentation_bytes:12471528 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:33972 mem_aof_buffer:0 mem_allocator:jemalloc-5.1.0 active_defrag_running:0 lazyfree_pending_objects:0 # Persistence loading:0 rdb_changes_since_last_save:11448133 rdb_bgsave_in_progress:0 rdb_last_save_time:1595272623 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:0 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_last_cow_size:0 module_fork_in_progress:0 module_fork_last_cow_size:0 # Stats total_connections_received:251142 total_commands_processed:28237972 instantaneous_ops_per_sec:16 total_net_input_bytes:2346011359 total_net_output_bytes:424045970 instantaneous_input_kbps:1.31 instantaneous_output_kbps:0.17 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:76925 expired_stale_perc:0.02 expired_time_cap_reached_count:0 expire_cycle_cpu_milliseconds:120620 evicted_keys:0 keyspace_hits:6552243 keyspace_misses:3028152 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 migrate_cached_sockets:0 slave_expires_tracked_keys:0 active_defrag_hits:0 active_defrag_misses:0 active_defrag_key_hits:0 active_defrag_key_misses:0 tracking_total_keys:0 tracking_total_items:0 tracking_total_prefixes:0 unexpected_error_replies:0 # Replication role:master connected_slaves:0 master_replid:d3eae8c9b78a8fb99486dd23dad28cf5315c5d7b master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:2231.934917 used_cpu_user:25633.085037 used_cpu_sys_children:0.000000 used_cpu_user_children:0.000000 # Modules # Cluster cluster_enabled:0 # Keyspace db0:keys=2312324,expires=12,avg_ttl=875618654506