Logo GH

Tehnologiýalar we infrastruktura → Redis: in-memory-solutions

Redis: in-memory-solutions

1) Redis ýerlikli

Redis - baý maglumat gurluşlary bolan ýokary tizlikli in-memory ammar açar gymmaty. Adaty ssenariler:
  • Keş (read-through/aside, TTL, SWR) we sessiýalar.
  • Hasaplaýjylar we kwotalar: rate limiting, antifrod, kampaniýalaryň çäkleri.
  • Liderbordlar/reýtingler (ZSet), "top-N" teklipleri.
  • Wakalaryň nobatlary/tekerleri (Streams/PubSub), outbox/inbox, retra.
  • Idempotentlik (TTL açarlary), de-dup webhook.
  • Geo (iň ýakyn nokatlary gözlemek), Bitmap (baýdaklar, DAU).
  • Ygtyýarnamanyň lakamlary/bellikleri we gysga ömürli keşleri.
💡 Möhüm: pul balanslary we möhüm üýtgemeler üçin Redis diňe okamagyň tizlendirijisi ýa-da DBB/ledger-de "hakykat çeşmesi" bolan magazineurnal/keş hökmünde ulanylýar.

2) Maglumatlaryň gurluşlary we olary haçan ulanmak

String: bahalar/hasaplaýjylar ('INCRBY'), idempotent açarlary.
Hash: profil/konfigurasiýa agregatlary, "ýeňil" obýektleri saklamak.
List: ýönekeý nobatlar (ýöne replay/offset semantikasyz).
Set: üýtgeşik elementler, duplikasiýa.
ZSet: tizlik boýunça sortlamak (liderbordlar, TTL-senenama - "gijikdirilen" wakalar).
Akym: sarp ediş toparlary bilen durnukly nobatlar, 'XREADGROUP '/replay - webhuklar, CDC, retraýlar üçin.
Geo: 'GEOADD/GEORADIUS' - iň ýakyn nokatlar/satyjylar.
Bitmap/Bitfield: baýdaklaryň seriýasy (gün boýunça loginler, DAU/WAU).
HyperLogLog: takmynan üýtgeşik (UU) ýat taýdan arzan.
Bloom/Cuckoo (modullar): barlygyny çalt barlamak, çeşmä "MISS" -ni peseldýär.

Modullar:
  • RedisJSON (JSON resminamalary), RediSearch (indeksleme/gözleg), RedisBloom (ähtimal gurluşlar), TimeSeries (metrikler/agregasiýalar).

3) Açarlar, TTL we ýat syýasaty

Neýming we segmentasiýa:

tenant:{t}:domain:{d}:{entity}:{id}:v{schema}    region={R}    currency={C}    lang={L}

Wersiýa ('vN'), diňe möhüm ölçegleri goşuň (sebit/walýuta/dil/tenant).
Per-tenant açarlarynyň ýerlerini aýyryň.

TTL we "täzelik":
  • TTL-matrisa (sek/min/sagat) ulanyp, stampededen gaça durmak üçin jitter (10-20% ±) goşuň.
  • Gyzgyn açarlar üçin - refresh-ahead we single-flight (bir lider täzelenýär).
Çalyşmak syýasaty (maxmemory-policy):
  • 'allkeys-lru/lfu' - TTL-garaşlylygy bolmadyk umumy keş.
  • 'volatile-lru/lfu' - diňe TTL-li açarlar.
  • 'noeviction' - aşa köp bolanda ýazgynyň şowsuzlygy (möhüm nobatlar/hasaplaýjylar üçin has ygtybarly).
  • Ssenarini saýla we hemişe gözegçilik et 'evicted _ keys'.

4) Geleşikler, paýlaýnlar we skriptler

Paýlaýynlar: RTT-ni peseldiň, 10-100 topara bölüň.
Amallar (MULTI/EXEC): okalmagy izolirlemeýär, ýöne bukjany atom bilen ýerine ýetirýär.
Optimistic locking: 'WATCH key' → barlag → 'MULTI/EXEC'.
Lua-skriptleri: serweriň tarapynda atom logikasy (rate limit, locks, composite-amallar).

💡 Bir düwünli Redis Lua skriptleri üçin gowy; Klusterde - ähli açarlaryň bir hash-slota girýändigine göz ýetiriň.

5) Nobatlar we tekerler: List vs Stream

List + 'BRPOP' - ýönekeý, ýöne ýok consumer groups, offset/replay, gowşak güýz garşylygy.
Stream: 'HADD → XREADGROUP → XACK', retry-deadletter (N minutda kabul edilmedi), açar boýunça partizasiýa. PSP/KYC webhuklary, gijikdirilen tölegler/habarnamalar üçin maslahat berilýär.

