Redis

Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

You can run atomic operations on these types, like appending to a string; incrementing the value in a hash; pushing to a list; computing set intersection, union and difference; or getting the member with highest ranking in a sorted set.

In order to achieve its outstanding performance, Redis works with an in-memory dataset. Depending on your use case, you can persist it either by dumping the dataset to disk every once in a while, or by appending each command to a log.

Redis also supports trivial-to-setup master-slave replication, with very fast non-blocking first synchronization, auto-reconnection on net split and so forth.

Other features include a simple check-and-set mechanism, pub/sub and configuration settings to make Redis behave like a cache.

You can use Redis from most programming languages out there.

Redis is written in ANSI C and works in most POSIX systems like Linux, *BSD, OS X and Solaris without external dependencies. There is no official support for Windows builds, although you may have some options.

Что такое Redis?

Redis — это высокопроизводительное нереляционное распределённое хранилище данных.

Redis представляет собой словарь, в котором каждый ключ связан со своим значением. Для примера можно установить ключ surname_1992 со значением Smith. От многих других хранилищ типа "ключ-значение" Redis отличается тем, что каждое значение имеет свой тип. Поддерживаются следующие типы:

Для каждого типа определены свои наборы операций (команд), которые могут быть применены к значениям этого типа.

Множества (неупорядоченные наборы строк) так же являются очень гибким типом данных. Можно добавлять и удалять элементы, после чего требовать у сервера вычислить пересечение, объединение или разницу нескольких множеств.

Каждая команда выполняется на стороне сервера в качестве атомарной операции. Полный список команд применимых к конкретным типам данных приведён в соответствующем разделе.

Другими словами, вы можете рассматривать Redis, как сервер структурированных данных (data structures server). Пользователю предоставляется интерфейс для доступа к абстрактным типам данных, снимая с него заботу за реализацию конкретных структур и алгоритмов. И алгоритмы и структуры в Redis подобраны таким образом, чтобы обеспечить лучшую производительность.

Все данные во время работы целиком загружаются в память, но в тоже время они сохраняются на диске. После перезапуска сервера они снова загружаются в память.

Есть два вида поддержки сохранности данных. Первый называется snapshotting. В этом режиме данные записываются на диск асинхронно через некоторые промежутки времени. При запуске сервера данные загружаются из дампа. Redis может быть настроен для сохранения данных, как через некоторое количество секунд, так и после определённого числа внесённых изменений. Например, после 1000 запросов и более 60 секунд с момента последней записи.

Из-за того, что данные записываются асинхронно, при сбое в системе последние несколько запросов могут быть утеряны. Это допустимо во многих случаях, но всё же не во всех.

Во избежание подобного, Redis поддерживает другой, безопасный режим, называемый Append Only File (AOF). При нём каждая команда, изменяющая данные, дописывается в файл ASAP. Эти команды заново выполняются при перезапуске сервера и восстанавливают, таким образом, утраченные данные. AOF поддерживает очень удобную функцию: сервер может восстановить append-only файл в фоновом неблокирующем режиме.

API доступно для следующих языков:

Тесты производительности можно увидеть тут - http://code.google.com/p/redis/wiki/Benchmarks

Лицензия (License)

BSD License

Установка

Redis официально устанавливается только на *nix, но есть не официальные сборки для Windows. Скачать такую можно здесь - http://code.google.com/p/redisdb-win32/

Список версий можно посмотреть здесь - http://code.google.com/p/redis/downloads/list

Установка на *nix проходит посредством сборки под систему.

Для начала скачиваем архив
wget http://redis.googlecode.com/files/redis-2.2.0-rc4.tar.gz

Распаковываем и запускаем сборку
tar xvzf redis-2.2.0-rc4.tar.gz
cd redis-2.2.0-rc4
make

Не забываем про - make test

Теперь можно запустить Redis
./redis-server

Он запуститься без конфигурационного файла. По умолчнию Redis выводит свои логи в стандартный поток вывода, так что вы можете удостовериться, что всё работает правильно. В дальнейшем это можно изменить.


© AiKernel 2005-2015
17.05.2011 - 06.02.2015