Namestitev Redis in Valkey v AlmaLinux

Linux Branje: 6 min

Redis je podatkovna baza ključ-vrednost, shranjena v pomnilniku. Pri spletnih straneh ga najpogosteje uporabljajo kot predpomnilnik: vanj pridejo objektni predpomnilnik WordPress, seje ali začasni podatki spletne trgovine, zato se aplikaciji ni treba pri vsaki zahtevi obračati na podatkovno bazo.

Valkey je odprtokodna različica (z licenco BSD), ki je nastala po spremembi licence Redis leta 2024 in jo vzdržuje Linux Foundation. Odcepila se je od Redis 7.2 in uporablja enak protokol in ukaze, zato programi in razširitve PHP, napisani za Redis, z njo delujejo brez sprememb. Red Hat zato v AlmaLinux 10 dobavlja le še Valkey.

Korake smo oktobra 2026 preizkusili v sistemih AlmaLinux 10.2 in 9.8. Ukaze zaganjaj kot uporabnik root ali s sudo.

Kateri od kod?

Sistem V sistemskem repozitoriju V repozitoriju Remi
AlmaLinux 10 Valkey 8.0 (Redis ni) Redis 7.2 … 8.10, Valkey 8.1 … 9.2
AlmaLinux 9 Redis 6.2 (osnovni), Redis 7.2 (modul redis:7), Valkey 8.0 Redis 6.0 … 8.10, Valkey 8.1 … 9.2

Če nimaš posebnih zahtev, uporabi različico iz sistemskega repozitorija: Valkey v AlmaLinux 10 ali Redis 7.2 oziroma Valkey v AlmaLinux 9. Te popravljajo posodobitve AlmaLinux. Če aplikacija izrecno zahteva Redis 8 (na primer zaradi Redis Query Engine ali modula JSON), ga namesti iz repozitorija Remi.

A) Valkey iz sistemskega repozitorija

sudo dnf install valkey
sudo systemctl enable --now valkey
valkey-cli ping

Odgovor je PONG. V preizkusu se je v AlmaLinux 10 namestil valkey-8.0.11. Valkey sporoča tudi številko različice, združljivo z Redis:

valkey-cli INFO server | grep -E 'redis_version|valkey_version'
redis_version:7.2.4
valkey_version:8.0.11

Imena programov se začnejo z valkey- (valkey-server, valkey-cli, valkey-benchmark), ime storitve je valkey, konfiguracijska datoteka /etc/valkey/valkey.conf, podatkovni imenik /var/lib/valkey, dnevnik pa /var/log/valkey/valkey.log. Konfiguracijsko datoteko lahko bere le root, zato je za urejanje in ogled potreben sudo. Imeni ukazov redis-cli in redis-server v AlmaLinux 10 ne obstajata in v času preizkusa zanju ni bilo niti paketa za združljivost; v skriptih ju prepiši v valkey-cli.

V AlmaLinux 9 je Redis 7.2 mogoče namestiti iz modula (v preizkusu se je namestil redis-7.2.16):

sudo dnf module enable redis:7
sudo dnf install redis
sudo systemctl enable --now redis

Brez izbire modula bi dnf install redis v AlmaLinux 9 namestil stari Redis 6.2.

B) Redis 8 iz repozitorija Remi

Po nastavitvi repozitorija Remi (glej: Namestitev repozitorija Remi v AlmaLinux) izberi različico, na primer Redis 8.4:

sudo dnf module enable redis:remi-8.4
sudo dnf install redis
sudo systemctl enable --now redis
redis-cli ping

V preizkusu se je namestil redis-8.4.8, poleg njega pa kot priporočene odvisnosti še moduli redis-bloom, redis-json in redis-timeseries. Konfiguracijska datoteka je /etc/redis/redis.conf, podatkovni imenik /var/lib/redis, dnevnik pa /var/log/redis/redis.log.

Če je na računalniku nameščen tudi Valkey, ga najprej ustavi in odstrani (sudo systemctl disable --now valkey, sudo dnf remove valkey), ker oba uporabljata vrata 6379.

Redis 8 izhaja pod tremi licencami, med njimi pod AGPLv3. Na lastnem strežniku, kot predpomnilnik lastne aplikacije, to ne pomeni nobene obveznosti; če bi Redis ponujal drugim kot storitev, preberi licenčne pogoje.

Osnovne nastavitve

Naslednje velja za Valkey in Redis; datoteka je /etc/valkey/valkey.conf oziroma /etc/redis/redis.conf. V preizkusu sta se oba paketa namestila s temi osnovnimi vrednostmi:

bind 127.0.0.1 -::1
protected-mode yes
port 6379

Strežnik torej sprejema povezave le znotraj računalnika. Če Redis uporablja le tvoja spletna stran na istem strežniku, tega ne spreminjaj: vrat 6379 nikoli ne odpri proti internetu. Če bi ga uporabljal tudi drug strežnik, to naredi prek zasebnega omrežja ali tunela SSH in vsekakor nastavi geslo.

Poleg tega posluša tudi na vtičnici Unix: /run/valkey/valkey.sock oziroma /run/redis/redis.sock.

Geslo

V konfiguracijski datoteki poišči vrstico # requirepass foobared in jo prepiši:

