Найти

Вы здесь:

Redis — это база данных, размещаемая в памяти, которая используется, в основном, в роли кеша, находящегося перед другой, "настоящей" базой данных, вроде MySQL или PostgreSQL. Может использоваться в реализациях механизма издатель/подписчик, в задачах потоковой обработки данных, в системах, где нужно работать с очередями. Вот какие типы данных поддерживает Redis:

  • Строка (String)
  • Битовый массив (Bitmap)
  • Битовое поле (Bitfield)
  • Хеш-таблица (Hash)
  • Список (List)
  • Множество (Set)
  • Упорядоченное множество (Sorted set)
  • Геопространственные данные (Geospatial)
  • Структура HyperLogLog (HyperLogLog)
  • Поток (Stream)

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

Установка Redis в Linux

root@v:/etc# apt install redis
....
Created symlink /etc/systemd/system/redis.service → /usr/lib/systemd/system/redis-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis-server.service → /usr/lib/systemd/system/redis-server.service.

root@v:/etc# systemctl status redis
● redis-server.service - Advanced key-value store
Loaded: loaded (/usr/lib/systemd/system/redis-server.service; enabled; pre>
Active: active (running) since Sun 2024-12-22 18:03:25 +05; 2min 2s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Main PID: 1307637 (redis-server)
Status: "Ready to accept connections"
Tasks: 5 (limit: 13882)
Memory: 4.1M (peak: 5.0M)
CPU: 226ms
CGroup: /system.slice/redis-server.service
└─1307637 "/usr/bin/redis-server 127.0.0.1:6379"

port 6379
Нагрузочный тест:

$ redis-benchmark -h localhost -p 6379 -n 100000 -c 50 -d 100

...
Summary:
  throughput summary: 62111.80 requests per second
  latency summary (msec):
          avg       min       p50       p95       p99       max
        0.427     0.112     0.423     0.503     0.559     0.895

Эта команда симулирует 50 клиентов (параметр -c 50), выполняющих 100 000 запросов (-n 100 000). Результаты отображают время ответа в миллисекундах.

Установка клиента

sudo apt install redis-tools


Конфигурация /etc/redis/redis.conf:

bind 0.0.0.0 ::1
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300

daemonize yes
supervised systemd
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis-server.log
databases 16

maxmemory 16gb

maxmemory-policy volatile-lru
maxmemory-samples 5
activerehashing yes
active-defrag-ignore-bytes 100mb
active-defrag-threshold-lower 10
active-defrag-threshold-upper 100
active-defrag-cycle-min 5
active-defrag-cycle-max 75

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/

appendonly yes
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
aof-use-rdb-preamble yes

replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-backlog-size 256mb
repl-backlog-ttl 3600
repl-timeout 60

requirepass pass
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG ""

maxclients 10000
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 512mb 128mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10
dynamic-hz yes
latency-monitor-threshold 100


Проверка подключения:

redis-cli -h v


(v - IP-адрес сервера)

Ссылки: