Redis for windows server
This project introduces 3 ways of running the native Redis on MS-Windows (10) .
Whilst it’s recommended to use Redis on Linux in production, it is often useful for developers on MS-Windows platforms to have their own local version of redis running to develop with.
The easiest way of running Redis on MS-Windows is to use the binary releases of Native port of Redis for Windows, but as this is an unofficial port it always lags behind the latest official development of redis on Linux/OSX.
Thanks to Vagrant you can choose to run the latest Redis stable version inside a VirtualBox with Linux where you’ll be able to run the official native version of Redis.
Or if you have the latest version of MS-Windows 10, you can install Windows Subsystem for Linux which will lets you run the official version of Redis on Linux on Windows. 🙂 This is our preferred approach as it lets you run native Linux binaries on Windows more efficiently than running Linux in a VM.
Option 1. Windows Subsystem for Linux
Install Redis Stable (5.0.4)
Once your WSL has been downloaded and installed, you can run Linux with the WSL by typing wsl.exe or bash.exe from a MS-Windows Command Prompt.
- Update & upgrade your Linux distro’s packages
Which you can connect to from within bash or from your Windows desktop using the redis-cli native Windows binary from MSOpenTech.
Option 2. Running the latest version of Redis with Vagrant
2. Download the vagrant-redis.zip vagrant configuration
3. Extract vagrant-redis.zip in any folder, e.g. in C:\vagrant-redis
4. Launch the Virtual Box VM with vagrant up
This will launch a new Ubuntu VM instance inside VirtualBox that will automatically install and start the latest stable version of Redis.
The vagrant configuration was originally from JasonPunyon/redishobo and has been modified to use the latest stable release of Redis.
Option 3. Native port of Redis for Windows
These 64-bit binary releases are created by building the Native port of Redis for Windows, but as it’s more convenient we provide a zip of the 64-bit binaries here.
MS Open Announcements
Current Version: Redis 4.0.2.3 for Windows (alpha) (1 Oct 2018)
1. Download the Redis-x64-4.0.2.3.zip native 64bit Windows port of Redis
2. Extract Redis-x64-4.0.2.3.zip in any folder, e.g. in C:\Redis
3. Run the redis-server.exe using the local configuration
4. Run redis-cli.exe to connect to your redis instance
5. Start playing with redis
For more details, please see:
The following content is reserved for my reference in the original project ServiceStack/redis-windows:
The MSOpenTech of Redis adds some useful extensions for better integration with Windows.
Running Redis as a Service
If you installed Redis using the MSI package, then Redis was already installed as a Windows service. Nothing further to do.
If you would like to change its settings, you can update the redis.windows-service.conf file and then restart the Redis service (Run -> services.msc -> Redis -> Restart).
During installation of the MSI you can either use the installer’s user interface to update the port that Redis listens to and the firewall exception or run it silently without a UI. The following examples show how to install from the command line:
default install (port 6379 and firewall exception ON):
set port and turn OFF firewall exception:
set port and turn ON firewall exception:
install with no user interface:
If you did not install Redis using the MSI package, then you still run Redis as a Windows service by following these instructions:
In order to better integrate with the Windows Services model, new command line arguments have been introduced to Redis. These service arguments require an elevated user context in order to connect to the service control manager. If these commands are invoked from a non-elevated context, Redis will attempt to create an elevated context in which to execute these commands. This will cause a User Account Control dialog to be displayed by Windows and may require Administrative user credentials in order to proceed.
Installing the Service
This must be the first argument on the redis-server command line. Arguments after this are passed in the order they occur to Redis when the service is launched. The service will be configured as Autostart and will be launched as «NT AUTHORITY\NetworkService». Upon successful installation, a success message will be displayed and Redis will exit.
This command does not start the service.
Uninstalling the Service
This will remove the Redis service configuration information from the registry. Upon successful uninstallation, a success message will be displayed and Redis will exit. This does command not to stop the service.
Starting the Service
This will start the Redis service. Upon successful startup, a success message will be displayed and Redis service will be started.
Stopping the Service
This will stop the Redis service. Upon successful termination, a success message will be displayed and Redis will exit.
Naming the Service
This optional argument may be used with any of the preceding commands to set the name of the installed service. This argument should follow the service-install, service-start, service-stop or service-uninstall commands, and precede any arguments to be passed to Redis via the service-install command. The following would install and start three separate instances of Redis as a service:
Redis Vue is a simple, lightweight, versatile Redis Admin UI developed using Vue and ServiceStack .NET Core Web Apps. It supports Redis’s core Strings, Lists, Sets, Sorted Sets and Hash data structures and custom Redis commands with its entire functionality contained in a single /app/index.html using the dynamic ServiceStack Templates language, making it easy to customize and further enhance.
Redis React is a simple user-friendly UI for browsing data in Redis servers which takes advantages of the complex type conventions built in the ServiceStack.Redis Client to provide a rich, human-friendly UI for navigating related datasets, enabling a fast and fluid browsing experience for your Redis servers.
Windows, OSX and Linux downloads available from Redis React Home Page
See the redis config project for a quick way to setup up the minimal highly available Redis Sentinel configuration including start/stop scripts for instantly running multiple redis instances on a single (or multiple) Windows, OSX or Linux servers.
Redis for Windows 4.0.2.3 (alpha)
This 4.0.2.3 release is still an alpha version, but contains enhancements and fixes for:
- #14: decrease logging verbosity of some cluster-related messages
- #23: ZRANK/ZREVRANK bugfix (win-port only)
- failed unit tests (bdcf80e).
Alpha version of Redis 4.0.2 for Windows.
Redis 4.0.2 for Windows is a merge of Windows-specific changes from latest (unsupported) 3.2.100 release from MSOpenTech and Redis 4.0.2 and this alpha release consists of:
- all Redis 4.0.2 features except modules,
- all executables of Redis (redis-server, redis-cli, redis-benchmark, redis-check-aof, redis-check-rdb).
Main difference to official Redis 4.0.2 (except no support for modules at the moment) is old version of jemalloc-win dependency, which is planned to be updated to the same version in beta release.
tporadowski released this Mar 26, 2018 · 16 commits to win-4.0.2 since this release
Redis for Windows 4.0.2.2 (alpha)
This 4.0.2.2 release is still an alpha version, but contains a fix to issue #12 (crash when rewriting AOF file — this issue was specific to Windows port only).
Alpha version of Redis 4.0.2 for Windows.
Redis 4.0.2 for Windows is a merge of Windows-specific changes from latest (unsupported) 3.2.100 release from MSOpenTech and Redis 4.0.2 and this alpha release consists of:
- all Redis 4.0.2 features except modules,
- all executables of Redis (redis-server, redis-cli, redis-benchmark, redis-check-aof, redis-check-rdb).
Main difference to official Redis 4.0.2 (except no support for modules at the moment) is old version of jemalloc-win dependency, which is planned to be updated to the same version in beta release.
tporadowski released this Mar 17, 2018 · 20 commits to win-4.0.2 since this release
Redis for Windows 4.0.2.1 (alpha)
This 4.0.2.1 release is still an alpha version, but contains a fix to issue #11, which was related to sending back larger amounts of data to Redis clients (this issue was specific to Windows port only).
Note: If you have installed the previous 4.0.2 version — please back up your config files and uninstall it first.
Alpha version of Redis 4.0.2 for Windows.
Redis 4.0.2 for Windows is a merge of Windows-specific changes from latest (unsupported) 3.2.100 release from MSOpenTech and Redis 4.0.2 and this alpha release consists of:
- all Redis 4.0.2 features except modules,
- all executables of Redis (redis-server, redis-cli, redis-benchmark, redis-check-aof, redis-check-rdb).
Main difference to official Redis 4.0.2 (except no support for modules at the moment) is old version of jemalloc-win dependency, which is planned to be updated to the same version in beta release.
Redis для начинающих
Введение
С одной стороны есть традиционные ACID реляционные базы данных такие как MySQL, PostgreSQL, Oracle и др. Они надежны и стабильны. Сама аббревиатура ACID описывает требования к транзакционной системе (Atomicity — Атомарность, Consistency — Согласованность, Isolation — Изолированность, Durability — Долговечность). Их основная задаче не просто хранить данные, а хранить с максимальной надежностью. Но их основной недостаток, они очень медленные.
С другой стороны есть очень быстрые хранилища в памяти типа ключ-значение, например memcached. Они очень быстрые за счет предельной простоты и отказа от надежности. Несложно привести несколько примеров задач где нужна производительность даже за счет надежности:
— система мониторинга с n-ым количеством датчиков, которые должны постоянно отправлять данные.
— система логирования действий пользователя на каком нибудь сайте
— контроль трафика сети в реалтайм
— хранение сессий пользователей
и т.д.
Redis относится к третьему типу хранилищей. Когда нужно быстрая обработка данных и при этом сохранялось бы определенный уровень надежности и возможности масштабирования.
Redis (REmote DIctionary Server) — это не реляционная структура данных в памяти, используемая в качестве базы данных. Данные хранятся в виде пары ключ-значение. И при этом хранилище умеет масштабироваться путем репликации между серверами. Redis сохраняет все данные в памяти, что позволяет сделать доступ к данным максимально быстрым по сравнению с другими базами данных. Почему Redis известен своей исключительной высокой производительностью даже среди други key-value хранилищ.
Redis позволяет нам хранить данные в высокоуровневых структурах данных, такие как строки, хэши, списки, наборы. Это дает нам больше гибкости в отношении типа и объема информации, которую мы можем хранить в хранилище данных Redis.
Он также довольно дружелюбен для разработчиков, поскольку поддерживает большинство языков высокого уровня, таких как Python, JavaScript, Java, C / C ++ и PHP.
Установка Redis
Redis распространяется по лицензии BSD. Написан на ANSI C, поэтому легок и не имеет внешних зависимостей. Официальной версии для Window нет, но есть версия под Open Server. Но его можно запустить под Docker .
Для дальнейшего изучения Redis нам необходимо скачать и установить сервер Redis. Можно использовать инструкции с официальной веб-страницы. Так же под MacOS можно использовать Homebrew, а для Linux что типа apt. Для запуска Redis используется команда redis-server
У Redis есть Redis-CLI (Common Line Interface), который можно использовать для взаимодействия с данными напрямую на сервере Redis.
Чтобы проверить правильность установки Redis, запустите redis-cli, а затем введите команду ping в появившейся подсказке:
Если сервер отвечает ответом PONG значит он готов к работе. По умолчанию сервер Redis работает на порту 6379, что видно в нашем приглашении.
Что бы выйти из redis-cli используйте команду quit.
Для вывода помощи по списку команд в консоли можно использовать команду HELP @string. Для вывода помощи по конкретной команде можно использовать команду HELP APPEND Например:
Далее приведен краткий список самых необходимых команд. Для изучения полного списка команд, если в этом есть необходимость, обратитесь к официальной документации.
Прежде чем начать использовать Redis в любом языке программирования нужно узнать о базовых командах и структурах используемых в Redis.
Команды
Прежде всего Redis это хранилище типа ключ: значение. И самые первые команды которую все изучают, это команды SET и GET:
Команда используется для установки ключа и его значения, с дополнительными необязательными параметрами для указания срока действия записи значения ключа. Давайте установим ключ foo со значением «hello world». Параметр EX указывает время жизни объекта в секундах, PX в милисекундах:
Команда используется для получения значения, связанного с ключом. Если запись значения ключа превысила срок действия, будет возвращено nil:
По умолчанию все значение в Redis сохраняются как строки.
EXISTS
Эта команда проверяет, существует ли что то с данным ключом. Она возвращает 1 если объект существует или 0 если нет. Boolean типа в Redis нет.
FLUSHALL
Эта команда полностью удаляет все данные в текущем сеансе.
GETSET
Команда возвращает текущее значение и устанавливает новое. Используется для атомарного управления данными.
Команда удаляет ключ и соответствующее значение:
APPEND
Команда добавляем в соотвествующий ключ дополнительное значение. Возвращает количество символов итогового значения.
Возвращает все ключи из базы по указанному шаблону. Есть предостережение что в реальных приложения эту команду лучше не использовать из-за того что она очень медленная.
INCR / DECR
Инкремент / декримент. Если значение ключа integer (хотя в базе храниться все равно строка) можно увеличить или уменьшить значение на 1. Если использовать команду INCR с несуществующем значением то создаться новый ключ со значением 1.
Когда ключ установлен с истечением срока действия (например SET foo EX 10), эту команду можно использовать для просмотра оставшегося времени:
PERSIST
Если мы передумаем об истечении срока действия ключа, мы можем использовать эту команду, чтобы удалить период истечения срока действия:
RENAME
Эта команда используется для переименования ключей на нашем сервере Redis:
Комплексные типы данных
Хеш таблицы
Redis позволяет в качестве значения так же использовать ключ: значение. Что по сути будет почти аналогией объектов из JavaScript или словари в Python. Для записи объекта используется команда HSET в следующем формате HSET имя_ключа имя_атрибута значение. Для чтения объекта используется команда HGET в формате HGET имя_ключа имя_атрибута. Команда HGETALL используется для получения
Множества
Не упорядоченная коллекция уникальных элементов. Аналог set в Python. Для добавление нового элемента во множество используется команда SADD. Для получения все элементов используется команда SMEMBERS. SUNION используется для объединение множеств. SDIFF используется для вычитания из первого множества второго. SINTER возвращает общие элементы указаных множеств. SPOP удаляет и возвращает случайный элемент множества.
Упорядоченные множества
Упорядоченная коллекция уникальных элементов. Для добавление нового элемента в упорядоченное множество используется команда ZADD. Формат ZADD имя_ключа порядковое_число_упорядочивания_множества значение
Команда ZRANGE возвращает срез данных множества
Списки
Список это последовательность значений упорядоченных по порядку их создания. Аналог двух-стороннего стека (то есть стека в который можно добавлять с двух сторон). Списки обычно применяются для создания очередей.
Команда добавления элемента в список LPUSH
LRANGE — возвращает срез списка с левой стороны. Формат LRANGE имя_списка индекс_начало индекс_конца Указание -1 означает до конца списка.
LPOP — вернуть одно значение c левой стороны и удалить его из списка. Формат LPOP имя_списка. Аналогичные команды RPUSH, RRANGE, RPOP только для правой стороны.
Транзакции в Redis
Обычное определение транзакций для реляционных баз данных означает следующее: транзакции это группа команд с базой данных, которые должны либо полностью выполнится или в случае возникновение ошибки вернуть состояние базы данных в исходное состояние. В Redis то же есть такое понятие как транзакции. Но означает немного другое. Транзакции в Redis это просто последовательное выполнение ранее записаных команд без возможности полноценного возвращения исходного состояния в случае ошибки исполнения.
С помощью команды MULTI можно начать запись команд. Далее введенные команды не исполняются а записываются в буфер. Это будет происходит до ввода команды на исполнения транзакции EXEC. Далее все ранее введенные команды будут исполнены один за другим. Команда DISCARD отмена записи команд транзакций. Если возникнет ошибка в процессе ввода команд вся транзакция не будет выполнена.
Механиз подписок PUS-SUB
Одно из основных преимуществ Redis от других key-value хранилищ заключается в том, что в Redis есть механизм подписок. То есть Redis можно использовать как сервер сообщений.
Одни клиенты подписываются на определенные каналы используя команду SUBSCRIBE имя_канала
Другие клиенты могут отправлять сообщения в этот канал используя команду PUBLISH имя_канала значение
Допустим один клиент подписывается на канал
Другой клиент что то отправляет в этот канал
И в этот момент первый клиент получит это сообщение
Основы применение Redis в Python
Redis очень широко применяется в современной разработке ПО. Библиотеки поддержки есть для любого языка программирования.
- Кеширование данных
- Чаты и системы обмена сообщенийДиспетчеризация любых данных
- Различные очереди задач
- Мониторинг различных данных
Кратко рассмотрим использование Redis в Python. Для этого первым делом загрузим библиотеку поддержки:
Далее подключимся к серверу
И далее можно уже начать попробовать использовать все ранее рассмотренные команды. Надеюсь они будут понятны без дополнительных пояснений:
Заключение
Redis — это мощный и быстрый вариант хранения данных, который при правильном использовании может принести много преимуществ. Он не имеет крутой кривой обучения, поэтому с ним легко начать работать. Также поставляется с удобным инструментом CLI, который помогает нам взаимодействовать с ним с помощью простых и интуитивно понятных команд.