Ileri tutulýan nobatlar: ileri tutulýan ugurlar boýunça birnäçe akym, sarp edijiler ýokary derejeden ilkinji nobatda "sorýarlar".
Yza süýşürilen meseleler: ZSet nirede score = timestamp; wagtal-wagtal 'ZRANGEBYSCORE' ≤ now → Stream-a geçirmek.

6) Ýokary elýeterlilik we masştab

Replikasiýa: master → replica (read-scale).
Sentinel: awtomatiki failover master 'a, tapmak, müşderi URI-leri.
Redis Cluster: 16384 slot üçin şardlamak, gorizontal skale-out. Birnäçe gurluşy ulanýan açarlary '{order: 123}' hashtaglaryna saraň.

Pattern:
  • Keş/sessiýalar üçin - klaster/göçürmeler, 'client-side hashing' SDK tarapyndan goldanýar.
  • Nobatlar/akymlar üçin - çapraz-slot amallaryny azaldyň; domen açarlary boýunça partiýa.

7) Dowamlylygy: RDB, AOF we ekaplar

RDB (suratlar): has çalt, has tygşytly; soňky sekuntlary/minutlary ýitirmek töwekgelçiligi.
AOF (magazineurnal): az ýitgi; 'everysec/always'. AOF gysmak we wagtal-wagtal gaýtadan gaplamak.
Gibrid: RDB + AOF → çalt dikeldiş + ortaça ýitgiler.
Bellikler: obýekt ammaryna AOF-yň snapshotlary we nusgalary; Dikeldişiňizi yzygiderli barlaň.

Möhüm nobatlar/idempotentlik üçin AOF 'everysec' -ni saýlaň.

8) Howpsuzlyk we gabat gelmek

AUTH/ACL: per-programma rollary, "howply" buýruklara gadaganlyk ('FLUSHALL', 'KEYS').
TLS müşderi-serwerine we düwünlerara linklere; kesgitlenen egress-IP.
Tor segmentasiýasy: hususy kiçi ulgamlar, SG/NACL; diňe zerur hyzmatlardan/nomespeislerden elýeterlilik.
Syrlary ýazmaň; Redisde PAN/PII - diňe tokenler/derivatiwler.
Açar buýruklary: 'KEYS' -den gaça duruň - 'SCAN' -y ulanyň.

9) Synlamak we SLO

Esasy metrikler:
  • Latency (P95/P99), `instantaneous_ops_per_sec`, `connected_clients`.
  • Hit ratio, evicted_keys, expired_keys.
  • Memory: used, fragmentation ratio, RSS, allocator stats.
  • Replication lag, AOF/RDB ýygylyklary we ölçegleri, fork time.
  • Streams: PEL (pending entries list), delivery latency, retry count.
SLO mysallary:
  • Redis P99 ≤ 5-10 ms.
  • Evictions ≤ 1 %/sagat (kesh giňişligi).
  • Stream delivery P99 ≤ 500 мс, retry rate < 2%.

10) FinOps we çeşmeleri meýilleşdirmek

Ýat gymmat: RAM-yň $/GB-aýyny ölçäň vs origin/DB-e bolan islegleri tygşytlamak.

💡 1-2 KB gymmatlyklaryň gysylmagyny açyň (CPU serediň).

LFU az mukdarda iň gowy hit berip biler.
Suratlar/uly bloklar üçin - Redis däl: CDN + obýekt ammaryny ulanyň.

11) iGaming/fintech üçin patternler

11. 1 Rate limiting (süýşýän penjire, Lua)

Ideýa: "INCRBY" penjiräniň açarynda + TTL; Lua çäkleri ýadro taýdan barlaýar we ýokarlandyrýar.

lua
-- KEYS[1]=key ARGV[1]=limit ARGV[2]=ttlSec ARGV[3]=inc local cur = redis. call('INCRBY', KEYS[1], ARGV[3])
if cur == tonumber(ARGV[3]) then redis. call('EXPIRE', KEYS[1], ARGV[2]) end if cur > tonumber(ARGV[1]) then return {0, cur} else return {1, cur} end

11. 2 Haýyşlaryň gidempotentligi

'idemp: {request _ id}' c TTL 24h, bahasy - netije/status. Amal etmezden ozal barlaýarys.

11. 3 Liderbordlar

`ZINCRBY leaderboard:game:{g} score user:{u}` → `ZREVRANGE... WITHSCORES`.
Sebit/tenant boýunça top-N üçin - aýratyn ZSet ýa-da prefiksler.

11. 4 PSP webhuk nobaty

