Redis huweka data kwenye kumbukumbu na hujibu ndani ya takriban milisekunde moja, ndiyo maana iko nyuma ya programu nyingi kama cache, foleni au hifadhi ya vipindi. Kusakinisha ni amri moja. Kazi halisi iko kwenye mipangilio ya chaguo-msingi: hakuna kikomo cha kumbukumbu, picha za hali zinaweza kupoteza maandishi ya karibuni, na kuna makosa mawili rahisi yanayofuta data yako kimyakimya au kuzima nenosiri lako. Mwongozo huu unashughulikia yote kwenye Ubuntu 24.04. Tuliendesha kila hatua kwenye picha yetu; takwimu zimetoka kwenye seva ya Micro (2 vCPU, 2 GB).
Unahitaji mtumiaji mwenye sudo. Mwongozo wa kusanidi Ubuntu humtengeneza.
1. Sakinisha
sudo apt update
sudo apt install -y redis-server
redis-server --version
redis-cli ping
Usakinishaji ulichukua sekunde 13 na ukatupa Redis 7.0.15. Huanza mara moja na kila inapowashwa, hujibu PONG na husikiliza kwenye seva yenyewe tu: 127.0.0.1:6379 na [::1]:6379, ikiwa na protected-mode yes. Bila data ilitumia MB 13.5 za RAM.
Kumbukumbu ya matukio tayari ilikuwa na onyo:
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition.
Redis huhifadhi kwenye diski kutoka nakala yake inayotengenezwa kwa fork, na kwa mpangilio wa chaguo-msingi wa kernel fork hiyo inaweza kushindwa kumbukumbu ikiwa finyu. Rekebisha mara moja:
echo 'vm.overcommit_memory = 1' | sudo tee /etc/sysctl.d/90-redis.conf
sudo sysctl -p /etc/sysctl.d/90-redis.conf
sudo systemctl restart redis-server
Baada ya kuwasha upya, onyo liliondoka.
2. Weka kikomo cha kumbukumbu
Tangu mwanzo maxmemory ni 0, yaani hakuna kikomo, na sera ni noeviction. Redis itaendelea kuchukua RAM hadi seva iishiwe. Weka dari na uamue kitakachotokea ikifikiwa:
redis-cli CONFIG SET maxmemory 256mb
redis-cli CONFIG SET maxmemory-policy allkeys-lru
redis-cli CONFIG REWRITE
Tulijaribu sera zote mbili kwa kikomo cha MB 64 na maandishi 400,000:
noeviction(chaguo-msingi): kumbukumbu ilisimama MB 63 na maandishi mapya yalishindwa kwaOOM command not allowed when used memory > 'maxmemory'. Inafaa kwa foleni au chochote usichoweza kukipoteza.allkeys-lru: Redis ilitupa funguo zilizokaa muda mrefu bila kutumika, 48,606 kwa jumla, na kila andiko lilipita. Inafaa kwa cache.
CONFIG REWRITE huhifadhi mipangilio inayotumika kwenye /etc/redis/redis.conf, ili ibaki baada ya kuwasha upya. Pia huongeza mstari unaohitaji kuujua kabla ya hatua ya 4.
3. Chagua jinsi ya kuhifadhi kwenye diski
Kwa chaguo-msingi Redis huandika picha ya hali (/var/lib/redis/dump.rdb) baada ya badiliko 1 ndani ya saa moja, 100 ndani ya dakika tano au 10,000 ndani ya dakika moja. Tulijaribu njia tatu za kuisimamisha:
| Jinsi Redis ilivyosimama | Picha za hali tu (chaguo-msingi) | Na faili ya AOF |
|---|---|---|
systemctl restart | Hakuna kilichopotea: huhifadhi inapozimwa | Hakuna kilichopotea |
Imeuawa kwa kill -9 | Ufunguo wa baada ya picha ya mwisho ulipotea | Ufunguo ulioandikwa sekunde 2 kabla ulikuwepo |
Katika hali zote mbili, systemd iliwasha Redis tena yenyewe ndani ya sekunde chache.
Ikiwa Redis ina data ambayo ungeikosa, washa faili ya AOF (append-only file). Hurekodi kila andiko na kuliweka kwenye diski mara moja kila sekunde. Fanya hivyo kwenye seva inayoendelea kufanya kazi, si kwa kuhariri faili:
redis-cli CONFIG SET appendonly yes
redis-cli CONFIG REWRITE
redis-cli INFO persistence | grep aof_
Tulijaribu njia nyingine kwanza, na ikatugharimu data yetu. Tulibadilisha appendonly no kuwa appendonly yes kwenye redis.conf na kuwasha upya. Redis iliwaka na AOF tupu na haikupakia chochote kutoka kwenye picha ya hali, kwa hiyo funguo zote zilizokuwepo zilipotea. Ilipozimwa baadaye, iliandika pia maudhui yake mapya, bila funguo za zamani, juu ya dump.rdb. CONFIG SET huepusha hili: Redis huandika AOF kwanza kutoka data iliyo kwenye kumbukumbu. Baada ya kuwasha upya, funguo zetu zote zilikuwepo.
Ikiwa Redis ni cache tupu inayoweza kuanza bila kitu, fanya kinyume na uzime uhifadhi kwa redis-cli CONFIG SET save "".
4. Weka nenosiri
Huu ndio mtego wa pili. Baada ya CONFIG REWRITE yoyote, Redis 7 huongeza mstari huu mwishoni mwa redis.conf:
user default on nopass ~* &* +@all
Maana yake ni "mtumiaji wa chaguo-msingi hahitaji nenosiri". Kisha tuliongeza requirepass juu zaidi kwenye faili na kuwasha upya. Redis iliendelea kujibu PONG bila nenosiri, kwa sababu mstari wa user unaishinda. Badala yake weka nenosiri kupitia Redis yenyewe:
REDIS_PASS=$(openssl rand -hex 24)
echo "$REDIS_PASS"
redis-cli CONFIG SET requirepass "$REDIS_PASS"
REDISCLI_AUTH="$REDIS_PASS" redis-cli CONFIG REWRITE
Hifadhi nenosiri mahali salama. Sasa Redis inalihifadhi kama hash ya SHA-256 kwenye mstari uleule wa user default. Baada ya kuwasha upya, redis-cli ping ilijibu NOAUTH Authentication required. na nenosiri pekee ndilo lililofanya kazi. Mpe redis-cli kupitia kigeu REDISCLI_AUTH. Ukitumia -a linaonekana kwenye orodha ya michakato, na redis-cli hukuonya. Kwenye programu yako liweke kwenye anwani ya Redis: redis://:PASSWORD@127.0.0.1:6379/0.
5. Kuifikia kutoka kompyuta yako
Acha Redis kwenye 127.0.0.1 na utumie handaki la SSH. Tumia mlango wa SSH wa seva yako; kwenye vifurushi vya NAT huo ndio mlango wako binafsi:
ssh -N -L 6380:127.0.0.1:6379 deploy@YOUR_SERVER_IP -p 22
Wakati linaendelea, redis-cli -p 6380 na zana za kompyuta yako huzungumza na Redis iliyo kwenye seva. Hakuna kipya kinachofunguliwa kwa intaneti. Kwa mwongozo wa funguo za SSH, handaki huingia bila nenosiri.
Ina kasi gani
Kwenye seva ya majaribio ya Micro, redis-benchmark na wateja 50 ilitoa:
| Jaribio | Maombi kwa sekunde | Ucheleweshaji wa kati |
|---|---|---|
| SET | 30,303 | 1.0 ms |
| GET | 35,149 | 0.9 ms |
| SET, amri 16 kwa kila safari ya kwenda na kurudi | 272,109 | 2.4 ms |
| GET, amri 16 kwa kila safari ya kwenda na kurudi | 414,938 | 1.3 ms |
Kwa cache au foleni ya kazi ya programu ya wavuti, hii ni zaidi sana ya unachohitaji. Kasi ya ziada inatokana na kutuma amri kwa makundi (pipelining).
Kifurushi gani
Redis inahitaji RAM kwa data yako na kidogo sana kingine. Nano (2 vCPU, 1 GB, $3/mwezi) huendesha Redis kando ya programu ndogo kwa maxmemory 256mb. Micro (2 GB, $5/mwezi) huacha nafasi kwa cache kubwa zaidi pamoja na programu. Ikiwa kitu kingine lazima kiunganishe moja kwa moja na Redis, chukua IPv4 yako mwenyewe (kuanzia Nano-IP kwa $8/mwezi) na uruhusu anwani hiyo pekee kwenye firewall. Vifurushi vyote viko kwenye ukurasa wa VPS, na malipo ni kwa USDT, USDC au ETH kwenye mitandao ya Base, Ethereum au Polygon.
Maoni
Bado hakuna maoni. Kuwa wa kwanza.