requirepass Hosszu-Egyedi-Jelszo

Po ponovnem zagonu vsak ukaz brez gesla vrne napako:

NOAUTH Authentication required.

redis-cli (pri Valkey valkey-cli) geslo zahteva skrito s stikalom --askpass ali ga vzame iz okoljske spremenljivke REDISCLI_AUTH. Deluje tudi stikalo -a jelszo, vendar tako geslo pride v zgodovino ukazov in na seznam procesov.

Omejitev pomnilnika

Pri predpomnilniku določi zgornjo mejo in povej, kaj naj Redis zavrže, ko je poln:

maxmemory 256mb
maxmemory-policy allkeys-lru

allkeys-lru briše najdlje neuporabljene ključe, kar je primerno za predpomnilnik. Druge možnosti: allkeys-lfu (briše najredkeje uporabljene), volatile-lru (briše le med ključi z rokom veljavnosti). Pri privzeti nastavitvi noeviction Redis ob polnem pomnilniku na pisanja vrne napako. Če v Redisu hraniš podatke, ki se ne smejo izgubiti (na primer naloge v čakalni vrsti), ne uporabljaj pravila allkeys-. Omejitev prilagodi celotnemu pomnilniku strežnika: dovolj naj ostane tudi za PHP in podatkovno bazo (glej: Zmanjkalo je pomnilnika: OOM killer in datoteka swap).

Po spremembi:

sudo systemctl restart valkey    # ali: redis

Opozorilo overcommit

Ob prvem zagonu se je v dnevniku pojavilo to opozorilo:

WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition.

Varnostno kopiranje v ozadju (zapis vsebine pomnilnika na disk) je povezano s to nastavitvijo jedra. Trajno jo vklopi:

echo 'vm.overcommit_memory = 1' | sudo tee /etc/sysctl.d/90-redis.conf
sudo sysctl -p /etc/sysctl.d/90-redis.conf

Po ponovnem zagonu je opozorilo izginilo.

Preizkus iz ukazne vrstice

Seja redis-cli v sistemu AlmaLinux 10: vnos gesla s stikalom --askpass, nato PING, SET, GET, ključ z rokom veljavnosti, INCR, CONFIG GET maxmemory-policy in DBSIZE

SET udvozles "Szia, Redis!"
GET udvozles
SET munkamenet:42 aktiv EX 3600
TTL munkamenet:42
INCR latogatok
CONFIG GET maxmemory-policy
DBSIZE

EX 3600 ustvari ključ, ki poteče po eni uri, TTL pa pokaže preostale sekunde. Redis je predvsem predpomnilnik: njegovi podatki so v pomnilniku in le občasno pridejo na disk, zato pomembnih podatkov ne hrani samo tu.

Uporaba iz PHP

Razširitev Redis za PHP deluje z Valkey in z Redisom:

sudo dnf install php-pecl-redis6
sudo systemctl restart php-fpm

V AlmaLinux 10 za sistemski PHP 8.3 pride iz repozitorija AppStream, za PHP iz Remi pa iz repozitorija Remi. Preizkus:

php -r '$r = new Redis(); $r->connect("127.0.0.1", 6379); $r->auth("Hosszu-Egyedi-Jelszo"); $r->set("teszt", "mukodik"); echo $r->get("teszt"), PHP_EOL;'

V preizkusu je bil odgovor mukodik. Pri WordPressu Redis poveže vtičnik za objektni predpomnilnik; za nastavitev potrebuješ gostitelja 127.0.0.1, vrata 6379 in zgornje geslo. Koliko predpomnilnik pomaga podatkovni bazi, piše v našem blogovskem zapisu o optimizaciji podatkovne baze.

Menjava različice, odstranitev

Med moduli Remi lahko preklapljaš enako kot pri PHP (sudo dnf module switch-to redis:remi-8.6). Nazaj, na starejšo glavno različico, s produkcijskimi podatki ne preklapljaj: starejši Redis ne zna vedno prebrati datoteke varnostne kopije, ki jo je zapisal novejši (/var/lib/redis/dump.rdb), in se ob zagonu ustavi z napako. Takrat se vrni na novejšo različico ali, če je šlo le za predpomnilnik, datoteko shrani in izbriši.

Odstranitev (pri Valkey valkey):

sudo systemctl disable --now redis
sudo dnf remove redis redis-bloom redis-json redis-timeseries
sudo dnf module reset redis

Nastavitve (/etc/redis/) in podatki (/var/lib/redis/) lahko tudi nato ostanejo na računalniku; če jih ne potrebuješ, jih po varnostnem kopiranju izbriši. Če si nastavitev vm.overcommit_memory dodal le zaradi Redisa, lahko izbrišeš tudi datoteko /etc/sysctl.d/90-redis.conf.

Koliko pomnilnika potrebuješ?

Poraba pomnilnika Redis je odvisna od shranjenih podatkov. Trenutno porabo pokaže redis-cli INFO memory (vrstica used_memory_human); po nekaj dneh delovanja ji prilagodi vrednost maxmemory. Če strežniku ob spletnem strežniku, podatkovni bazi in Redisu zmanjka pomnilnika, lahko preideš na večji paket KVM VPS ali Redis postaviš na ločen računalnik.

Nazaj: Linux – članki (76)