'HADD psp: webhooks...' → sarp ediş toparlary 'XGROUP CREATE psp: webhooks g1 $'.
PEL-skaner arkaly "asylan" habarlaryň retraýalary ('XPENDING' → 'XCLAIM').

11. 5 Yza süýşürilen tölegler

ZSet 'payout: due' (score = epoch) → worker taýýar elementleri wagtal-wagtal Stream 'payout: exec' -e göçürýär.

11. 6 Antifrod hasaplaýjylary

Kombinasiýa 'PFADD' (özboluşly) + 'INCR' (intensiwlik) + geo/ASN-bellikler; el bilen barlamak üçin triggerler.

12) Ýat we öndürijilik bilen işlemek

Müşderileriň baglanyşyk howuzlary; RTT azaltmak (keep-alive).
Bir topar buýruk üçin paýlaýnlary saýlaň.
Big keys ('MEMORY USAGE', 'SCAN') - obýektleri bölmek has gowudyr.
Az meýdanly Hash köp sanly açardan has tygşytly.
Eger girdeji synaglar arkaly tassyklansa, io-threads (read-heavy) -ni açyň.
Prod 'FLUSHDB/ALL' -den gaça duruň; howpsuz aýyrmak üçin prefiksler we 'UNLINK' arkaly dolandyryň.

13) Multi-tenant we izolýasiýa

Aýry-aýry klasterler/edaralar ýa-da logical DB per-tenant (eger ýük az bolsa).
Açarlar/ýat üçin kwotalar, aýratyn ACL.
Açardaky prefiksler we namespace boýunça metrikler.

14) Loking we sazlaşyk

SET key val NX PX = ttl - ýönekeý mutex.
Redlock: seresaplylyk bilen ulanyň; paýlanan möhüm amallar üçin "hakykat çeşmesine" (DB/ledger) we idempotent amallaryna bil baglamak has gowudyr.
"Uzyn" gulplamalaryň ýerine atom operasiýalaryny we Lua-ny makul biliň.

15) Anti-patternler

Uly bloblary/şekilleri saklamak - RAM we torlary aşa ýüklemek.
Maliýe üýtgemeleri (balans) diňe Redisde.
'KEYS' we 'dünýäni skanirlemek'.
TTL/jitteriň ýoklugy - gutaranda dogpile.
Kritiki nobatlarda 'allkeys-' syýasaty → basyşda maglumatlaryň ýitmegi.
Bir edarada nobatlaryň, keşleriň we sessiýalaryň kwotalar we ileri tutulýan ugurlar bolmazdan garyşdyrylmagy.
Cluster-de dürli slotlaryň açarlary boýunça işleýän Lua skriptleri.

16) Girizmegiň çek-sanawy

1. Rollary kesgitläň: keş/sessiýalar, nobatlar/akymlar, hasaplaýjylar/çäkler - häkimiýetlere/toparlara paýlaň.
2. Maksmemory-policy saýlaň; çäkleri we evictions gözegçiligini belläň.
3. Düwmeleriň neýmingi, shemalaryň wersiýalary, TTL-matrisa + jitter; iň ýokary açarlar üçin ýekeje uçuş.
4. Nobatlar üçin - Akymlar (toparlar, retralar, DLQ), yza süýşürilenler üçin - ZSet + transfer.
5. HA: Sentinel ýa-da Redis Kluster göçürmesi; müşderini barlaň.
6. Dowamlylygy: RDB/AOF ssenarisine laýyklykda; yzygiderli ekaplar we dikeldiş synagy.
7. Howpsuzlyk: ACL, TLS, hususy torlar, howply buýruklara gadaganlyk.
8. Syn edilişi: latency, ops/sec, memory, evictions, replication lag, stream PEL.
9. FinOps: ýat profilleri, uly açarlar, gysyş, LFU; uly bloblar üçin Redisden gaça duruň.
10. Patternleriň resminamalary (rate-limit, idempotentlik, liderbordlar) we ýükleriň synaglary.

Jemi

Redis tizligiň "köpugurly Şweýsariýa pyçagy": kesmek, nobatlar, hasaplaýjylar, liderbordlar, geo we ähtimal gurluşlar. Onuň güýji maglumatlaryň gurluşlaryny dogry saýlamakda, TTL/maýyplyk düzgüninde, amallaryň atomarlygynda, şeýle hem oýlanyşykly NA/dowamlylygy we syn edilişinde. Redis-i millisekundlar we ýokary RPS möhüm bolan ýerlerde ulanyň, şol bir wagtyň özünde möhüm üýtgemeleri (pul, hasap) "hakykat çeşmesine" goýuň - platforma çalt we ygtybarly bolar.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.