Workstation Logo
ਉਤਪਾਦ
AI ਲੈਬਜ਼OpenAI ਏਜੰਟClaude ਏਜੰਟGrok BotWorkstation CRM (WSL CRM)ਮਾਰਕੀਟਿੰਗਸਾਰੇ ਉਤਪਾਦ
AI ਹੱਲ
AI ਵਰਕਸਟੇਸ਼ਨAI SME Packagesਪ੍ਰਾਈਵੇਟ AIGPU ਕਲੱਸਟਰਐਜ AIਐਂਟਰਪ੍ਰਾਈਜ਼ AI ਲੈਬਉਦਯੋਗ ਅਨੁਸਾਰ AI
ਸੇਵਾਵਾਂ
Platform ModernisationDigital EngineeringData Foundations & AIAutonomous OperationsAI ਸਲਾਹDevOps ਆਟੋਮੇਸ਼ਨਸਾਈਬਰ ਸੁਰੱਖਿਆਸਾਫਟਵੇਅਰ ਵਿਕਾਸਏਜੰਟ ਨਿਰਮਾਣMLOps ਸੈੱਟਅੱਪ
ਸਾਡੇ ਬਾਰੇ
ਸਾਂਝੇਦਾਰਗਾਹਕ ਕਹਾਣੀਆਂ
ਲੇਖ
ਦਸਤਾਵੇਜ਼
WSL ProxyRing Promoter
ਬਲੌਗ
ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋLogin
Workstation

AI workstations, AI Multi Agentic Software, GPU infrastructure, and intelligent agent solutions for modern businesses.

ਯੂਕੇ ਦਫ਼ਤਰ: 77-79 Marlowes, Hemel Hempstead HP1 1LF - Directions - Take Junction 20 off M25 Outer London
Company No: 11641870
Mon - Fri: 9:00 AM - 6:00 PM GMT
+44 7515 356 146

ਬੈਲਜੀਅਮ ਦਫ਼ਤਰ: Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, Brussels
BE 0751.518.683
Mon - Fri: 9:00 AM - 6:00 PM CET
+32 492 45 67 46

ਭਾਰਤ ਦਫ਼ਤਰ: #159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841

ਉਤਪਾਦ

ਸਾਰੇ ਉਤਪਾਦWSL ProxyRing PromoterAI ਲੈਬਜ਼OpenAI ਏਜੰਟClaude ਏਜੰਟGrok BotWorkstation CRM (WSL CRM)

AI ਹੱਲ

AI ਹੱਲAI ਵਰਕਸਟੇਸ਼ਨਪ੍ਰਾਈਵੇਟ AIGPU ਕਲੱਸਟਰਐਂਟਰਪ੍ਰਾਈਜ਼ AI ਲੈਬਸੇਵਾਵਾਂ

ਸਰੋਤ

ਲੇਖਦਸਤਾਵੇਜ਼ਬਲੌਗSearchਸਾਈਟ ਮੈਪ

ਕੰਪਨੀ

ਸਾਡੇ ਬਾਰੇਸਾਂਝੇਦਾਰਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ

© 2026 Workstation AI. ਸਾਰੇ ਹੱਕ ਰਾਖਵੇਂ ਹਨ

ਗੋਪਨੀਯਤਾ ਨੀਤੀਕੂਕੀ ਨੀਤੀਸਾਈਟ ਮੈਪ

Loading blog...

Home / Blog
DatabaseKubernetesDevOpsBackend

Redis ਉਤਪਾਦਨ ਵਿੱਚ ਉੱਚ ਉਪਲਬਧਤਾ: ਸੈਂਟੀਨੇਲ, ਕਲੱਸਟਰ, ਅਤੇ Kubernetes ਆਪਰੇਟਰ

ਸੈਂਟੀਨੇਲ, ਕਲੱਸਟਰ ਮੋਡ, ਅਤੇ Kubernetes ਆਪਰੇਟਰਾਂ ਨਾਲ Redis HA

Balinder Walia12 ਅਪ੍ਰੈਲ 202644 min read

Redis ਆਧੁਨਿਕ ਐਪਲੀਕੇਸ਼ਨ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦੀ ਰੀੜ੍ਹ ਦੀ ਹੱਡੀ ਹੈ। ਇਹ ਦੁਨੀਆ ਭਰ ਵਿੱਚ ਲੱਖਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਕੈਸ਼, ਸੈਸ਼ਨ ਸਟੋਰ, ਸੁਨੇਹਾ ਬ੍ਰੋਕਰ, ਰੇਟ ਲਿਮਿਟਰ, ਲੀਡਰਬੋਰਡ ਇੰਜਣ, ਅਤੇ ਰੀਅਲ-ਟਾਈਮ ਵਿਸ਼ਲੇਸ਼ਣ ਪਾਈਪਲਾਈਨ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਇੱਕ ਸਿੰਗਲ Redis ਉਦਾਹਰਨ ਸਬ-ਮਿਲੀਸਕਿੰਟ ਲੇਟੈਂਸੀ ਨਾਲ ਪ੍ਰਤੀ ਸਕਿੰਟ ਹਜ਼ਾਰਾਂ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲ ਸਕਦੀ ਹੈ - ਪਰ ਇੱਕ ਸਿੰਗਲ ਉਦਾਹਰਣ ਅਸਫਲਤਾ ਦਾ ਇੱਕ ਸਿੰਗਲ ਬਿੰਦੂ ਵੀ ਹੈ। ਜਦੋਂ Redis ਹੇਠਾਂ ਜਾਂਦਾ ਹੈ, ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਕੈਸਕੇਡਿੰਗ ਅਸਫਲਤਾਵਾਂ ਦਾ ਅਨੁਭਵ ਹੁੰਦਾ ਹੈ: ਕੈਸ਼ ਸਟੈਂਪੀਡਜ਼ ਬੈਕਐਂਡ ਡੇਟਾਬੇਸ ਨੂੰ ਹਾਵੀ ਕਰ ਦਿੰਦੇ ਹਨ, ਸੈਸ਼ਨ ਖਤਮ ਹੋ ਜਾਂਦੇ ਹਨ, ਦਰ ਸੀਮਾਵਾਂ ਕੰਮ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦੀਆਂ ਹਨ, ਅਤੇ ਅਸਲ-ਸਮੇਂ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਹਨੇਰੇ ਹੋ ਜਾਂਦੀਆਂ ਹਨ। ਇੱਕ ਉੱਚ ਉਪਲਬਧ Redis ਤੈਨਾਤੀ ਬਣਾਉਣਾ ਉਤਪਾਦਨ ਪ੍ਰਣਾਲੀਆਂ ਲਈ ਵਿਕਲਪਿਕ ਨਹੀਂ ਹੈ - ਇਹ ਇੱਕ ਇੰਜੀਨੀਅਰਿੰਗ ਲੋੜ ਹੈ।

ਇਹ ਗਾਈਡ Redis ਉੱਚ ਉਪਲਬਧਤਾ ਵਿੱਚ ਇੱਕ ਵਿਆਪਕ, ਉਤਪਾਦਨ-ਕੇਂਦ੍ਰਿਤ ਡੂੰਘੀ ਗੋਤਾਖੋਰੀ ਹੈ। ਅਸੀਂ Redis ਰੀਪਲੀਕੇਸ਼ਨ ਫੰਡਾਮੈਂਟਲਜ਼ (ਅਸਿੰਕ੍ਰੋਨਸ ਰੀਪਲੀਕੇਸ਼ਨ, WAIT ਕਮਾਂਡ, ਅਤੇ ਅੰਸ਼ਕ ਰੀਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ), ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ ਅਤੇ ਸਰਵਿਸ ਖੋਜ ਲਈ Redis ਸੈਂਟੀਨੇਲ, ਹੈਸ਼ ਸਲਾਟ ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ ਦੇ ਨਾਲ ਹਰੀਜੱਟਲ ਸਕੇਲਿੰਗ ਲਈ Redis ਕਲੱਸਟਰ, Kubernetes ਆਪਰੇਟਰ, Kubernetes, ਐਂਟਰਪ੍ਰਾਈਜ਼ ਪ੍ਰਤੀ spotree, Redis, ਨੂੰ ਕਵਰ ਕਰਾਂਗੇ। ਰਣਨੀਤੀਆਂ (RDB ਸਨੈਪਸ਼ਾਟ, AOF, ਅਤੇ ਹਾਈਬ੍ਰਿਡ ਸਥਿਰਤਾ), AWS ElastiCache 'ਤੇ ਕਲਾਉਡ-ਪ੍ਰਬੰਧਿਤ ਤੈਨਾਤੀਆਂ, Redis ਲਈ Azure ਕੈਸ਼, ਅਤੇ GCP ਮੈਮੋਰੀਸਟੋਰ, ਰੈਂਚਰ ਅਤੇ ਲੋਂਗਹੋਰਨ ਦੇ ਨਾਲ ਬੇਅਰ ਮੈਟਲ k3s ਤੈਨਾਤੀਆਂ, ਮੈਮੋਰੀ ਪ੍ਰਬੰਧਨ ਅਤੇ ਬੇਦਖਲੀ ਅਤੇ ਐਕਸੈਸਬੀਐਕਸਸੀਐੱਲ-ਐਕਸਸੀਐੱਲ-ਐਕਸਸੀਐੱਲਸੀ-ਐਕਸਸੀਐੱਲਸੀ-ਐਕਸੈਸ ਪਾਲਿਸੀਆਂ। HA ਸੰਰਚਨਾਵਾਂ ਵਿੱਚ ਪਬ/ਸਬ ਅਤੇ ਸਟ੍ਰੀਮਜ਼ ਵਿਵਹਾਰ, HA ਵਿੱਚ Redis ਮੋਡੀਊਲ (RedisJSON, RediSearch, RedisTimeSeries), ਫੇਲਓਵਰ ਲਚਕੀਲੇਪਣ ਲਈ ਕਨੈਕਸ਼ਨ ਪੂਲਿੰਗ ਅਤੇ ਕਲਾਇੰਟ ਕੌਂਫਿਗਰੇਸ਼ਨ, ਬੈਕਅਪ ਅਤੇ ਰੀਸਟੋਰ ਰਣਨੀਤੀਆਂ, Redis INFO ਅਤੇ Redis INFO ਨਾਲ ਨਿਗਰਾਨੀ, Redis INFO ਅਤੇ ਐਕਸਪੋਰਟ, XPR3, ਐਕਸਪੋਰਟ ਬੋਰਡ ਅਤੇ ਐਕਸਪੀਆਰਐਕਸ. Redis-ਅਨੁਕੂਲ ਵਿਕਲਪਾਂ ਦੇ ਰੂਪ ਵਿੱਚ KeyDB, ਪਾਈਪਲਾਈਨਿੰਗ, ਲੁਆ ਸਕ੍ਰਿਪਟਿੰਗ, ਅਤੇ ਮੈਮੋਰੀ ਅਨੁਕੂਲਨ, ਆਮ ਅਸਫਲਤਾ ਦੇ ਦ੍ਰਿਸ਼ ਅਤੇ ਸਮੱਸਿਆ ਨਿਪਟਾਰਾ ਪ੍ਰਕਿਰਿਆਵਾਂ, ਅਤੇ ਸਮਰੱਥਾ ਯੋਜਨਾਬੰਦੀ ਅਤੇ ਸਕੇਲਿੰਗ ਰਣਨੀਤੀਆਂ ਨਾਲ ਪ੍ਰਦਰਸ਼ਨ ਟਿਊਨਿੰਗ।

Redis ਰੀਪਲੀਕੇਸ਼ਨ ਫੰਡਾਮੈਂਟਲਜ਼

Redis ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਉਹ ਬੁਨਿਆਦ ਹੈ ਜਿਸ 'ਤੇ ਸਾਰੇ ਉੱਚ ਉਪਲਬਧਤਾ ਆਰਕੀਟੈਕਚਰ ਬਣਾਏ ਗਏ ਹਨ। ਇੱਕ Redis ਮਾਸਟਰ ਉਦਾਹਰਣ ਲਿਖਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ ਅਤੇ ਅਸਿੰਕਰੋਨਸ ਤੌਰ 'ਤੇ ਉਹਨਾਂ ਨੂੰ ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਉਦਾਹਰਨਾਂ ਵਿੱਚ ਪ੍ਰਸਾਰਿਤ ਕਰਦਾ ਹੈ। ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਮਾਸਟਰ ਦੇ ਡੇਟਾਸੇਟ ਦੀ ਇੱਕ ਨਜ਼ਦੀਕੀ-ਰੀਅਲ-ਟਾਈਮ ਕਾਪੀ ਬਣਾਈ ਰੱਖਦੀਆਂ ਹਨ ਅਤੇ ਰੀਡਡੈਂਸੀ ਅਤੇ ਰੀਡ ਸਕੇਲੇਬਿਲਟੀ ਦੋਵਾਂ ਨੂੰ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹੋਏ, ਰੀਡ ਸਵਾਲਾਂ ਦੀ ਸੇਵਾ ਕਰਦੀਆਂ ਹਨ।

PostgreSQL ਦੀ WAL-ਅਧਾਰਿਤ ਸਟ੍ਰੀਮਿੰਗ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੇ ਉਲਟ, Redis ਇੱਕ ਕਮਾਂਡ-ਅਧਾਰਿਤ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਪ੍ਰੋਟੋਕੋਲ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਮਾਸਟਰ 'ਤੇ ਐਗਜ਼ੀਕਿਊਟ ਕੀਤੀ ਗਈ ਹਰ ਰਾਈਟ ਕਮਾਂਡ ਨੂੰ ਰੀਪਲੀਕੇਸ਼ਨ ਸਟ੍ਰੀਮ ਵਿੱਚ ਸੀਰੀਅਲਾਈਜ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਜੁੜੀਆਂ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਨੂੰ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਉਹਨਾਂ ਦੇ ਸਥਾਨਕ ਡੇਟਾਸੈਟਾਂ ਦੇ ਵਿਰੁੱਧ ਉਹੀ ਕਮਾਂਡਾਂ ਨੂੰ ਚਲਾਉਂਦੇ ਹਨ। ਇਹ ਪਹੁੰਚ ਸਧਾਰਨ ਅਤੇ ਕੁਸ਼ਲ ਹੈ ਪਰ ਇਕਸਾਰਤਾ ਲਈ ਮਹੱਤਵਪੂਰਨ ਪ੍ਰਭਾਵ ਹੈ — ਕਿਉਂਕਿ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਮੂਲ ਰੂਪ ਵਿੱਚ ਅਸਿੰਕਰੋਨਸ ਹੁੰਦੀ ਹੈ, ਇੱਥੇ ਹਮੇਸ਼ਾ ਇੱਕ ਵਿੰਡੋ ਹੁੰਦੀ ਹੈ ਜਿੱਥੇ ਮਾਸਟਰ 'ਤੇ ਮਾਨਤਾ ਪ੍ਰਾਪਤ ਲਿਖਤਾਂ ਅਜੇ ਤੱਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਤੱਕ ਨਹੀਂ ਪਹੁੰਚੀਆਂ ਹਨ।

ਅਸਿੰਕ੍ਰੋਨਸ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਅਤੇ WAIT ਕਮਾਂਡ

ਮੂਲ ਰੂਪ ਵਿੱਚ, Redis ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਸਿੰਕ੍ਰੋਨਸ ਹੈ। ਮਾਸਟਰ ਰਸੀਦ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕਿਸੇ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੀ ਉਡੀਕ ਕੀਤੇ ਬਿਨਾਂ, ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਲਾਗੂ ਕਰਨ ਤੋਂ ਤੁਰੰਤ ਬਾਅਦ ਗਾਹਕ ਨੂੰ ਇੱਕ ਲਿਖਤ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ। ਇਹ ਅਧਿਕਤਮ ਰਾਈਟ ਥ੍ਰੁਪੁੱਟ ਦਿੰਦਾ ਹੈ ਪਰ ਇੱਕ ਸੰਭਾਵੀ ਡਾਟਾ ਨੁਕਸਾਨ ਵਿੰਡੋ ਨੂੰ ਪੇਸ਼ ਕਰਦਾ ਹੈ — ਜੇਕਰ ਇੱਕ ਰਾਈਟ ਕਿਸੇ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਮਾਸਟਰ ਕਰੈਸ਼ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਉਹ ਰਾਈਟ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ।

WAITਕਮਾਂਡ ਇੱਕ ਸਮਕਾਲੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਮੁੱਢਲੀ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ। ਇੱਕ ਰਾਈਟ ਜਾਰੀ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਕਲਾਇੰਟWAIT numreplicas timeoutਨੂੰ ਬਲੌਕ ਕਰਨ ਲਈ ਕਾਲ ਕਰ ਸਕਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਦੀ ਨਿਰਧਾਰਤ ਸੰਖਿਆ ਲਿਖਤ ਨੂੰ ਸਵੀਕਾਰ ਨਹੀਂ ਕਰ ਲੈਂਦੀ ਜਾਂ ਸਮਾਂ ਸਮਾਪਤ ਨਹੀਂ ਹੋ ਜਾਂਦਾ। ਇਹ Redis ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਮਕਾਲੀ ਨਹੀਂ ਬਣਾਉਂਦਾ —WAITਸਿਰਫ਼ ਇਸ ਗੱਲ ਦੀ ਗਾਰੰਟੀ ਦਿੰਦਾ ਹੈ ਕਿ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਨੇ ਡਾਟਾ ਪ੍ਰਾਪਤ ਕੀਤਾ ਹੈ, ਨਾ ਕਿ ਇਹ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ 'ਤੇ ਡਿਸਕ 'ਤੇ ਜਾਰੀ ਰੱਖਿਆ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ, ਇਹ ਮਹੱਤਵਪੂਰਨ ਤੌਰ 'ਤੇ ਡਾਟਾ ਗੁਆਉਣ ਵਾਲੀ ਵਿੰਡੋ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ.

# Write a critical value and wait for 2 replicas to acknowledge
SET order:12345 '{"status":"confirmed","amount":599.99}'
WAIT 2 5000
# Returns the number of replicas that acknowledged within 5000ms
# Returns 0 if no replica acknowledged (timeout or no replicas connected)

ਨਾਜ਼ੁਕ ਲਿਖਤਾਂ (ਵਿੱਤੀ ਲੈਣ-ਦੇਣ, ਆਰਡਰ ਪੁਸ਼ਟੀਕਰਨ) ਲਈWAITਦੀ ਚੋਣਵੇਂ ਤੌਰ 'ਤੇ ਵਰਤੋਂ ਕਰੋ ਜਦੋਂ ਕਿ ਗੈਰ-ਨਾਜ਼ੁਕ ਲਿਖਤਾਂ (ਕੈਸ਼ ਅੱਪਡੇਟ, ਸੈਸ਼ਨ ਰਿਫ੍ਰੈਸ਼) ਨੂੰ ਅਸਿੰਕ੍ਰੋਨਸ ਤੌਰ 'ਤੇ ਅੱਗੇ ਵਧਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹੋਏ। ਪ੍ਰਤੀ-ਕਮਾਂਡ ਲਚਕਤਾ ਪੂਰੀ ਸਮਕਾਲੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੇ ਲੇਟੈਂਸੀ ਜੁਰਮਾਨੇ ਤੋਂ ਬਚਦੀ ਹੈ।

ਅੰਸ਼ਿਕ ਰੀਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ (PSYNC)

ਜਦੋਂ ਇੱਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਥੋੜ੍ਹੇ ਸਮੇਂ ਲਈ ਡਿਸਕਨੈਕਟ ਹੋ ਜਾਂਦੀ ਹੈ (ਨੈੱਟਵਰਕ ਬਲਿਪ, ਰੀਸਟਾਰਟ), ਇਸਨੂੰ ਦੁਬਾਰਾ ਜੁੜਨ ਲਈ ਇੱਕ ਪੂਰੇ ਡੇਟਾਸੈਟ ਟ੍ਰਾਂਸਫਰ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ ਹੈ। Redis ਇੱਕ ਰੀਪਲੀਕੇਸ਼ਨ ਬੈਕਲਾਗ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦਾ ਹੈ - ਮਾਸਟਰ 'ਤੇ ਹਾਲੀਆ ਲਿਖਣ ਕਮਾਂਡਾਂ ਦਾ ਇੱਕ ਸਰਕੂਲਰ ਬਫਰ। ਜਦੋਂ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੁਬਾਰਾ ਜੁੜ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਇਹ ਆਪਣੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਆਫਸੈੱਟ ਮਾਸਟਰ ਨੂੰ ਭੇਜਦੀ ਹੈ। ਜੇਕਰ ਆਫਸੈੱਟ ਅਜੇ ਵੀ ਬੈਕਲਾਗ ਦੇ ਅੰਦਰ ਹੈ, ਤਾਂ ਮਾਸਟਰ ਸਿਰਫ਼ ਗੁੰਮ ਕਮਾਂਡਾਂ (ਅੰਸ਼ਕ ਰੀਸਿੰਕ) ਭੇਜਦਾ ਹੈ। ਜੇਕਰ ਆਫਸੈੱਟ ਬੈਕਲਾਗ ਤੋਂ ਬਾਹਰ ਹੋ ਗਿਆ ਹੈ, ਤਾਂ ਇੱਕ ਪੂਰੀ ਰੀ-ਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ ਸ਼ੁਰੂ ਹੋ ਜਾਂਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਇੱਕ RDB ਸਨੈਪਸ਼ਾਟ ਬਣਾਉਣਾ ਅਤੇ ਟ੍ਰਾਂਸਫਰ ਕਰਨਾ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ।

# redis.conf — Replication backlog configuration
repl-backlog-size 256mb          # Size of the replication backlog buffer
repl-backlog-ttl 3600            # Seconds to retain backlog after last replica disconnects
repl-diskless-sync yes           # Transfer RDB via socket instead of disk (faster for full sync)
repl-diskless-sync-delay 5       # Wait 5s for more replicas before starting diskless sync
repl-diskless-sync-period 0      # No periodic full sync
repl-diskless-load on-empty-db   # Replica loads RDB from socket directly into memory

ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਬੈਕਲਾਗ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਆਕਾਰ ਦੇਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਹ ਇੰਨਾ ਵੱਡਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਸਭ ਤੋਂ ਲੰਬੇ ਸਮੇਂ ਦੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਡਿਸਕਨੈਕਸ਼ਨ ਦੇ ਦੌਰਾਨ ਤਿਆਰ ਕੀਤੀਆਂ ਸਾਰੀਆਂ ਲਿਖਤ ਕਮਾਂਡਾਂ ਨੂੰ ਰੱਖਣ ਲਈ. ਇੱਕ Redis ਉਦਾਹਰਨ ਲਈ 50MB/s ਰਾਈਟ ਟ੍ਰੈਫਿਕ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਲਈ, ਇੱਕ 256MB ਬੈਕਲਾਗ ਲਗਭਗ 5 ਸਕਿੰਟਾਂ ਦੇ ਰਾਈਟਸ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ — ਇਸ ਨੂੰ ਵਧਾਓ ਜੇਕਰ ਤੁਹਾਡੀਆਂ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਲੰਬੇ ਸਮੇਂ ਲਈ ਔਫਲਾਈਨ ਹੋ ਸਕਦੀਆਂ ਹਨ।

ਮਾਸਟਰ-ਰਿਪਲੀਕਾ ਰੀਪਲੀਕੇਸ਼ਨ

ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨਾ
# redis.conf — Master configuration
bind 0.0.0.0
port 6379
protected-mode no
requirepass strong_master_password
masterauth strong_master_password

# Persistence
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes

# Replication
repl-backlog-size 256mb
repl-backlog-ttl 3600
repl-diskless-sync yes
min-replicas-to-write 1          # Refuse writes if fewer than 1 replica connected
min-replicas-max-lag 10          # Replica considered disconnected if lag > 10 seconds
# redis.conf — Replica configuration
bind 0.0.0.0
port 6379
protected-mode no
requirepass strong_master_password
masterauth strong_master_password

replicaof master-host 6379
replica-read-only yes
replica-serve-stale-data yes     # Serve (possibly stale) data during sync
replica-priority 100             # Lower values get promoted first by Sentinel

min-replicas-to-writeਅਤੇmin-replicas-max-lagਸੈਟਿੰਗਾਂ ਮਾਸਟਰ ਨੂੰ ਲਿਖਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨ ਤੋਂ ਰੋਕਦੀਆਂ ਹਨ ਜਦੋਂ ਇਹ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ 'ਤੇ ਡਾਟਾ ਟਿਕਾਊਤਾ ਦੀ ਗਰੰਟੀ ਨਹੀਂ ਦੇ ਸਕਦਾ ਹੈ। ਇਹ ਇੱਕ ਨਾਜ਼ੁਕ ਸੁਰੱਖਿਆ ਜਾਲ ਹੈ — ਇਸ ਤੋਂ ਬਿਨਾਂ, ਇੱਕ ਨੈੱਟਵਰਕ-ਵਿਭਾਗਿਤ ਮਾਸਟਰ ਲਿਖਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨਾ ਜਾਰੀ ਰੱਖਦਾ ਹੈ ਜੋ ਉਦੋਂ ਗੁਆਚ ਜਾਣਗੇ ਜਦੋਂ ਸੈਂਟੀਨੇਲ ਇੱਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਦਾ ਹੈ।

Redis ਸੈਂਟੀਨੇਲ: ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ ਅਤੇ ਸਰਵਿਸ ਡਿਸਕਵਰੀ

Redis ਸੈਂਟੀਨੇਲ ਇੱਕ ਵੰਡਿਆ ਸਿਸਟਮ ਹੈ ਜੋ Redis ਮਾਸਟਰ ਅਤੇ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਉਦਾਹਰਨਾਂ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ, ਮਾਸਟਰ ਅਸਫਲਤਾਵਾਂ ਦਾ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ, ਇੱਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਨੂੰ ਮਾਸਟਰ ਲਈ ਉਤਸ਼ਾਹਿਤ ਕਰਕੇ ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ ਕਰਦਾ ਹੈ, ਅਤੇ ਸੇਵਾ ਖੋਜ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਗਾਹਕ ਹਮੇਸ਼ਾਂ ਮੌਜੂਦਾ ਮਾਸਟਰ ਨੂੰ ਲੱਭ ਸਕਣ। ਸੈਂਟੀਨੇਲ Redis ਦੇ ਨਾਲ-ਨਾਲ ਇੱਕ ਵੱਖਰੀ ਪ੍ਰਕਿਰਿਆ ਦੇ ਤੌਰ 'ਤੇ ਚੱਲਦਾ ਹੈ ਅਤੇ ਇੱਕ ਸਹਿਮਤੀ ਪ੍ਰੋਟੋਕੋਲ ਦੁਆਰਾ ਕੰਮ ਕਰਦਾ ਹੈ - ਸੈਂਟੀਨੇਲ ਉਦਾਹਰਨਾਂ ਦਾ ਇੱਕ ਕੋਰਮ ਇਹ ਸਹਿਮਤ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਇੱਕ ਮਾਸਟਰ ਫੇਲਓਵਰ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਹੁੰਚਯੋਗ ਨਹੀਂ ਹੈ।

Redis ਸੈਂਟੀਨੇਲ ਆਰਕੀਟੈਕਚਰ — ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ & ਸਰਵਿਸ ਡਿਸਕਵਰੀਐਪਲੀਕੇਸ਼ਨ ਕਲਾਇੰਟਸੈਂਟੀਨੇਲ ਕਲੱਸਟਰ (ਕੋਰਮ = 2)ਸੈਂਟੀਨੇਲ 1 :26379ਸੈਂਟੀਨੇਲ 2 :26379ਸੈਂਟੀਨੇਲ 3 :26379SENTINEL get-master-addr-by-nameRedis ਮਾਸਟਰਨੋਡ1 — 10.0.1.10:6379ਪੜ੍ਹੋ/ਲਿਖੋ — ਪ੍ਰਾਇਮਰੀਪਿੰਗ ਨਿਗਰਾਨੀਟ੍ਰੈਫਿਕਲਿਖੋਪ੍ਰਤੀਕ੍ਰਿਤੀ 1ਨੋਡ2 — 10.0.1.11:6379ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ — ਤਰਜੀਹੀ 100ਪ੍ਰਤੀਕ੍ਰਿਤੀ 2ਨੋਡ3 — 10.0.1.12:6379ਸਿਰਫ਼ ਪੜ੍ਹਨ ਲਈ — ਤਰਜੀਹ 100ਅਸਿੰਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀਅਸਿੰਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀਫੇਲਓਵਰ: ਮਾਸਟਰ ਫੇਲ ਹੁੰਦਾ ਹੈ → Sentinelਨੂੰ ਚੁਣਦਾ ਹੈਪ੍ਰਤੀਕ੍ਰਿਤੀ ਨੂੰ ਅੱਗੇ ਵਧਾਇਆ → ਗ੍ਰਾਹਕ Sentinelਦੁਆਰਾ ਮੁੜ ਕਨੈਕਟ ਕਰਦੇ ਹਨODOWN ਨੇਦਾ ਪਤਾ ਲਗਾਇਆLegendਮਾਸਟਰ (RW)ਪ੍ਰਤੀਕ੍ਰਿਤੀ (RO)ਸੈਂਟੀਨੇਲਫੇਲਓਵਰ ਮਾਰਗ

ਸੈਂਟੀਨੇਲ ਕੌਂਫਿਗਰੇਸ਼ਨ

ਸੈਂਟੀਨੇਲ ਨੂੰ ਇੱਕ ਸੈਂਟੀਨੇਲ ਅਸਫਲਤਾ ਨੂੰ ਬਰਦਾਸ਼ਤ ਕਰਨ ਅਤੇ ਅਜੇ ਵੀ ਕੋਰਮ ਬਣਾਈ ਰੱਖਣ ਲਈ ਘੱਟੋ-ਘੱਟ ਤਿੰਨ ਮੌਕਿਆਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਹਰੇਕ ਸੈਂਟੀਨੇਲ ਉਸੇ Redis ਮਾਸਟਰ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ ਅਤੇ ਮਾਸਟਰ ਦੀ ਸਿਹਤ ਸਥਿਤੀ 'ਤੇ ਸਹਿਮਤ ਹੋਣ ਲਈ ਇੱਕ ਗੱਪ ਪ੍ਰੋਟੋਕੋਲ ਦੁਆਰਾ ਦੂਜੇ ਸੈਂਟੀਨੇਲ ਨਾਲ ਸੰਚਾਰ ਕਰਦਾ ਹੈ।

# /etc/redis/sentinel.conf — Sentinel instance configuration
port 26379
bind 0.0.0.0
protected-mode no

# Monitor the master named "mymaster" at 10.0.1.10:6379
# The quorum value (2) means 2 Sentinels must agree the master is down
sentinel monitor mymaster 10.0.1.10 6379 2

# Authentication
sentinel auth-pass mymaster strong_master_password

# Timing parameters
sentinel down-after-milliseconds mymaster 5000    # SDOWN after 5s of no PING response
sentinel failover-timeout mymaster 60000          # Max 60s for failover procedure
sentinel parallel-syncs mymaster 1                # Only 1 replica syncs from new master at a time

# Deny script execution for security
sentinel deny-scripts-reconfig yes

# Notification script (called on failover events)
# sentinel notification-script mymaster /opt/redis/notify.sh

# Client reconfiguration script (called when master changes)
# sentinel client-reconfig-script mymaster /opt/redis/reconfig.sh

# Logging
logfile /var/log/redis/sentinel.log
logevel notice

# Enable TLS for Sentinel communication
# tls-port 26379
# port 0
# tls-cert-file /etc/redis/tls/sentinel.crt
# tls-key-file /etc/redis/tls/sentinel.key
# tls-ca-cert-file /etc/redis/tls/ca.crt
# tls-replication yes
# tls-auth-clients optional

ਸੈਂਟੀਨੇਲ ਦੀ ਅਸਫਲਤਾ ਦਾ ਪਤਾ ਲਗਾਉਣਾ ਦੋ ਪੜਾਵਾਂ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ। ਪਹਿਲਾਂ, ਇੱਕ ਵਿਅਕਤੀਗਤ ਸੈਂਟੀਨੇਲ ਇੱਕ ਮਾਸਟਰ ਨੂੰਸਬਜੈਕਟਿਵਲੀ ਡਾਊਨ (SDOWN)ਵਜੋਂ ਚਿੰਨ੍ਹਿਤ ਕਰਦਾ ਹੈ ਜਦੋਂ ਉਸਨੂੰdown-after-millisecondsਦੇ ਅੰਦਰ PING ਦਾ ਕੋਈ ਵੈਧ ਜਵਾਬ ਨਹੀਂ ਮਿਲਦਾ। ਫਿਰ, ਜਦੋਂ ਸੈਂਟੀਨੇਲਜ਼ ਦਾ ਇੱਕ ਕੋਰਮ ਸਹਿਮਤ ਹੁੰਦਾ ਹੈ ਕਿ ਮਾਸਟਰ ਪਹੁੰਚਯੋਗ ਨਹੀਂ ਹੈ, ਤਾਂ ਇਸ ਨੂੰਆਬਜੈਕਟਿਵਲੀ ਡਾਊਨ (ODOWN)ਵਜੋਂ ਮਾਰਕ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਫੇਲਓਵਰ ਪ੍ਰਕਿਰਿਆ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। ਇੱਕ ਸੈਂਟੀਨੇਲ ਨੂੰ ਫੇਲਓਵਰ ਲੀਡਰ ਵਜੋਂ ਚੁਣਿਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਸਭ ਤੋਂ ਵਧੀਆ ਪ੍ਰਤੀਕ੍ਰਿਤੀ (ਪਹਿਲਤਾ, ਰੀਪਲੀਕੇਸ਼ਨ ਆਫਸੈੱਟ ਅਤੇ ਰਨਿਡ ਦੇ ਅਧਾਰ ਤੇ) ਦੀ ਚੋਣ ਕਰਦਾ ਹੈ, ਇਸਨੂੰ ਮਾਸਟਰ ਬਣਾਉਣ ਲਈ ਉਤਸ਼ਾਹਿਤ ਕਰਦਾ ਹੈ, ਨਵੇਂ ਮਾਸਟਰ ਦੀ ਪਾਲਣਾ ਕਰਨ ਲਈ ਬਾਕੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਨੂੰ ਮੁੜ ਸੰਰਚਿਤ ਕਰਦਾ ਹੈ, ਅਤੇ ਸੈਂਟੀਨੇਲ ਸਥਿਤੀ ਨੂੰ ਅੱਪਡੇਟ ਕਰਦਾ ਹੈ।

ਸੈਂਟੀਨੇਲ ਸਰਵਿਸ ਡਿਸਕਵਰੀ ਅਤੇ ਕਲਾਇੰਟ ਕੌਂਫਿਗਰੇਸ਼ਨ

ਸਟੈਟਿਕ ਮਾਸਟਰ-ਰਿਪਲੀਕਾ ਸੈਟਅਪਸ ਉੱਤੇ ਸੈਂਟੀਨੇਲ ਦਾ ਮੁੱਖ ਫਾਇਦਾ ਸੇਵਾ ਖੋਜ ਹੈ। ਗ੍ਰਾਹਕ ਇੱਕ ਨਿਸ਼ਚਿਤ Redis ਪਤੇ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਹੁੰਦੇ - ਉਹ ਮੌਜੂਦਾ ਮਾਸਟਰ ਪਤੇ ਲਈ ਸੈਂਟੀਨੇਲ ਨੂੰ ਪੁੱਛਦੇ ਹਨ ਅਤੇ ਫੇਲਓਵਰ ਸੂਚਨਾਵਾਂ ਲਈ ਗਾਹਕ ਬਣਦੇ ਹਨ। ਹਰੇਕ ਪ੍ਰਮੁੱਖ Redis ਕਲਾਇੰਟ ਲਾਇਬ੍ਰੇਰੀ ਨੇਟਿਵ ਤੌਰ 'ਤੇ Sentinel ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ।

# Node.js — ioredis with Sentinel support
const Redis = require('ioredis');

const redis = new Redis({
  sentinels: [
    { host: '10.0.1.20', port: 26379 },
    { host: '10.0.1.21', port: 26379 },
    { host: '10.0.1.22', port: 26379 }
  ],
  name: 'mymaster',
  password: 'strong_master_password',
  sentinelPassword: 'sentinel_password',
  db: 0,
  retryStrategy(times) {
    const delay = Math.min(times * 200, 5000);
    return delay;
  },
  reconnectOnError(err) {
    const targetError = 'READONLY';
    if (err.message.includes(targetError)) {
      return true; // Reconnect on READONLY error (failover happened)
    }
    return false;
  },
  maxRetriesPerRequest: 3,
  enableReadyCheck: true,
  connectTimeout: 10000,
  lazyConnect: false
});

redis.on('connect', () => console.log('Connected to Redis master'));
redis.on('error', (err) => console.error('Redis error:', err));
redis.on('+switch-master', (msg) => {
  console.log('Master switched:', msg);
});
# Python — redis-py with Sentinel support
from redis.sentinel import Sentinel
import redis

sentinel = Sentinel(
    [('10.0.1.20', 26379), ('10.0.1.21', 26379), ('10.0.1.22', 26379)],
    socket_timeout=5,
    password='strong_master_password',
    sentinel_kwargs={'password': 'sentinel_password'}
)

# Get a connection to the current master (for writes)
master = sentinel.master_for(
    'mymaster',
    socket_timeout=5,
    retry_on_timeout=True,
    db=0
)

# Get a connection to a replica (for reads)
replica = sentinel.slave_for(
    'mymaster',
    socket_timeout=5,
    db=0
)

# Usage
master.set('session:user123', '{"logged_in": true}')
result = replica.get('session:user123')
print(result)
// Go — go-redis with Sentinel support
package main

import (
    "context"
    "fmt"
    "time"

    "github.com/redis/go-redis/v9"
)

func main() {
    ctx := context.Background()

    rdb := redis.NewFailoverClient(&redis.FailoverOptions{
        MasterName:       "mymaster",
        SentinelAddrs:    []string{"10.0.1.20:26379", "10.0.1.21:26379", "10.0.1.22:26379"},
        Password:         "strong_master_password",
        SentinelPassword: "sentinel_password",
        DB:               0,
        DialTimeout:      10 * time.Second,
        ReadTimeout:      5 * time.Second,
        WriteTimeout:     5 * time.Second,
        PoolSize:         50,
        MinIdleConns:     10,
        MaxRetries:       3,
        MinRetryBackoff:  200 * time.Millisecond,
        MaxRetryBackoff:  5 * time.Second,
    })
    defer rdb.Close()

    err := rdb.Set(ctx, "key", "value", 5*time.Minute).Err()
    if err != nil {
        fmt.Printf("Error: %v
", err)
        return
    }

    val, err := rdb.Get(ctx, "key").Result()
    if err != nil {
        fmt.Printf("Error: %v
", err)
        return
    }
    fmt.Printf("key = %s
", val)
}

Redis ਕਲੱਸਟਰ: ਹੈਸ਼ ਸਲਾਟਸ

ਦੇ ਨਾਲ ਹਰੀਜੱਟਲ ਸਕੇਲਿੰਗ

ਜਦੋਂ ਕਿ ਸੈਂਟੀਨੇਲ ਇੱਕ ਸਿੰਗਲ ਡੇਟਾਸੈਟ ਲਈ ਉੱਚ ਉਪਲਬਧਤਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, Redis ਕਲੱਸਟਰ HA ਅਤੇ ਹਰੀਜੱਟਲ ਸਕੇਲਿੰਗ ਦੋਵੇਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। Redis ਕਲੱਸਟਰ ਇੱਕ ਹੈਸ਼ ਸਲਾਟ ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਮਲਟੀਪਲ ਮਾਸਟਰ ਨੋਡਾਂ ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਵੰਡਦਾ ਹੈ — ਕੀਸਪੇਸ ਨੂੰ 16,384 ਹੈਸ਼ ਸਲਾਟਾਂ ਵਿੱਚ ਵੰਡਿਆ ਗਿਆ ਹੈ, ਅਤੇ ਹਰੇਕ ਮਾਸਟਰ ਉਹਨਾਂ ਸਲਾਟਾਂ ਦੇ ਸਬਸੈੱਟ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਹੈ। ਹਰੇਕ ਮਾਸਟਰ ਕੋਲ ਫੇਲਓਵਰ ਲਈ ਇੱਕ ਜਾਂ ਵੱਧ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਹਨ। ਕਲੱਸਟਰ ਸਮੂਹਿਕ ਤੌਰ 'ਤੇ ਆਟੋਮੈਟਿਕ ਸ਼ਾਰਡਿੰਗ, ਬਿਲਟ-ਇਨ ਫੇਲਓਵਰ, ਅਤੇ ਨੋਡਸ ਜੋੜ ਕੇ ਸਟੋਰੇਜ ਅਤੇ ਥ੍ਰੁਪੁੱਟ ਦੋਵਾਂ ਨੂੰ ਰੇਖਿਕ ਤੌਰ 'ਤੇ ਸਕੇਲ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

Redis ਕਲੱਸਟਰ ਆਰਕੀਟੈਕਚਰ — ਹੈਸ਼ ਸਲਾਟ & ਕਲਾਇੰਟ ਰੂਟਿੰਗਸਲਾਟ 0-5460ਸਲਾਟ 5461-10922ਸਲਾਟ 10923-1638316,384 ਕੁੱਲ ਹੈਸ਼ ਸਲਾਟ 3 ਮਾਸਟਰਾਂ ਵਿੱਚ ਵੰਡੇ ਗਏ (CRC16 ਮੋਡ 16384)ਸਮਾਰਟ ਕਲਾਇੰਟ (ਕਲੱਸਟਰ-ਜਾਣੂ)ਕਲਾਇੰਟ ਕੈਚ ਸਲਾਟ→ਨੋਡ ਮੈਪਿੰਗ; MOVED/ASK ਰੀਡਾਇਰੈਕਸ਼ਨਨੂੰ ਹੈਂਡਲ ਕਰਦਾ ਹੈਮਾਸਟਰ A10.0.1.10:7000ਸਲਾਟ: 0-5460~5461 ਸਲਾਟ (33.3%)ਮਾਸਟਰ B10.0.1.11:7000ਸਲਾਟ: 5461-10922~5462 ਸਲਾਟ (33.3%)ਮਾਸਟਰ C10.0.1.12:7000ਸਲਾਟ: 10923-16383~5461 ਸਲਾਟ (33.3%)ਪ੍ਰਤੀਕ੍ਰਿਤੀ A110.0.1.13:7000ਮਾਸਟਰ A ਸਲਾਟਦੀ ਨਕਲ ਕਰਦਾ ਹੈਪ੍ਰਤੀਕ੍ਰਿਤੀ B110.0.1.14:7000ਮਾਸਟਰ B ਸਲੋਟਾਂਦੀ ਨਕਲ ਕਰਦਾ ਹੈਪ੍ਰਤੀਕ੍ਰਿਤੀ C110.0.1.15:7000ਮਾਸਟਰ C ਸਲਾਟਦੀ ਨਕਲ ਕਰਦਾ ਹੈਕਲੱਸਟਰ ਬੱਸ (ਪੋਰਟ+10000) — ਗੱਪ ਪ੍ਰੋਟੋਕੋਲ, ਅਸਫਲਤਾ ਖੋਜ, ਸੰਰਚਨਾ ਪ੍ਰਸਾਰਹਰ ਨੋਡ PING/PONG ਨੂੰ TCP ਬਾਈਨਰੀ ਪ੍ਰੋਟੋਕੋਲਦੁਆਰਾ ਹਰ ਦੂਜੇ ਨੋਡ ਨਾਲ ਐਕਸਚੇਂਜ ਕਰਦਾ ਹੈਮੂਵਡ 12345 10.0.1.12:7000 — ਸਥਾਈ ਰੀਡਾਇਰੈਕਟ | ASK 12345 10.0.1.12:7000 —ਨੂੰ ਰੀ-ਸ਼ਾਰਡਿੰਗ ਦੌਰਾਨ ਇੱਕ-ਵਾਰ ਰੀਡਾਇਰੈਕਟ

ਇੱਕ Redis ਕਲੱਸਟਰ

ਸੈੱਟਅੱਪ ਕਰ ਰਿਹਾ ਹੈ
# Create a 6-node Redis Cluster (3 masters + 3 replicas)
# Each node needs a redis.conf with cluster-enabled

# redis.conf for each cluster node (adjust port per node)
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes
requirepass cluster_password
masterauth cluster_password
bind 0.0.0.0
protected-mode no
repl-backlog-size 256mb

# Start all 6 Redis instances
redis-server /etc/redis/7000.conf
redis-server /etc/redis/7001.conf
# ... repeat for all 6 nodes

# Create the cluster
redis-cli --cluster create \
  10.0.1.10:7000 10.0.1.11:7000 10.0.1.12:7000 \
  10.0.1.13:7000 10.0.1.14:7000 10.0.1.15:7000 \
  --cluster-replicas 1 \
  -a cluster_password

# Verify cluster status
redis-cli -c -h 10.0.1.10 -p 7000 -a cluster_password cluster info
redis-cli -c -h 10.0.1.10 -p 7000 -a cluster_password cluster nodes

ਰੀਸ਼ਾਰਡਿੰਗ ਅਤੇ ਮਲਟੀ-ਕੀ ਓਪਰੇਸ਼ਨ

ਰੀਸ਼ਾਰਡਿੰਗ ਨੋਡਾਂ ਨੂੰ ਜੋੜਨ ਜਾਂ ਹਟਾਉਣ ਤੋਂ ਬਾਅਦ ਡਾਟਾ ਨੂੰ ਮੁੜ ਸੰਤੁਲਿਤ ਕਰਨ ਲਈ ਮਾਸਟਰਾਂ ਦੇ ਵਿਚਕਾਰ ਹੈਸ਼ ਸਲੋਟਾਂ ਨੂੰ ਮੂਵ ਕਰਦਾ ਹੈ। ਰੀ-ਸ਼ਾਰਡਿੰਗ ਦੇ ਦੌਰਾਨ, ਮਾਈਗ੍ਰੇਟਿੰਗ ਸਲਾਟਾਂ ਵਿੱਚ ਕੁੰਜੀਆਂ ASK ਰੀਡਾਇਰੈਕਸ਼ਨ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੀਆਂ ਹਨ, ਜਿਸਨੂੰ ਕਲਾਇੰਟ ਪਾਰਦਰਸ਼ੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲਦਾ ਹੈ।

# Add a new node to the cluster
redis-cli --cluster add-node 10.0.1.16:7000 10.0.1.10:7000 -a cluster_password

# Reshard slots to the new node
redis-cli --cluster reshard 10.0.1.10:7000 \
  --cluster-from all \
  --cluster-to NEW_NODE_ID \
  --cluster-slots 4096 \
  --cluster-yes \
  -a cluster_password

# Rebalance the cluster automatically
redis-cli --cluster rebalance 10.0.1.10:7000 -a cluster_password

# Check cluster slot distribution
redis-cli -c -h 10.0.1.10 -p 7000 -a cluster_password cluster slots
Redis ਕਲੱਸਟਰ ਵਿੱਚ

ਮਲਟੀ-ਕੁੰਜੀ ਓਪਰੇਸ਼ਨ ਸਿਰਫ਼ ਉਦੋਂ ਕੰਮ ਕਰਦੇ ਹਨ ਜਦੋਂ ਸਾਰੀਆਂ ਕੁੰਜੀਆਂ ਇੱਕੋ ਹੈਸ਼ ਸਲਾਟ ਵਿੱਚ ਰਹਿੰਦੀਆਂ ਹਨ। ਸੰਬੰਧਿਤ ਕੁੰਜੀਆਂ ਨੂੰ ਇੱਕੋ ਸਲਾਟ 'ਤੇ ਨਕਸ਼ੇ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਹੈਸ਼ ਟੈਗਸ ਦੀ ਵਰਤੋਂ ਕਰੋ:{user:123}.profileਅਤੇ{user:123}.sessionsਦੋਵੇਂuser:123'ਤੇ ਹੈਸ਼, ਗਾਰੰਟੀ ਦਿੰਦੇ ਹਨ ਕਿ ਉਹ ਇੱਕੋ ਨੋਡ 'ਤੇ ਉਤਰਦੇ ਹਨ। ਇਹ ਸਬੰਧਤ ਕੁੰਜੀਆਂ ਵਿੱਚ MGET, MSET, ਲੈਣ-ਦੇਣ, ਅਤੇ Lua ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ।

# Hash tags ensure these keys are in the same slot
SET {order:5000}.details '{"item":"widget","qty":3}'
SET {order:5000}.payment '{"method":"card","status":"paid"}'
SET {order:5000}.shipping '{"carrier":"fedex","tracking":"FX123"}'

# Multi-key operations work because all keys share the {order:5000} hash tag
MGET {order:5000}.details {order:5000}.payment {order:5000}.shipping

# Transaction across same-slot keys
MULTI
SET {order:5000}.details '{"item":"widget","qty":3,"status":"confirmed"}'
SET {order:5000}.payment '{"method":"card","status":"captured"}'
EXEC
Kubernetesਲਈ

Redis ਆਪਰੇਟਰ

Kubernetes ਵਿੱਚ Redis ਨੂੰ ਚਲਾਉਣ ਲਈ ਨਿਰੰਤਰ ਸਟੋਰੇਜ, ਨੈੱਟਵਰਕ ਪਛਾਣ, ਸ਼ਾਨਦਾਰ ਫੇਲਓਵਰ, ਅਤੇ ਸੰਰਚਨਾ ਪ੍ਰਬੰਧਨ ਦੇ ਧਿਆਨ ਨਾਲ ਪ੍ਰਬੰਧਨ ਦੀ ਲੋੜ ਹੈ। Kubernetes ਓਪਰੇਟਰ ਇਸ ਸੰਚਾਲਨ ਗਿਆਨ ਨੂੰ ਕਸਟਮ ਕੰਟਰੋਲਰਾਂ ਵਿੱਚ ਏਨਕੋਡ ਕਰਦੇ ਹਨ ਜੋ ਕਸਟਮ ਰਿਸੋਰਸ ਪਰਿਭਾਸ਼ਾਵਾਂ (CRDs) ਦੁਆਰਾ ਘੋਸ਼ਣਾਤਮਕ ਤੌਰ 'ਤੇ Redis ਕਲੱਸਟਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦੇ ਹਨ।

ਸਪੋਟੋਹੋਮ Redis ਆਪਰੇਟਰ

ਸਪੋਟੋਹੋਮ ਆਪਰੇਟਰ (ਜਿਸ ਨੂੰ ਰੀਡਿਸ-ਓਪਰੇਟਰ ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ) Kubernetes ਵਿੱਚ Redis ਸੈਂਟੀਨੇਲ-ਅਧਾਰਿਤ HA ਨੂੰ ਤਾਇਨਾਤ ਕਰਨ ਲਈ ਇੱਕ ਪਰਿਪੱਕ, ਵਿਆਪਕ ਤੌਰ 'ਤੇ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਆਪਰੇਟਰ ਹੈ। ਇਹ ਸੈਂਟੀਨੇਲ-ਅਧਾਰਿਤ ਫੇਲਓਵਰ ਦੇ ਨਾਲ Redis ਮਾਸਟਰ-ਰਿਪਲੀਕਾ ਸੈੱਟਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ।

# Install the Spotahome Redis Operator
helm repo add spotahome https://spotahome.github.io/redis-operator
helm install redis-operator spotahome/redis-operator \
  --namespace redis-system --create-namespace

# RedisFailover CRD — 3 Redis instances + 3 Sentinels
apiVersion: databases.spotahome.com/v1
kind: RedisFailover
metadata:
  name: redis-ha
  namespace: production
spec:
  sentinel:
    replicas: 3
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 200m
        memory: 256Mi
    customConfig:
      down-after-milliseconds: "5000"
      failover-timeout: "60000"
  redis:
    replicas: 3
    resources:
      requests:
        cpu: "2"
        memory: 8Gi
      limits:
        cpu: "4"
        memory: 16Gi
    storage:
      persistentVolumeClaim:
        metadata:
          name: redis-data
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 50Gi
          storageClassName: longhorn
    customConfig:
      maxmemory: "6gb"
      maxmemory-policy: "allkeys-lru"
      save: "900 1 300 10 60 10000"
      appendonly: "yes"
      appendfsync: "everysec"
      aof-use-rdb-preamble: "yes"
      repl-backlog-size: "256mb"
    exporter:
      enabled: true
      image: oliver006/redis_exporter:latest
      args:
        - --include-system-metrics

OpsTree Redis ਆਪਰੇਟਰ

OpsTree ਆਪਰੇਟਰ Redis ਸੈਂਟੀਨੇਲ (ਸਟੈਂਡਅਲੋਨ HA) ਅਤੇ Redis ਕਲੱਸਟਰ (ਸ਼ਰਡਡ HA) ਟੋਪੋਲੋਜੀ ਦੋਵਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ, ਇਸ ਨੂੰ ਵੱਖ-ਵੱਖ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਲਈ ਵਧੇਰੇ ਬਹੁਮੁਖੀ ਬਣਾਉਂਦਾ ਹੈ।

# Install the OpsTree Redis Operator
helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/
helm install redis-operator ot-helm/redis-operator \
  --namespace redis-system --create-namespace

# Redis Cluster CRD — 3 masters + 3 replicas
apiVersion: redis.redis.opstreelabs.in/v1beta2
kind: RedisCluster
metadata:
  name: redis-cluster
  namespace: production
spec:
  clusterSize: 3
  clusterVersion: v7
  persistenceEnabled: true
  kubernetesConfig:
    image: redis:7.2-alpine
    imagePullPolicy: IfNotPresent
    resources:
      requests:
        cpu: "2"
        memory: 8Gi
      limits:
        cpu: "4"
        memory: 16Gi
  redisLeader:
    replicas: 3
    redisConfig:
      additionalRedisConfig: |
        maxmemory 6gb
        maxmemory-policy allkeys-lru
        appendonly yes
        appendfsync everysec
  redisFollower:
    replicas: 3
    redisConfig:
      additionalRedisConfig: |
        maxmemory 6gb
        replica-read-only yes
  storage:
    volumeClaimTemplate:
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 50Gi
        storageClassName: longhorn
  redisExporter:
    enabled: true
    image: quay.io/opstree/redis-exporter:v1.44.0

Redis ਐਂਟਰਪ੍ਰਾਈਜ਼ ਓਪਰੇਟਰ

Redis ਐਂਟਰਪ੍ਰਾਈਜ਼ ਇੱਕ ਵਪਾਰਕ Kubernetes ਆਪਰੇਟਰ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਸਰਗਰਮ-ਐਕਟਿਵ ਜੀਓ-ਰਿਪਲੀਕੇਸ਼ਨ (CRDTs), Redis ਮੋਡੀਊਲ ਸਪੋਰਟ, ਆਟੋ-ਟੀਅਰਿੰਗ (RAM + ਫਲੈਸ਼), ਅਤੇ ਆਟੋਮੇਟਿਡ ਕਲੱਸਟਰ ਪ੍ਰਬੰਧਨ ਸ਼ਾਮਲ ਹਨ। ਇਹ ਉਹਨਾਂ ਸੰਸਥਾਵਾਂ ਲਈ ਸਿਫਾਰਿਸ਼ ਕੀਤਾ ਵਿਕਲਪ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਐਂਟਰਪ੍ਰਾਈਜ਼-ਗ੍ਰੇਡ SLAs ਅਤੇ ਸਹਾਇਤਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

# Redis Enterprise Operator CRD
apiVersion: app.redislabs.com/v1
kind: RedisEnterpriseCluster
metadata:
  name: redis-enterprise
  namespace: redis-enterprise
spec:
  nodes: 3
  persistentSpec:
    enabled: true
    storageClassName: longhorn
    volumeSize: 100Gi
  redisEnterpriseNodeResources:
    limits:
      cpu: "8"
      memory: 32Gi
    requests:
      cpu: "4"
      memory: 16Gi
  uiServiceType: ClusterIP
  servicesRiggerSpec:
    databaseServiceType: ClusterIP
---
apiVersion: app.redislabs.com/v1alpha1
kind: RedisEnterpriseDatabase
metadata:
  name: redis-ha-db
  namespace: redis-enterprise
spec:
  memorySize: 10GB
  replication: true
  shardCount: 3
  persistence: aofEverySecond
  tlsMode: enabled
  modulesList:
    - name: search
      version: latest
    - name: json
      version: latest

ਸਥਿਰਤਾ ਰਣਨੀਤੀਆਂ: RDB, AOF, ਅਤੇ ਹਾਈਬ੍ਰਿਡ

Redis ਤਿੰਨ ਸਥਿਰਤਾ ਵਿਧੀਆਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ। ਸਹੀ ਰਣਨੀਤੀ ਚੁਣਨਾ ਤੁਹਾਡੇ ਰਿਕਵਰੀ ਪੁਆਇੰਟ ਉਦੇਸ਼ (RPO), ਪ੍ਰਦਰਸ਼ਨ ਦੀਆਂ ਜ਼ਰੂਰਤਾਂ, ਅਤੇ ਸਟੋਰੇਜ ਦੀਆਂ ਰੁਕਾਵਟਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ।

RDB ਸਨੈਪਸ਼ਾਟਕੌਂਫਿਗਰ ਕੀਤੇ ਅੰਤਰਾਲਾਂ 'ਤੇ ਪੂਰੇ ਡੇਟਾਸੈਟ ਦੇ ਪੁਆਇੰਟ-ਇਨ-ਟਾਈਮ ਸਨੈਪਸ਼ਾਟ ਬਣਾਉਂਦੇ ਹਨ। ਉਹ ਸੰਖੇਪ ਹਨ, ਰੀਸਟਾਰਟ ਹੋਣ 'ਤੇ ਲੋਡ ਕਰਨ ਲਈ ਤੇਜ਼, ਅਤੇ ਬੈਕਅੱਪ ਲਈ ਆਦਰਸ਼ ਹਨ। ਹਾਲਾਂਕਿ, ਸਨੈਪਸ਼ਾਟ ਦੇ ਵਿਚਕਾਰ ਲਿਖਿਆ ਡੇਟਾ ਕਰੈਸ਼ ਹੋਣ 'ਤੇ ਖਤਮ ਹੋ ਜਾਂਦਾ ਹੈ। RDB ਇੱਕ ਫੋਰਕਡ ਚਾਈਲਡ ਪ੍ਰਕਿਰਿਆ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਇਸਲਈ ਸਨੈਪਸ਼ਾਟ ਬਣਾਉਣਾ ਮੁੱਖ Redis ਥ੍ਰੈਡ ਨੂੰ ਬਲੌਕ ਨਹੀਂ ਕਰਦਾ — ਪਰ ਫੋਰਕ ਆਪਣੇ ਆਪ ਵਿੱਚ ਕਾਪੀ-ਆਨ-ਰਾਈਟ ਮੈਮੋਰੀ ਵੰਡ ਦੇ ਕਾਰਨ ਵੱਡੇ ਡੇਟਾਸੈਟਾਂ 'ਤੇ ਲੇਟੈਂਸੀ ਸਪਾਈਕ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦਾ ਹੈ।

AOF (ਸਿਰਫ਼ ਫਾਈਲ ਸ਼ਾਮਲ ਕਰੋ)ਹਰ ਲਿਖਣ ਦੀ ਕਾਰਵਾਈ ਨੂੰ ਡਿਸਕ 'ਤੇ ਲੌਗ ਕਰਦਾ ਹੈ। ਇਹ RDB ਨਾਲੋਂ ਬਹੁਤ ਵਧੀਆ ਟਿਕਾਊਤਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ —appendfsync everysecਦੇ ਨਾਲ, ਤੁਸੀਂ ਕਰੈਸ਼ ਹੋਣ 'ਤੇ ਵੱਧ ਤੋਂ ਵੱਧ ਇੱਕ ਸਕਿੰਟ ਡਾਟਾ ਗੁਆ ਦਿੰਦੇ ਹੋ।appendfsync alwaysਦੇ ਨਾਲ, ਤੁਸੀਂ ਕੁਝ ਵੀ ਨਹੀਂ ਗੁਆਉਂਦੇ ਹੋ, ਪਰ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਪ੍ਰਦਰਸ਼ਨ ਲਾਗਤ 'ਤੇ। AOF ਫਾਈਲਾਂ RDB ਤੋਂ ਵੱਡੀਆਂ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਰੀਸਟਾਰਟ ਹੋਣ 'ਤੇ ਲੋਡ ਹੋਣ ਲਈ ਹੌਲੀ ਹੁੰਦੀਆਂ ਹਨ।

ਹਾਈਬ੍ਰਿਡ ਸਥਿਰਤਾ(ਸਿਫਾਰਸ਼ੀ ਪਹੁੰਚ) ਦੋਵਾਂ ਨੂੰ ਜੋੜਦਾ ਹੈ:aof-use-rdb-preamble yesAOF ਫਾਈਲ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਇੱਕ RDB ਸਨੈਪਸ਼ਾਟ ਲਿਖਦਾ ਹੈ, ਇਸ ਤੋਂ ਬਾਅਦ ਅਗਲੀਆਂ ਲਿਖਤਾਂ ਲਈ AOF ਐਂਟਰੀਆਂ। ਇਹ ਮਜ਼ਬੂਤ ​​​​ਟਿਕਾਊਤਾ (AOF ਸੈਕਸ਼ਨ) ਦੇ ਨਾਲ ਤੇਜ਼ ਸ਼ੁਰੂਆਤੀ ਸਮਾਂ (RDB ਸੈਕਸ਼ਨ) ਦਿੰਦਾ ਹੈ।

# redis.conf — Hybrid persistence (recommended for production)

# RDB snapshots
save 900 1          # Snapshot if at least 1 write in 900 seconds
save 300 10         # Snapshot if at least 10 writes in 300 seconds
save 60 10000       # Snapshot if at least 10000 writes in 60 seconds
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis

# AOF
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec           # Best balance of durability and performance
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-use-rdb-preamble yes       # Hybrid: RDB preamble + AOF tail
aof-timestamp-enabled yes      # Enable timestamps for PITR (Redis 7+)

# Recovery options
rdb-del-sync-files no
aof-load-truncated yes

ਕਲਾਊਡ-ਪ੍ਰਬੰਧਿਤ Redis ਤੈਨਾਤੀਆਂ

Redisਲਈ

AWS ਇਲਾਸਟਿਕ ਕੈਚ

AWS ElastiCache ਦੋ HA ਮੋਡਾਂ ਦੇ ਨਾਲ ਪੂਰੀ ਤਰ੍ਹਾਂ ਨਾਲ ਪ੍ਰਬੰਧਿਤ Redis ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ:ਕਲੱਸਟਰ ਮੋਡ ਅਸਮਰੱਥ(ਸਿੰਗਲ ਸ਼ਾਰਡ, 5 ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਤੱਕ, ਸੈਂਟੀਨੇਲ-ਵਰਗੇ ਫੇਲਓਵਰ) ਅਤੇਕਲੱਸਟਰ ਮੋਡ ਸਮਰਥਿਤ (ਹਰੇਕ ਵਿੱਚ XTAG0500 ਤੱਕ,

ਤੱਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ, ਹੈਸ਼ ਸਲਾਟ ਵੰਡ)। ਗਲੋਬਲ ਡੇਟਾਸਟੋਰ ਆਫ਼ਤ ਰਿਕਵਰੀ ਲਈ ਅੰਤਰ-ਖੇਤਰ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

# AWS CLI — Create ElastiCache Redis Cluster Mode Enabled
aws elasticache create-replication-group \
  --replication-group-id redis-ha-prod \
  --replication-group-description "Production Redis HA Cluster" \
  --engine redis \
  --engine-version 7.1 \
  --cache-node-type cache.r7g.2xlarge \
  --num-node-groups 3 \
  --replicas-per-node-group 2 \
  --automatic-failover-enabled \
  --multi-az-enabled \
  --at-rest-encryption-enabled \
  --transit-encryption-enabled \
  --auth-token strong_auth_token \
  --cache-subnet-group-name redis-subnet-group \
  --security-group-ids sg-0123456789abcdef0 \
  --snapshot-retention-limit 7 \
  --snapshot-window "03:00-05:00" \
  --preferred-maintenance-window "sun:05:00-sun:07:00" \
  --cache-parameter-group-name redis-ha-params \
  --log-delivery-configurations '[
    {"LogType":"slow-log","DestinationType":"cloudwatch-logs","DestinationDetails":{"CloudWatchLogsDetails":{"LogGroup":"/aws/elasticache/redis-ha-prod"}}},
    {"LogType":"engine-log","DestinationType":"cloudwatch-logs","DestinationDetails":{"CloudWatchLogsDetails":{"LogGroup":"/aws/elasticache/redis-ha-prod"}}}
  ]'

# Create Global Datastore for cross-region DR
aws elasticache create-global-replication-group \
  --global-replication-group-id-suffix redis-global \
  --primary-replication-group-id redis-ha-prod

# Add secondary region
aws elasticache create-replication-group \
  --replication-group-id redis-ha-dr \
  --replication-group-description "DR Redis in eu-west-2" \
  --global-replication-group-id ldgnf-redis-global \
  --cache-node-type cache.r7g.2xlarge \
  --num-node-groups 3 \
  --replicas-per-node-group 1 \
  --region eu-west-2

# Custom parameter group for HA tuning
aws elasticache create-cache-parameter-group \
  --cache-parameter-group-name redis-ha-params \
  --cache-parameter-group-family redis7 \
  --description "HA-optimised Redis 7 parameters"

aws elasticache modify-cache-parameter-group \
  --cache-parameter-group-name redis-ha-params \
  --parameter-name-values \
    "ParameterName=maxmemory-policy,ParameterValue=allkeys-lru" \
    "ParameterName=timeout,ParameterValue=300" \
    "ParameterName=tcp-keepalive,ParameterValue=60" \
    "ParameterName=activedefrag,ParameterValue=yes"
Redis

ਲਈ

Azure ਕੈਸ਼ Redis ਲਈ

Azure ਕੈਸ਼ ਤਿੰਨ ਪੱਧਰ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ: ਬੇਸਿਕ (ਕੋਈ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਨਹੀਂ), ਸਟੈਂਡਰਡ (ਦੁਹਰਾਇਆ), ਅਤੇ ਪ੍ਰੀਮੀਅਮ/ਐਂਟਰਪ੍ਰਾਈਜ਼। ਪ੍ਰੀਮੀਅਮ ਟੀਅਰ ਕਲੱਸਟਰਿੰਗ, ਜੀਓ-ਰਿਪਲੀਕੇਸ਼ਨ, ਜ਼ੋਨ ਰਿਡੰਡੈਂਸੀ, VNet ਇੰਜੈਕਸ਼ਨ, ਅਤੇ ਡਾਟਾ ਸਥਿਰਤਾ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਐਂਟਰਪ੍ਰਾਈਜ਼ ਟੀਅਰ Redis ਮੋਡੀਊਲ ਅਤੇ ਐਕਟਿਵ-ਐਕਟਿਵ ਜੀਓ-ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ ਨੂੰ ਜੋੜਦਾ ਹੈ।

# Azure CLI — Create Premium Azure Cache for Redis with clustering
az redis create \
  --resource-group redis-ha-rg \
  --name redis-ha-prod \
  --location westeurope \
  --sku Premium \
  --vm-size P3 \
  --shard-count 3 \
  --replicas-per-master 1 \
  --zones 1 2 3 \
  --minimum-tls-version 1.2 \
  --redis-version 7

# Enable geo-replication (link primary to secondary)
az redis server-link create \
  --name redis-ha-prod \
  --resource-group redis-ha-rg \
  --server-to-link /subscriptions/.../redis-ha-dr \
  --replication-role Secondary

# Configure data persistence
az redis update \
  --name redis-ha-prod \
  --resource-group redis-ha-rg \
  --set redisConfiguration.rdb-backup-enabled=true \
  --set redisConfiguration.rdb-backup-frequency=60 \
  --set redisConfiguration.rdb-storage-connection-string="DefaultEndpointsProtocol=https;..."

# Enable diagnostics
az monitor diagnostic-settings create \
  --name redis-diagnostics \
  --resource /subscriptions/.../redis-ha-prod \
  --workspace /subscriptions/.../log-analytics-workspace \
  --metrics '[{"category":"AllMetrics","enabled":true}]'
Redis

ਲਈ

GCP ਮੈਮੋਰੀਸਟੋਰ

GCP ਦੋ ਮੈਮੋਰੀਸਟੋਰ ਟੀਅਰਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ:ਸਟੈਂਡਰਡ(ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੇ ਨਾਲ ਸਿੰਗਲ ਉਦਾਹਰਨ) ਅਤੇRedis ਕਲੱਸਟਰ(ਆਟੋਮੈਟਿਕ ਸਕੇਲਿੰਗ ਦੇ ਨਾਲ ਸ਼ਾਰਡ, ਪੂਰੀ ਤਰ੍ਹਾਂ ਪ੍ਰਬੰਧਿਤ ਕਲੱਸਟਰ)। ਸਟੈਂਡਰਡ ਟੀਅਰ ਜ਼ਿਆਦਾਤਰ HA ਵਰਤੋਂ ਦੇ ਕੇਸਾਂ ਲਈ ਢੁਕਵਾਂ ਹੈ, ਜਦੋਂ ਕਿ Redis ਕਲੱਸਟਰ ਵੱਡੇ ਡੇਟਾਸੇਟਾਂ ਨੂੰ ਹੈਂਡਲ ਕਰਦਾ ਹੈ ਜਿਸ ਲਈ ਹਰੀਜੱਟਲ ਸਕੇਲਿੰਗ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

# GCP — Create Standard tier Memorystore (HA with auto-failover)
gcloud redis instances create redis-ha-prod \
  --size=26 \
  --region=europe-west1 \
  --zone=europe-west1-b \
  --alternative-zone=europe-west1-c \
  --tier=standard \
  --redis-version=redis_7_2 \
  --redis-config="maxmemory-policy=allkeys-lru,activedefrag=yes" \
  --network=projects/my-project/global/networks/vpc-main \
  --transit-encryption-mode=SERVER_AUTHENTICATION \
  --enable-auth \
  --persistence-mode=RDB \
  --rdb-snapshot-period=12h \
  --rdb-snapshot-start-time="2026-04-12T03:00:00Z" \
  --maintenance-window-day=SUNDAY \
  --maintenance-window-hour=4

# GCP — Create Memorystore Redis Cluster
gcloud redis clusters create redis-cluster-prod \
  --region=europe-west1 \
  --shard-count=3 \
  --replica-count=1 \
  --network=projects/my-project/global/networks/vpc-main \
  --transit-encryption-mode=SERVER_AUTHENTICATION

ਬਹੁ-ਖੇਤਰ Redis ਤੈਨਾਤੀ

ਮਲਟੀ-ਰੀਜਨ Redis ਡਿਪਲਾਇਮੈਂਟ ਆਫ਼ਤ ਰਿਕਵਰੀ ਅਤੇ ਗਲੋਬਲ ਲੇਟੈਂਸੀ ਘਟਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। ਆਰਕੀਟੈਕਚਰ ਦੁਆਰਾ ਪਹੁੰਚ ਵੱਖ-ਵੱਖ ਹੁੰਦੀ ਹੈ: Redis ਐਂਟਰਪ੍ਰਾਈਜ਼ ਅਸਲੀ ਮਲਟੀ-ਮਾਸਟਰ ਰਾਈਟਸ ਲਈ CRDTs (ਅਪਵਾਦ-ਮੁਕਤ ਰਿਪਲੀਕੇਟਡ ਡੇਟਾ ਕਿਸਮਾਂ) ਦੇ ਨਾਲ ਐਕਟਿਵ-ਐਕਟਿਵ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਓਪਨ-ਸਰੋਤ Redis ਅਤੇ ਕਲਾਉਡ-ਪ੍ਰਬੰਧਿਤ ਸੇਵਾਵਾਂ ਸੈਕੰਡਰੀ ਖੇਤਰਾਂ ਵਿੱਚ ਰੀਡ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਦੇ ਨਾਲ ਕਿਰਿਆਸ਼ੀਲ-ਪੈਸਿਵ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ।

ਮਲਟੀ-ਰੀਜਨ Redis ਡਿਪਲਾਇਮੈਂਟ — ਐਕਟਿਵ-ਐਕਟਿਵ & ਅੰਤਰ-ਖੇਤਰ ਪ੍ਰਤੀਕ੍ਰਿਤੀਖੇਤਰ 1 — AWS us-east-1ElastiCache ਪ੍ਰਾਇਮਰੀ3 ਸ਼ਾਰਡਸ — ਕਲੱਸਟਰ ਮੋਡ ਸਮਰਥਿਤ2 ਰੀਪਲੀਕੇਸ ਪ੍ਰਤੀ ਸ਼ਾਰਡਪੜ੍ਹੋਮਲਟੀ-AZ ਆਟੋ-ਫੇਲਓਵਰਰੀਡਰ ਐਂਡਪੁਆਇੰਟ (ਰਾਊਂਡ-ਰੋਬਿਨ ਰੀਡਜ਼)ਗਲੋਬਲ ਡਾਟਾਸਟੋਰ — ਪ੍ਰਾਇਮਰੀ ਖੇਤਰਖੇਤਰ 2 — Azure ਵੈਸਟਯੂਰੋਪAzure ਕੈਸ਼ ਪ੍ਰੀਮੀਅਮ3 ਸ਼ਾਰਡਸ — ਜ਼ੋਨ ਰਿਡੰਡੈਂਟ1 ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਪ੍ਰਤੀ ਸ਼ਾਰਡਜ਼ੋਨ 1, 2, 3ਜੀਓ-ਰਿਪਲੀਕੇਸ਼ਨ ਪ੍ਰਾਇਮਰੀਨਾਲ ਲਿੰਕ ਕੀਤਾ ਗਿਆਪੈਸਿਵ ਜੀਓ-ਰਿਪਲੀਕਾ — ਅਸਿੰਕ ਸਿੰਕਖੇਤਰ 3 — GCP asia-east1ਮੈਮੋਰੀਸਟੋਰ ਸਟੈਂਡਰਡਸਿੰਗਲ ਸ਼ਾਰਡ — ਆਟੋ-ਫੇਲਓਵਰHA ਪ੍ਰਤੀਕ੍ਰਿਤੀ (ਕਰਾਸ-ਜ਼ੋਨ)RDB ਸਥਿਰਤਾ ਸਮਰਥਿਤਖੇਤਰ 1ਤੋਂਐਪ-ਪੱਧਰ ਦੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀਸਿਰਫ਼ ਪੜ੍ਹਨ ਲਈ ਗਰਮ ਸਟੈਂਡਬਾਏਅਸਿੰਕ ਜੀਓ-ਰਿਪਲਅਸਿੰਕ ਕਰਾਸ-ਰੀਜਨ ਪ੍ਰਤੀਕ੍ਰਿਤੀRedis ਐਂਟਰਪ੍ਰਾਈਜ਼ ਐਕਟਿਵ-ਐਕਟਿਵ (CRDT-ਅਧਾਰਿਤ ਮਲਟੀ-ਮਾਸਟਰ)CRDB ਉਦਾਹਰਨ AUS — R/W (ਪੂਰੀ ਸਥਾਨਕ ਗਤੀ)CRDB ਇੰਸਟੈਂਸ BEU — R/W (ਪੂਰੀ ਸਥਾਨਕ ਗਤੀ)CRDB ਇੰਸਟੈਂਸ CAPAC — R/W (ਪੂਰੀ ਸਥਾਨਕ ਗਤੀ)CRDT ਸਿੰਕ — ਕਾਊਂਟਰ, ਸੈੱਟ, ਸਤਰਖੇਤਰਾਂ ਵਿੱਚ ਵਿਵਾਦ-ਮੁਕਤ ਮਿਲਾਉਂਦੇ ਹਨਗਲੋਬਲ DNS / ਟ੍ਰੈਫਿਕ ਰੂਟਿੰਗ (ਲੇਟੈਂਸੀ-ਅਧਾਰਿਤ)ਦੰਤਕਥਾ:ਮਾਸਟਰ/ਪ੍ਰਾਇਮਰੀਪ੍ਰਤੀਕ੍ਰਿਤੀਅਸਿੰਕ ਕਰਾਸ-ਰੀਜਨਐਕਟਿਵ-ਐਕਟਿਵ CRDBRPO: ਕਿਰਿਆਸ਼ੀਲ-ਪੈਸਿਵ ≈ ਸਕਿੰਟ ਦਾ ਪਛੜ | ਐਕਟਿਵ-ਐਕਟਿਵ CRDT ≈ ਜ਼ੀਰੋ ਡਾਟਾ ਨੁਕਸਾਨ (ਅੰਤ ਵਿੱਚ ਇਕਸਾਰਤਾ)ਲੌਂਗਹੋਰਨਦੇ ਨਾਲ

ਬੇਅਰ ਮੈਟਲ k3s/ਰੈਂਚਰ

ਆਪਣੇ ਖੁਦ ਦੇ ਹਾਰਡਵੇਅਰ ਚਲਾਉਣ ਵਾਲੀਆਂ ਸੰਸਥਾਵਾਂ ਲਈ, Redis HA ਨੂੰ ਬੇਅਰ ਮੈਟਲ k3s 'ਤੇ ਤੈਨਾਤ ਕਰਨਾ ਬੁਨਿਆਦੀ ਢਾਂਚੇ 'ਤੇ ਪੂਰਾ ਨਿਯੰਤਰਣ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਕਲਾਉਡ ਵਿਕਰੇਤਾ ਲਾਕ-ਇਨ ਨੂੰ ਖਤਮ ਕਰਦਾ ਹੈ, ਅਤੇ ਵੱਡੇ ਪੈਮਾਨੇ ਦੀਆਂ ਤੈਨਾਤੀਆਂ ਲਈ ਕਾਫ਼ੀ ਜ਼ਿਆਦਾ ਲਾਗਤ-ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੋ ਸਕਦਾ ਹੈ। k3s ਇੱਕ ਹਲਕਾ, ਪ੍ਰਮਾਣਿਤ Kubernetes ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ ਕਿਨਾਰੇ ਅਤੇ ਬੇਅਰ ਮੈਟਲ ਵਾਤਾਵਰਨ ਲਈ ਆਦਰਸ਼ ਹੈ, ਜਦੋਂ ਕਿ ਰੈਂਚਰ ਮਲਟੀ-ਕਲੱਸਟਰ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਇੱਕ ਪ੍ਰਬੰਧਨ ਜਹਾਜ਼ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

ਬੇਅਰ ਮੈਟਲ k3s + ਰੈਂਚਰ — Redis HA ਸੈਂਟੀਨੇਲ ਆਪਰੇਟਰਨਾਲਰੈਂਚਰ ਮੈਨੇਜਮੈਂਟ UIਕਲੱਸਟਰ ਲਾਈਫਸਾਈਕਲ + ਨਿਗਰਾਨੀMetalLB ਲੋਡ ਬੈਲੈਂਸਰVIP: 10.0.0.50 (redis-master) & 10.0.0.51 (ਰੀਡਿਸ-ਰੀਡ)k3s ਕਲੱਸਟਰ - 3 ਸਰਵਰ ਨੋਡਸ (ਬੇਅਰ ਮੈਟਲ)Redis ਆਪਰੇਟਰ (Spotahome/OpsTree)ਨੋਡ 1 — bare-metal-srv1Redis ਮਾਸਟਰ ਪੋਡStatefulSet redis-ha-0 :6379ਸੈਂਟੀਨੇਲ ਪੋਡ :26379Longhorn PVC (AOF + RDB)50Gi — 3x ਨੋਡਾਂ ਵਿੱਚ ਦੁਹਰਾਇਆ ਗਿਆਰੀਡਿਸ-ਐਕਸਪੋਰਟਰ ਸਾਈਡਕਾਰ :9121Prometheus ਮੈਟ੍ਰਿਕਸNVMe SSD — 2TB ਲੋਕਲ ਡਿਸਕਨੋਡ 2 — bare-metal-srv2Redis ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਪੋਡStatefulSet redis-ha-1 :6379ਸੈਂਟੀਨੇਲ ਪੋਡ :26379Longhorn PVC (AOF + RDB)50Gi — 3x ਨੋਡਾਂ ਵਿੱਚ ਦੁਹਰਾਇਆ ਗਿਆਰੀਡਿਸ-ਐਕਸਪੋਰਟਰ ਸਾਈਡਕਾਰ :9121Prometheus ਮੈਟ੍ਰਿਕਸNVMe SSD — 2TB ਲੋਕਲ ਡਿਸਕਨੋਡ 3 — bare-metal-srv3Redis ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਪੋਡStatefulSet redis-ha-2 :6379ਸੈਂਟੀਨੇਲ ਪੋਡ :26379Longhorn PVC (AOF + RDB)50Gi — 3x ਨੋਡਾਂ ਵਿੱਚ ਦੁਹਰਾਇਆ ਗਿਆਰੀਡਿਸ-ਐਕਸਪੋਰਟਰ ਸਾਈਡਕਾਰ :9121Prometheus ਮੈਟ੍ਰਿਕਸNVMe SSD — 2TB ਲੋਕਲ ਡਿਸਕਦੰਤਕਥਾ:ਮਾਸਟਰਪ੍ਰਤੀਕ੍ਰਿਤੀਸੈਂਟੀਨੇਲਲੋਂਗਹੋਰਨ PVCਐਕਸਪੋਰਟਰMetalLBਆਪਰੇਟਰਰੈਂਚਰk3s ਹਲਕੇ Kubernetes ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। Longhorn NVMe SSDs ਵਿੱਚ 3x ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੇ ਨਾਲ ਵੰਡਿਆ ਬਲਾਕ ਸਟੋਰੇਜ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।MetalLB Redis ਮਾਸਟਰ (ਰਾਈਟ) ਅਤੇ Redis ਰੀਡ (ਰਿਪਲੀਕਾਜ਼) ਸੇਵਾਵਾਂ ਲਈ ਸਥਿਰ ਲੋਡਬੈਲੈਂਸਰ ਆਈਪੀ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ। ਰੈਂਚਰ ਕਲੱਸਟਰ ਲਾਈਫਸਾਈਕਲ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ।

k3s ਸਥਾਪਨਾ ਅਤੇ Redis ਆਪਰੇਟਰ ਤੈਨਾਤੀ

# Install k3s on the first server node
curl -sfL https://get.k3s.io | K3S_TOKEN=redis-cluster-token \
  INSTALL_K3S_EXEC="server --cluster-init --disable traefik --disable servicelb" sh -

# Join additional server nodes
curl -sfL https://get.k3s.io | K3S_TOKEN=redis-cluster-token \
  K3S_URL=https://10.0.0.1:6443 \
  INSTALL_K3S_EXEC="server" sh -

# Install Longhorn for distributed block storage
helm repo add longhorn https://charts.longhorn.io
helm install longhorn longhorn/longhorn \
  --namespace longhorn-system --create-namespace \
  --set defaultSettings.defaultDataPath=/mnt/longhorn \
  --set defaultSettings.replicaCount=3 \
  --set defaultSettings.storageMinimalAvailablePercentage=15

# Install MetalLB for bare-metal LoadBalancer services
helm repo add metallb https://metallb.github.io/metallb
helm install metallb metallb/metallb --namespace metallb-system --create-namespace

# Configure MetalLB IP address pool
kubectl apply -f - <
k3sਲਈ

Redis HA Helm ਮੁੱਲ
# values-redis-ha.yaml — Helm values for Redis HA on k3s/Longhorn
redis:
  replicas: 3
  resources:
    requests:
      cpu: "2"
      memory: 8Gi
    limits:
      cpu: "4"
      memory: 16Gi
  storage:
    persistentVolumeClaim:
      metadata:
        name: redis-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 50Gi
        storageClassName: longhorn
  customConfig:
    maxmemory: "6gb"
    maxmemory-policy: "allkeys-lru"
    save: "900 1 300 10 60 10000"
    appendonly: "yes"
    appendfsync: "everysec"
    aof-use-rdb-preamble: "yes"
    repl-backlog-size: "256mb"
    tcp-keepalive: "60"
    timeout: "300"
    hz: "10"
    activedefrag: "yes"
  exporter:
    enabled: true
    image: oliver006/redis_exporter:latest

sentinel:
  replicas: 3
  resources:
    requests:
      cpu: 100m
      memory: 128Mi
    limits:
      cpu: 200m
      memory: 256Mi
  customConfig:
    down-after-milliseconds: "5000"
    failover-timeout: "60000"
    parallel-syncs: "1"

affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
            - key: app.kubernetes.io/component
              operator: In
              values:
                - redis
        topologyKey: kubernetes.io/hostname

ਮੈਮੋਰੀ ਪ੍ਰਬੰਧਨ ਅਤੇ ਬੇਦਖਲੀ ਨੀਤੀਆਂ

Redis ਮੈਮੋਰੀ ਵਿੱਚ ਸਾਰਾ ਡਾਟਾ ਸਟੋਰ ਕਰਦਾ ਹੈ, ਮੈਮੋਰੀ ਪ੍ਰਬੰਧਨ ਨੂੰ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਕਾਰਜਸ਼ੀਲ ਚਿੰਤਾ ਬਣਾਉਂਦਾ ਹੈ। ਜਦੋਂ Redis ਸੰਰਚਿਤmaxmemoryਸੀਮਾ 'ਤੇ ਪਹੁੰਚ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਸ ਨੂੰ ਇਹ ਫੈਸਲਾ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਆਉਣ ਵਾਲੀਆਂ ਲਿਖਤ ਕਮਾਂਡਾਂ ਨਾਲ ਕੀ ਕਰਨਾ ਹੈ। ਬੇਦਖਲੀ ਨੀਤੀ ਇਸ ਵਿਵਹਾਰ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਦੀ ਹੈ।

# redis.conf — Memory management
maxmemory 6gb
maxmemory-policy allkeys-lru

# Available eviction policies:
# noeviction        — Return errors on writes when memory limit reached
# allkeys-lru       — Evict least recently used keys (general-purpose cache)
# allkeys-lfu       — Evict least frequently used keys (better for skewed access patterns)
# volatile-lru      — Evict LRU keys with TTL set
# volatile-lfu      — Evict LFU keys with TTL set
# volatile-ttl      — Evict keys with shortest TTL first
# allkeys-random    — Evict random keys
# volatile-random   — Evict random keys with TTL set

# Active defragmentation (Redis 4.0+)
activedefrag yes
active-defrag-enabled yes
active-defrag-ignore-bytes 100mb
active-defrag-threshold-lower 10
active-defrag-threshold-upper 100
active-defrag-cycle-min 1
active-defrag-cycle-max 25
active-defrag-max-scan-fields 1000

# Memory usage monitoring
# redis-cli INFO memory
# Key metrics:
#   used_memory           — Total bytes allocated by Redis
#   used_memory_rss       — Resident set size (OS-level memory)
#   mem_fragmentation_ratio — RSS / used_memory (should be close to 1.0)
#   maxmemory             — Configured memory limit
#   evicted_keys          — Total keys evicted due to maxmemory

HA ਤੈਨਾਤੀਆਂ ਲਈ,maxmemoryਨੂੰ ਨੋਡ ਦੀ ਉਪਲਬਧ RAM ਦੇ ਲਗਭਗ 75% 'ਤੇ ਸੈੱਟ ਕਰੋ। ਬਾਕੀ 25% ਰਿਪਲੀਕੇਸ਼ਨ ਆਉਟਪੁੱਟ ਬਫਰ, AOF ਰੀਰਾਈਟ ਬਫਰ, RDB ਸਨੈਪਸ਼ਾਟ ਦੇ ਦੌਰਾਨ ਕਾਪੀ-ਆਨ-ਰਾਈਟ ਮੈਮੋਰੀ, ਅਤੇ OS ਓਵਰਹੈੱਡ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਦਾ ਹੈ। 16GB ਪੌਡ ਲਈ, ਅਧਿਕਤਮ ਮੈਮੋਰੀ ਨੂੰ 12GB 'ਤੇ ਸੈੱਟ ਕਰੋ। ਇੱਕ 64GB ਬੇਅਰ ਮੈਟਲ ਸਰਵਰ ਲਈ, ਇਸਨੂੰ 48GB 'ਤੇ ਸੈੱਟ ਕਰੋ।

TLS ਇਨਕ੍ਰਿਪਸ਼ਨ ਅਤੇ ACLs

ਉਤਪਾਦਨ Redis ਤੈਨਾਤੀਆਂ ਨੂੰ TLS ਦੇ ਨਾਲ ਟ੍ਰਾਂਜ਼ਿਟ ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਐਨਕ੍ਰਿਪਟ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ Redis 6.0 ਵਿੱਚ ਪੇਸ਼ ਕੀਤੇ ACLs (ਐਕਸੈਸ ਕੰਟਰੋਲ ਲਿਸਟ) ਦੇ ਨਾਲ ਵਧੀਆ ਪਹੁੰਚ ਨਿਯੰਤਰਣ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।

# redis.conf — TLS configuration
tls-port 6380
port 0                            # Disable non-TLS port entirely
tls-cert-file /etc/redis/tls/redis.crt
tls-key-file /etc/redis/tls/redis.key
tls-ca-cert-file /etc/redis/tls/ca.crt
tls-auth-clients optional         # Require client certificates (mutual TLS)
tls-replication yes               # Encrypt replication traffic
tls-cluster yes                   # Encrypt cluster bus traffic
tls-protocols "TLSv1.3"           # Only allow TLS 1.3

# ACL configuration (Redis 6.0+)
# user  on|off [>password] [~pattern] [+command|-command] [&channel]
user default off                  # Disable the default user
user admin on >strong_admin_pass ~* +@all
user appuser on >app_pass ~app:* ~session:* ~cache:* +@read +@write +@connection -@admin -@dangerous
user readonly on >readonly_pass ~* +@read +@connection -@write -@admin
user replicator on >repl_pass +psync +replconf +ping

# Load ACL from external file
aclfile /etc/redis/users.acl
HA ਸੈੱਟਅੱਪਵਿੱਚ

ਪਬ/ਸਬ ਅਤੇ ਸਟ੍ਰੀਮਜ਼

Redis Pub/Sub ਅਤੇ ਸਟ੍ਰੀਮ HA ਸੰਰਚਨਾਵਾਂ ਵਿੱਚ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਵਿਹਾਰ ਕਰਦੇ ਹਨ। ਭਰੋਸੇਯੋਗ ਇਵੈਂਟ-ਸੰਚਾਲਿਤ ਸਿਸਟਮ ਬਣਾਉਣ ਲਈ ਇਹਨਾਂ ਅੰਤਰਾਂ ਨੂੰ ਸਮਝਣਾ ਜ਼ਰੂਰੀ ਹੈ।

Pub/Subਸੁਨੇਹੇ ਫਾਇਰ-ਐਂਡ-ਫਰਗੇਟ ਹੁੰਦੇ ਹਨ — ਉਹ ਨਿਰੰਤਰ ਨਹੀਂ ਹੁੰਦੇ, ਨਕਲ ਨਹੀਂ ਕੀਤੇ ਜਾਂਦੇ, ਅਤੇ ਬਫਰ ਨਹੀਂ ਹੁੰਦੇ। ਸੈਂਟੀਨੇਲ-ਅਧਾਰਿਤ HA ਸੈੱਟਅੱਪ ਵਿੱਚ, ਮਾਸਟਰ ਨਾਲ ਜੁੜੇ ਗਾਹਕ ਆਮ ਤੌਰ 'ਤੇ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਨ, ਪਰ ਇੱਕ ਫੇਲਓਵਰ ਦੇ ਦੌਰਾਨ, ਨਵੇਂ ਮਾਸਟਰ ਨੂੰ ਪਿਛਲੀਆਂ ਗਾਹਕੀਆਂ ਦਾ ਕੋਈ ਗਿਆਨ ਨਹੀਂ ਹੁੰਦਾ ਹੈ। ਗਾਹਕਾਂ ਨੂੰ ਮੁੜ ਕਨੈਕਟ ਕਰਨ ਤੋਂ ਬਾਅਦ ਦੁਬਾਰਾ ਗਾਹਕੀ ਲੈਣੀ ਚਾਹੀਦੀ ਹੈ। Redis ਕਲੱਸਟਰ ਦੇ ਨਾਲ, ਪਬ/ਸਬ ਸੁਨੇਹੇ ਕਲੱਸਟਰ ਦੇ ਸਾਰੇ ਨੋਡਾਂ 'ਤੇ ਪ੍ਰਸਾਰਿਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਇਸਲਈ ਕਿਸੇ ਵੀ ਨੋਡ ਨਾਲ ਜੁੜੇ ਗਾਹਕ ਪ੍ਰਕਾਸ਼ਿਤ ਸੰਦੇਸ਼ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਨ (ਹਾਲਾਂਕਿ ਇਹ ਅੰਤਰ-ਨੋਡ ਟ੍ਰੈਫਿਕ ਪੈਦਾ ਕਰਦਾ ਹੈ)।

Redis ਸਟ੍ਰੀਮਜ਼ਇੱਕ ਸਥਾਈ, ਪ੍ਰਤੀਕ੍ਰਿਤ ਡਾਟਾ ਢਾਂਚਾ ਹੈ ਜੋ HA ਵਾਤਾਵਰਨ ਵਿੱਚ ਭਰੋਸੇਯੋਗ ਸੁਨੇਹਾ ਡਿਲੀਵਰੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਸਟ੍ਰੀਮ ਐਂਟਰੀਆਂ ਨੂੰ ਸਧਾਰਣ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਵਿਧੀ ਦੁਆਰਾ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਲਈ ਦੁਹਰਾਇਆ ਜਾਂਦਾ ਹੈ, ਫੇਲਓਵਰਾਂ ਤੋਂ ਬਚਿਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਘੱਟੋ-ਘੱਟ-ਇੱਕ ਵਾਰ ਡਿਲੀਵਰੀ ਸਿਮੈਨਟਿਕਸ ਦੇ ਨਾਲ ਉਪਭੋਗਤਾ ਸਮੂਹਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। HA ਮੈਸੇਜਿੰਗ ਲਈ, ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਹਮੇਸ਼ਾ ਪਬ/ਸਬ ਨਾਲੋਂ ਤਰਜੀਹ ਦਿੱਤੀ ਜਾਣੀ ਚਾਹੀਦੀ ਹੈ।

# Redis Streams with consumer groups — HA-safe message processing

# Create a stream and consumer group
XGROUP CREATE events:orders orders-processors $ MKSTREAM

# Produce events
XADD events:orders * action "order_placed" order_id "12345" amount "599.99"
XADD events:orders * action "order_placed" order_id "12346" amount "149.99"

# Consume events (in consumer group — at-least-once delivery)
XREADGROUP GROUP orders-processors worker-1 COUNT 10 BLOCK 5000 STREAMS events:orders >

# Acknowledge processed events
XACK events:orders orders-processors 1681234567890-0

# Check pending messages (unacknowledged)
XPENDING events:orders orders-processors - + 10

# Claim abandoned messages (from a dead consumer)
XAUTOCLAIM events:orders orders-processors worker-2 60000 0-0 COUNT 10

# Trim stream to prevent unbounded growth
XTRIM events:orders MAXLEN ~ 100000
HA

ਵਿੱਚ

Redis ਮੋਡੀਊਲ

Redis ਮੋਡੀਊਲ Redis ਨੂੰ ਵਿਸ਼ੇਸ਼ ਡਾਟਾ ਢਾਂਚੇ ਅਤੇ ਕਾਰਜਸ਼ੀਲਤਾ ਨਾਲ ਵਿਸਤਾਰ ਕਰਦੇ ਹਨ। ਤਿੰਨ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ — RedisJSON, RediSearch, ਅਤੇ RedisTimeSeries — ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਅਤੇ ਸੈਂਟੀਨੇਲ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹਨ, ਪਰ HA ਤੈਨਾਤੀਆਂ ਵਿੱਚ ਖਾਸ ਵਿਚਾਰ ਹਨ।

# redis.conf — Loading modules
loadmodule /opt/redis-stack/lib/rejson.so
loadmodule /opt/redis-stack/lib/redisearch.so
loadmodule /opt/redis-stack/lib/redistimeseries.so

# Modules are replicated to replicas via the command stream
# Ensure the same modules are installed on all nodes (master + replicas)

# RedisJSON — store and query JSON documents
JSON.SET user:1001 $ '{"name":"Alice","email":"alice@example.com","orders":42}'
JSON.GET user:1001 $.name

# RediSearch — full-text search with indexing
FT.CREATE idx:users ON JSON PREFIX 1 user: SCHEMA $.name AS name TEXT $.email AS email TAG $.orders AS orders NUMERIC
FT.SEARCH idx:users "@name:Alice"

# RedisTimeSeries — time-series data
TS.CREATE metrics:cpu:node1 RETENTION 86400000 LABELS host node1 metric cpu
TS.ADD metrics:cpu:node1 * 73.5
TS.RANGE metrics:cpu:node1 - + AGGREGATION avg 60000

ਜਦੋਂ HA ਵਿੱਚ Redis ਸਟੈਕ (ਮੌਡਿਊਲ ਬੰਡਲ) ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸਾਰੇ ਨੋਡਸ — ਮਾਸਟਰ ਅਤੇ ਰਿਪਲੀਕਾ — ਵਿੱਚ ਇੱਕੋ ਜਿਹੇ ਮੋਡਿਊਲ ਸੰਸਕਰਣ ਸਥਾਪਤ ਹਨ। ਮੋਡੀਊਲ ਕਮਾਂਡਾਂ ਨੂੰ ਸਟੈਂਡਰਡ ਰੀਪਲੀਕੇਸ਼ਨ ਸਟ੍ਰੀਮ ਦੁਆਰਾ ਦੁਹਰਾਇਆ ਜਾਂਦਾ ਹੈ, ਇਸਲਈ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਉਹਨਾਂ ਨੂੰ ਚਲਾਉਣ ਦੇ ਯੋਗ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ। ਇੱਕ ਫੇਲਓਵਰ ਤੋਂ ਬਾਅਦ, RediSearch ਸੂਚਕਾਂਕ ਪ੍ਰਮੋਟ ਕੀਤੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀ 'ਤੇ ਮੌਜੂਦ ਹੁੰਦੇ ਹਨ ਅਤੇ ਤੁਰੰਤ ਪੁੱਛਗਿੱਛ ਕਰਦੇ ਹਨ।

HA

ਲਈ

ਕਨੈਕਸ਼ਨ ਪੂਲਿੰਗ ਅਤੇ ਕਲਾਇੰਟ ਕੌਂਫਿਗਰੇਸ਼ਨ

Redis HA ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਲਚਕੀਲੇਪਨ ਲਈ ਸਹੀ ਕਨੈਕਸ਼ਨ ਪੂਲਿੰਗ ਜ਼ਰੂਰੀ ਹੈ। ਕਨੈਕਸ਼ਨ ਪੂਲ TCP ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਦੇ ਓਵਰਹੈੱਡ ਨੂੰ ਘਟਾਉਂਦੇ ਹਨ, ਆਟੋਮੈਟਿਕ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਤਰਕ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ, ਅਤੇ ਸ਼ਾਨਦਾਰ ਫੇਲਓਵਰ ਹੈਂਡਲਿੰਗ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦੇ ਹਨ।

# Node.js — ioredis connection pool with cluster mode
const Redis = require('ioredis');

// Cluster mode connection
const cluster = new Redis.Cluster(
  [
    { host: '10.0.1.10', port: 7000 },
    { host: '10.0.1.11', port: 7000 },
    { host: '10.0.1.12', port: 7000 }
  ],
  {
    redisOptions: {
      password: 'cluster_password',
      connectTimeout: 10000,
      maxRetriesPerRequest: 3
    },
    scaleReads: 'slave',           // Route reads to replicas
    clusterRetryStrategy(times) {
      return Math.min(times * 200, 5000);
    },
    slotsRefreshTimeout: 2000,
    slotsRefreshInterval: 5000,
    enableOfflineQueue: true,
    enableReadyCheck: true,
    natMap: {}                     // For NAT/port-forwarded environments
  }
);

cluster.on('error', (err) => console.error('Cluster error:', err));
cluster.on('node error', (err, address) => {
  console.error(`Node ${address} error:`, err);
});
# Python — redis-py connection pool with cluster mode
from redis.cluster import RedisCluster
from redis.backoff import ExponentialBackoff
from redis.retry import Retry

retry = Retry(ExponentialBackoff(cap=5, base=0.1), retries=5)

rc = RedisCluster(
    startup_nodes=[
        {"host": "10.0.1.10", "port": 7000},
        {"host": "10.0.1.11", "port": 7000},
        {"host": "10.0.1.12", "port": 7000}
    ],
    password="cluster_password",
    decode_responses=True,
    read_from_replicas=True,
    retry=retry,
    retry_on_timeout=True,
    socket_timeout=5,
    socket_connect_timeout=5,
    max_connections=50,
    health_check_interval=30
)

rc.set("key", "value")
print(rc.get("key"))
// Go — go-redis cluster client with connection pooling
package main

import (
    "context"
    "time"

    "github.com/redis/go-redis/v9"
)

func NewRedisCluster() *redis.ClusterClient {
    return redis.NewClusterClient(&redis.ClusterOptions{
        Addrs: []string{
            "10.0.1.10:7000",
            "10.0.1.11:7000",
            "10.0.1.12:7000",
        },
        Password:         "cluster_password",
        ReadOnly:         true,
        RouteRandomly:    true,
        RouteByLatency:   false,
        PoolSize:         50,
        MinIdleConns:     10,
        DialTimeout:      10 * time.Second,
        ReadTimeout:      5 * time.Second,
        WriteTimeout:     5 * time.Second,
        PoolTimeout:      10 * time.Second,
        MaxRetries:       5,
        MinRetryBackoff:  200 * time.Millisecond,
        MaxRetryBackoff:  5 * time.Second,
    })
}

ਬੈਕਅੱਪ ਅਤੇ ਰੀਸਟੋਰ ਰਣਨੀਤੀਆਂ

HA ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੇ ਨਾਲ ਵੀ, ਨਿਯਮਤ ਬੈਕਅੱਪ ਆਫ਼ਤ ਰਿਕਵਰੀ, ਪਾਲਣਾ, ਅਤੇ ਲਾਜ਼ੀਕਲ ਗਲਤੀਆਂ (ਦੁਰਘਟਨਾਤਮਕ FLUSHALL, ਖਰਾਬ ਐਪਲੀਕੇਸ਼ਨ ਰਾਈਟਸ) ਤੋਂ ਸੁਰੱਖਿਆ ਲਈ ਜ਼ਰੂਰੀ ਹਨ। Redis ਬੈਕਅੱਪ RDB ਸਨੈਪਸ਼ਾਟ ਅਤੇ AOF ਫ਼ਾਈਲਾਂ 'ਤੇ ਆਧਾਰਿਤ ਹਨ।

#!/bin/bash
# redis-backup.sh — Automated Redis backup script

REDIS_HOST="10.0.1.10"
REDIS_PORT="6379"
REDIS_PASS="strong_master_password"
BACKUP_DIR="/backups/redis"
S3_BUCKET="s3://redis-backups-prod"
RETENTION_DAYS=30
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p "$BACKUP_DIR"

# Trigger RDB snapshot on the master
redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" -a "$REDIS_PASS" BGSAVE

# Wait for background save to complete
while [ "$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASS LASTSAVE)" = "$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASS LASTSAVE)" ]; do
  sleep 1
done
sleep 2

# Copy the RDB file
RDB_FILE=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" -a "$REDIS_PASS" CONFIG GET dir | tail -1)
cp "${RDB_FILE}/dump.rdb" "${BACKUP_DIR}/dump_${DATE}.rdb"

# Compress and upload to S3
gzip "${BACKUP_DIR}/dump_${DATE}.rdb"
aws s3 cp "${BACKUP_DIR}/dump_${DATE}.rdb.gz" "${S3_BUCKET}/daily/dump_${DATE}.rdb.gz" \
  --storage-class STANDARD_IA

# Cleanup old local backups
find "$BACKUP_DIR" -name "dump_*.rdb.gz" -mtime +$RETENTION_DAYS -delete

# Verify backup integrity
redis-check-rdb "${BACKUP_DIR}/dump_${DATE}.rdb.gz" && \
  echo "Backup verified: dump_${DATE}.rdb.gz" || \
  echo "ERROR: Backup verification failed!"

echo "Backup complete: ${BACKUP_DIR}/dump_${DATE}.rdb.gz"
# Restore from RDB backup
# 1. Stop Redis
systemctl stop redis

# 2. Replace the RDB file
gunzip /backups/redis/dump_20260412_030000.rdb.gz
cp /backups/redis/dump_20260412_030000.rdb /data/redis/dump.rdb
chown redis:redis /data/redis/dump.rdb

# 3. Disable AOF temporarily (if enabled) to prevent AOF overriding RDB on startup
redis-cli -a password CONFIG SET appendonly no

# 4. Start Redis (loads RDB)
systemctl start redis

# 5. Re-enable AOF and rewrite it from the loaded data
redis-cli -a password CONFIG SET appendonly yes
redis-cli -a password BGREWRITEAOF
Redis INFO, Prometheus, ਅਤੇ Grafanaਨਾਲ

ਨਿਗਰਾਨੀ

ਵਿਆਪਕ ਨਿਗਰਾਨੀ Redis HA ਲਈ ਸੰਚਾਲਨ ਉੱਤਮਤਾ ਦੀ ਨੀਂਹ ਹੈ। RedisINFOਕਮਾਂਡ ਦੁਆਰਾ ਅਮੀਰ ਅੰਦਰੂਨੀ ਮੈਟ੍ਰਿਕਸ ਦਾ ਪਰਦਾਫਾਸ਼ ਕਰਦਾ ਹੈ, ਜਿਸ ਨੂੰ Prometheus Redis ਨਿਰਯਾਤਕ Grafana ਡੈਸ਼ਬੋਰਡਾਂ ਅਤੇ ਚੇਤਾਵਨੀ ਲਈ ਸਮਾਂ-ਸੀਰੀਜ਼ ਮੈਟ੍ਰਿਕਸ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰਦਾ ਹੈ।

# Key Redis INFO sections for HA monitoring
redis-cli -a password INFO replication
# role:master
# connected_slaves:2
# slave0:ip=10.0.1.11,port=6379,state=online,offset=1234567,lag=0
# slave1:ip=10.0.1.12,port=6379,state=online,offset=1234560,lag=1
# master_replid:abc123...
# master_repl_offset:1234567
# repl_backlog_size:268435456
# repl_backlog_first_byte_offset:1000000

redis-cli -a password INFO memory
# used_memory:6442450944
# used_memory_human:6.00G
# used_memory_rss:6879707136
# mem_fragmentation_ratio:1.07
# maxmemory:6442450944
# maxmemory_policy:allkeys-lru
# evicted_keys:12345

redis-cli -a password INFO stats
# total_connections_received:50000
# total_commands_processed:12345678
# instantaneous_ops_per_sec:85432
# keyspace_hits:11000000
# keyspace_misses:1345678
# expired_keys:500000
# evicted_keys:12345

redis-cli -a password INFO clients
# connected_clients:150
# blocked_clients:0
# maxclients:10000
# Prometheus Redis Exporter deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-exporter
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis-exporter
  template:
    metadata:
      labels:
        app: redis-exporter
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "9121"
    spec:
      containers:
        - name: redis-exporter
          image: oliver006/redis_exporter:latest
          args:
            - --redis.addr=redis://redis-ha-master:6379
            - --redis.password=$(REDIS_PASSWORD)
            - --include-system-metrics
            - --is-cluster
          env:
            - name: REDIS_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: redis-secret
                  key: password
          ports:
            - containerPort: 9121
              name: metrics
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 200m
              memory: 256Mi
# PrometheusRule for Redis HA alerts
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: redis-ha-alerts
  namespace: monitoring
spec:
  groups:
    - name: redis-availability
      rules:
        - alert: RedisDown
          expr: redis_up == 0
          for: 1m
          labels:
            severity: critical
          annotations:
            summary: "Redis instance {{ $labels.instance }} is down"

        - alert: RedisReplicaDisconnected
          expr: redis_connected_slaves < 2
          for: 2m
          labels:
            severity: warning
          annotations:
            summary: "Redis master has fewer than 2 connected replicas"

        - alert: RedisReplicationLagHigh
          expr: redis_replication_lag > 5
          for: 3m
          labels:
            severity: warning
          annotations:
            summary: "Redis replication lag exceeds 5 seconds on {{ $labels.instance }}"

        - alert: RedisMemoryUsageHigh
          expr: redis_memory_used_bytes / redis_memory_max_bytes > 0.9
          for: 5m
          labels:
            severity: warning
          annotations:
            summary: "Redis memory usage above 90% on {{ $labels.instance }}"

        - alert: RedisEvictionsHigh
          expr: rate(redis_evicted_keys_total[5m]) > 100
          for: 5m
          labels:
            severity: warning
          annotations:
            summary: "Redis evicting keys at >100/s on {{ $labels.instance }}"

        - alert: RedisKeyspaceHitRateLow
          expr: redis_keyspace_hits_total / (redis_keyspace_hits_total + redis_keyspace_misses_total) < 0.8
          for: 10m
          labels:
            severity: info
          annotations:
            summary: "Redis cache hit rate below 80% on {{ $labels.instance }}"

        - alert: RedisSentinelDown
          expr: redis_sentinel_master_status != 1
          for: 1m
          labels:
            severity: critical
          annotations:
            summary: "Redis Sentinel reports master unhealthy"

    - name: redis-performance
      rules:
        - alert: RedisSlowlogGrowing
          expr: increase(redis_slowlog_length[5m]) > 10
          for: 5m
          labels:
            severity: warning
          annotations:
            summary: "Redis slow log growing rapidly on {{ $labels.instance }}"

        - alert: RedisConnectionsNearLimit
          expr: redis_connected_clients / redis_config_maxclients > 0.8
          for: 5m
          labels:
            severity: warning
          annotations:
            summary: "Redis connected clients above 80% of maxclients"

Dragonfly ਅਤੇ KeyDB: Redis-ਅਨੁਕੂਲ ਵਿਕਲਪ

ਜਦੋਂ ਕਿ Redis ਪ੍ਰਮੁੱਖ ਇਨ-ਮੈਮੋਰੀ ਡਾਟਾ ਸਟੋਰ ਹੈ, ਦੋ Redis-ਅਨੁਕੂਲ ਵਿਕਲਪਾਂ ਨੇ ਖਾਸ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਲਈ ਟ੍ਰੈਕਸ਼ਨ ਪ੍ਰਾਪਤ ਕੀਤਾ ਹੈ।

ਡਰੈਗਨਫਲਾਈ

Dragonfly ਇੱਕ ਆਧੁਨਿਕ, ਮਲਟੀ-ਥ੍ਰੈਡਡ Redis ਰਿਪਲੇਸਮੈਂਟ ਹੈ ਜਿਸਦਾ ਉਦੇਸ਼ ਸਾਰੇ ਉਪਲਬਧ CPU ਕੋਰਾਂ ਦਾ ਲਾਭ ਉਠਾਉਂਦੇ ਹੋਏ ਇੱਕ ਡ੍ਰੌਪ-ਇਨ ਰਿਪਲੇਸਮੈਂਟ ਹੋਣਾ ਹੈ। ਰਵਾਇਤੀ Redis ਕਮਾਂਡ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਸਿੰਗਲ-ਥ੍ਰੈੱਡਡ ਹੈ — ਡਰੈਗਨਫਲਾਈ ਮਲਟੀ-ਕੋਰ ਮਸ਼ੀਨਾਂ 'ਤੇ ਮਹੱਤਵਪੂਰਨ ਤੌਰ 'ਤੇ ਉੱਚ ਥ੍ਰੁਪੁੱਟ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਮਲਟੀਪਲ ਥ੍ਰੈੱਡਾਂ ਦੇ ਨਾਲ ਇੱਕ ਸ਼ੇਅਰ-ਨਥਿੰਗ ਆਰਕੀਟੈਕਚਰ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਹ Redis ਪ੍ਰੋਟੋਕੋਲ, ਜ਼ਿਆਦਾਤਰ Redis ਕਮਾਂਡਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਬਿਨਾਂ ਐਪਲੀਕੇਸ਼ਨ ਬਦਲਾਅ ਦੇ Redis ਨੂੰ ਬਦਲ ਸਕਦਾ ਹੈ।

# Run Dragonfly as a Redis replacement
docker run -d --name dragonfly \
  -p 6379:6379 \
  -v /data/dragonfly:/data \
  docker.dragonflydb.io/dragonflydb/dragonfly \
  --maxmemory 12gb \
  --proactor_threads 8 \
  --dbfilename dump.rdb \
  --requirepass strong_password

# Dragonfly in Kubernetes
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: dragonfly
  namespace: production
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dragonfly
  template:
    metadata:
      labels:
        app: dragonfly
    spec:
      containers:
        - name: dragonfly
          image: docker.dragonflydb.io/dragonflydb/dragonfly:latest
          args:
            - --maxmemory=12gb
            - --proactor_threads=8
            - --requirepass=strong_password
            - --snapshot_cron=*/30 * * * *
          ports:
            - containerPort: 6379
          resources:
            requests:
              cpu: "4"
              memory: 16Gi
            limits:
              cpu: "8"
              memory: 16Gi
          volumeMounts:
            - name: data
              mountPath: /data
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: ["ReadWriteOnce"]
        storageClassName: longhorn
        resources:
          requests:
            storage: 100Gi

ਡਰੈਗਨਫਲਾਈ ਦੇ ਮੁੱਖ ਫਾਇਦੇ: ਮਲਟੀ-ਥ੍ਰੈੱਡਡ (8 ਕੋਰ ਬਨਾਮ ਸਿੰਗਲ-ਥ੍ਰੈਡਡ Redis 'ਤੇ 25x ਥਰੂਪੁੱਟ), ਬਿਹਤਰ ਮੈਮੋਰੀ ਕੁਸ਼ਲਤਾ (Redis ਡਿਕਟ ਦੀ ਬਜਾਏ ਡੈਸ਼ ਹੈਸ਼ ਟੇਬਲ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ), ਫੋਰਕ() ਓਵਰਹੈੱਡ ਤੋਂ ਬਿਨਾਂ ਬਿਲਟ-ਇਨ ਸਨੈਪਸ਼ਾਟ, ਅਤੇ ਵੱਡੇ ਡੇਟਾਸੈਟਾਂ ਲਈ ਮੂਲ ਸਮਰਥਨ। ਹਾਲਾਂਕਿ, 2026 ਤੱਕ, ਡਰੈਗਨਫਲਾਈ ਦਾ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਸਮਰਥਨ ਅਜੇ ਵੀ ਪਰਿਪੱਕ ਹੋ ਰਿਹਾ ਹੈ - ਇਹ ਪ੍ਰਾਇਮਰੀ-ਰਿਪਲੀਕਾ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ ਪਰ ਇਸ ਵਿੱਚ ਅਜੇ ਤੱਕ ਸੈਂਟੀਨੇਲ-ਬਰਾਬਰ ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ ਸਿਸਟਮ ਨਹੀਂ ਹੈ। HA ਲਈ, Kubernetes ਸਿਹਤ ਜਾਂਚਾਂ ਅਤੇ ਸਟੇਟਫੁਲਸੈੱਟ ਰੀਸਟਾਰਟ ਨੀਤੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰੋ, ਜਾਂ ਐਪਲੀਕੇਸ਼ਨ-ਪੱਧਰ ਫੇਲਓਵਰ ਦੇ ਨਾਲ ਲੋਡ ਬੈਲੈਂਸਰ ਦੇ ਪਿੱਛੇ ਤੈਨਾਤ ਕਰੋ।

KeyDB

KeyDB Redis ਦਾ ਇੱਕ ਮਲਟੀ-ਥਰਿੱਡਡ ਫੋਰਕ ਹੈ ਜੋ Snap (Snapchat ਦੇ ਪਿੱਛੇ ਵਾਲੀ ਕੰਪਨੀ) ਦੁਆਰਾ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ Redis ਦੇ ਨਾਲ ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਨੁਕੂਲ ਹੈ ਅਤੇ ਮਲਟੀ-ਥ੍ਰੈਡਿੰਗ, ਐਕਟਿਵ-ਐਕਟਿਵ ਰਿਪਲੀਕੇਸ਼ਨ (ਮਲਟੀ-ਮਾਸਟਰ), ਫਲੈਸ਼ ਸਟੋਰੇਜ ਟਾਇਰਿੰਗ, ਅਤੇ ਸਬ-ਕੀ ਮਿਆਦ ਪੁੱਗਦੀ ਹੈ। KeyDB ਦੀ ਐਕਟਿਵ-ਐਕਟਿਵ ਪ੍ਰਤੀਕ੍ਰਿਤੀ HA ਲਈ ਖਾਸ ਤੌਰ 'ਤੇ ਦਿਲਚਸਪ ਹੈ - ਦੋ KeyDB ਉਦਾਹਰਨਾਂ ਇੱਕੋ ਸਮੇਂ ਲਿਖਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰ ਸਕਦੀਆਂ ਹਨ ਅਤੇ ਇੱਕ ਦੂਜੇ ਨੂੰ ਦੁਹਰਾਉਂਦੀਆਂ ਹਨ, ਜ਼ੀਰੋ-ਡਾਊਨਟਾਈਮ ਫੇਲਓਵਰ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ।

# keydb.conf — Multi-threaded configuration with active replication
server-threads 4                  # Use 4 threads for command processing
bind 0.0.0.0
port 6379
requirepass strong_password
masterauth strong_password

# Active-active replication (multi-master)
active-replica yes
replicaof peer-host 6379          # Bidirectional replication

# On the peer node, configure the reverse:
# replicaof this-host 6379

# FLASH storage tiering (for datasets larger than RAM)
# storage-provider flash /mnt/flash-storage 100
# maxmemory 16gb
# Will keep hot data in RAM and spill cold data to SSD

# SubKey expiration (unique to KeyDB)
# Allows setting TTL on hash fields, not just top-level keys
# EXPIREMEMBER myhash field1 3600

KeyDB ਇੱਕ ਮਜ਼ਬੂਤ ਵਿਕਲਪ ਹੈ ਜਦੋਂ ਤੁਹਾਨੂੰ ਭੂਗੋਲਿਕ ਵੰਡ ਜਾਂ ਜ਼ੀਰੋ-ਡਾਊਨਟਾਈਮ ਰੱਖ-ਰਖਾਅ ਲਈ ਮਲਟੀ-ਮਾਸਟਰ ਰੀਪਲੀਕੇਸ਼ਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਾਂ ਜਦੋਂ ਤੁਹਾਨੂੰ ਸਿੰਗਲ-ਥ੍ਰੈੱਡਡ Redis ਪ੍ਰਦਾਨ ਕਰ ਸਕਦਾ ਹੈ, ਪਰ Dragonfly ਨਾਲੋਂ Redis ਕੋਡਬੇਸ ਦੇ ਨੇੜੇ ਰਹਿਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਉੱਚ ਥ੍ਰੁਪੁੱਟ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

ਪ੍ਰਦਰਸ਼ਨ ਟਿਊਨਿੰਗ

ਪਾਈਪਲਾਈਨਿੰਗ

ਪਾਈਪਲਾਈਨਿੰਗ ਇੱਕ ਸਿੰਗਲ ਨੈੱਟਵਰਕ ਰਾਉਂਡ-ਟ੍ਰਿਪ ਵਿੱਚ ਕਈ ਕਮਾਂਡਾਂ ਨੂੰ ਬੈਚ ਕਰਦੀ ਹੈ, ਬਲਕ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਲੇਟੈਂਸੀ ਨੂੰ ਨਾਟਕੀ ਢੰਗ ਨਾਲ ਘਟਾਉਂਦੀ ਹੈ। ਅਗਲੀ ਕਮਾਂਡ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਹਰੇਕ ਜਵਾਬ ਦੀ ਉਡੀਕ ਕਰਨ ਦੀ ਬਜਾਏ, ਕਲਾਇੰਟ ਸਾਰੀਆਂ ਕਮਾਂਡਾਂ ਇੱਕੋ ਵਾਰ ਭੇਜਦਾ ਹੈ ਅਤੇ ਸਾਰੇ ਜਵਾਬ ਇਕੱਠੇ ਪੜ੍ਹਦਾ ਹੈ।

# Python — Pipelining with redis-py
import redis
import time

r = redis.Redis(host='10.0.1.10', port=6379, password='password', decode_responses=True)

# Without pipelining: 1000 round-trips
start = time.time()
for i in range(1000):
    r.set(f'key:{i}', f'value:{i}')
print(f'Without pipeline: {time.time() - start:.3f}s')

# With pipelining: 1 round-trip for 1000 commands
start = time.time()
pipe = r.pipeline(transaction=False)
for i in range(1000):
    pipe.set(f'key:{i}', f'value:{i}')
pipe.execute()
print(f'With pipeline: {time.time() - start:.3f}s')
# Typically 5-10x faster

ਲੁਆ ਸਕ੍ਰਿਪਟਿੰਗ

ਲੂਆ ਸਕ੍ਰਿਪਟਾਂ Redis ਸਰਵਰ 'ਤੇ ਐਟਮਿਕ ਤੌਰ 'ਤੇ ਐਗਜ਼ੀਕਿਊਟ ਕਰਦੀਆਂ ਹਨ, ਗੁੰਝਲਦਾਰ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਰਾਉਂਡ-ਟਰਿੱਪਾਂ ਨੂੰ ਖਤਮ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਗਾਰੰਟੀ ਦਿੰਦੀਆਂ ਹਨ ਕਿ ਸਕ੍ਰਿਪਟ ਦੇ ਓਪਰੇਸ਼ਨਾਂ ਵਿਚਕਾਰ ਕੋਈ ਹੋਰ ਕਮਾਂਡ ਨਹੀਂ ਚਲਾਉਂਦੀ ਹੈ। Redis ਕਲੱਸਟਰ ਵਿੱਚ, ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਲੁਆ ਸਕ੍ਰਿਪਟ ਦੁਆਰਾ ਐਕਸੈਸ ਕੀਤੀਆਂ ਸਾਰੀਆਂ ਕੁੰਜੀਆਂ ਹੈਸ਼ ਟੈਗਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕੋ ਹੈਸ਼ ਸਲਾਟ ਵਿੱਚ ਰਹਿੰਦੀਆਂ ਹਨ।

# Lua script for atomic rate limiting
# KEYS[1] = rate limit key
# ARGV[1] = max requests
# ARGV[2] = window in seconds
local current = redis.call('INCR', KEYS[1])
if current == 1 then
    redis.call('EXPIRE', KEYS[1], ARGV[2])
end
if current > tonumber(ARGV[1]) then
    return 0  -- Rate limited
end
return 1  -- Allowed

# Load and execute
redis-cli -a password EVAL "\
  local current = redis.call('INCR', KEYS[1]) \
  if current == 1 then redis.call('EXPIRE', KEYS[1], ARGV[2]) end \
  if current > tonumber(ARGV[1]) then return 0 end \
  return 1" 1 ratelimit:user:123 100 60

ਮੈਮੋਰੀ ਓਪਟੀਮਾਈਜੇਸ਼ਨ

# redis.conf — Memory optimisation settings

# Use ziplist encoding for small hashes, lists, sorted sets
hash-max-listpack-entries 128
hash-max-listpack-value 64
list-max-listpack-size -2          # 8KB per node
zset-max-listpack-entries 128
zset-max-listpack-value 64
set-max-intset-entries 512

# Lazy freeing (avoid blocking on large key deletion)
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
lazyfree-lazy-user-del yes
lazyfree-lazy-user-flush yes

# jemalloc tuning
# MALLOC_CONF="background_thread:true,dirty_decay_ms:5000,muzzy_decay_ms:5000"

# Analyse memory usage
redis-cli -a password MEMORY DOCTOR
redis-cli -a password MEMORY STATS
redis-cli -a password --bigkeys
redis-cli -a password --memkeys

ਆਮ ਅਸਫਲਤਾ ਦੇ ਦ੍ਰਿਸ਼ ਅਤੇ ਸਮੱਸਿਆ ਨਿਪਟਾਰਾ

ਦ੍ਰਿਸ਼ 1: ਮਾਸਟਰ ਫੇਲ, ਸੈਂਟੀਨੇਲ ਪ੍ਰਤੀਕ੍ਰਿਤੀ

ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਦਾ ਹੈ
# Diagnosis
redis-cli -p 26379 SENTINEL master mymaster
# Check: flags should show 's_down' or 'o_down' if master is unreachable

redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster
# Returns the current master address (should be the promoted replica)

# Check Sentinel logs for failover events
tail -f /var/log/redis/sentinel.log
# Look for: +sdown, +odown, +try-failover, +elected-leader,
#           +failover-state-select-slave, +selected-slave,
#           +failover-state-send-slaveof-noone, +failover-end

ਦ੍ਰਿਸ਼ 2: ਦੋ ਮਾਸਟਰਾਂ ਦੇ ਨਾਲ ਸਪਲਿਟ-ਬ੍ਰੇਨ

# Diagnosis: check if min-replicas-to-write is configured
redis-cli -a password CONFIG GET min-replicas-to-write
redis-cli -a password CONFIG GET min-replicas-max-lag

# Prevention: configure min-replicas on all masters
redis-cli -a password CONFIG SET min-replicas-to-write 1
redis-cli -a password CONFIG SET min-replicas-max-lag 10

# If split-brain occurred: identify the stale master
# Compare replication offsets — the master with the higher offset has more data
redis-cli -h master1-ip -a password INFO replication | grep master_repl_offset
redis-cli -h master2-ip -a password INFO replication | grep master_repl_offset

# Force the stale master to become a replica
redis-cli -h stale-master-ip -a password REPLICAOF correct-master-ip 6379

ਦ੍ਰਿਸ਼ 3: ਨੈੱਟਵਰਕ ਭਾਗ

ਤੋਂ ਬਾਅਦ ਪੂਰਾ ਰੀਸਿੰਕ ਤੂਫਾਨ
# Diagnosis: check replication backlog
redis-cli -a password INFO replication | grep repl_backlog
# If repl_backlog_first_byte_offset is ahead of replica's offset, full sync triggers

# Prevention: increase backlog size
redis-cli -a password CONFIG SET repl-backlog-size 512mb

# Monitor for full syncs
redis-cli -a password INFO stats | grep sync_full
redis-cli -a password INFO stats | grep sync_partial_ok
redis-cli -a password INFO stats | grep sync_partial_err

ਦ੍ਰਿਸ਼ 4: ਮੈਮੋਰੀ ਥਕਾਵਟ ਅਤੇ OOM ਕਿਲ

# Diagnosis
redis-cli -a password INFO memory
# Check: used_memory vs maxmemory, mem_fragmentation_ratio

redis-cli -a password MEMORY DOCTOR
# Returns advice on memory issues

# Prevention: set proper maxmemory and eviction
redis-cli -a password CONFIG SET maxmemory 12gb
redis-cli -a password CONFIG SET maxmemory-policy allkeys-lru

# Find large keys consuming memory
redis-cli -a password --bigkeys
redis-cli -a password --memkeys --memkeys-samples 100

# Emergency: manually evict keys
redis-cli -a password SCAN 0 COUNT 1000 TYPE string
# Identify and DEL unnecessary large keys

ਦ੍ਰਿਸ਼ 5: ਹੌਲੀ ਕਮਾਂਡਾਂ ਬਲਾਕਿੰਗ ਪ੍ਰਤੀਕ੍ਰਿਤੀ

# Diagnosis: check slowlog
redis-cli -a password SLOWLOG GET 20
redis-cli -a password SLOWLOG LEN

# Check for blocking commands
redis-cli -a password CLIENT LIST | grep -E 'cmd=(keys|sort|smembers)'

# Prevention: configure slowlog threshold
redis-cli -a password CONFIG SET slowlog-log-slower-than 10000   # 10ms
redis-cli -a password CONFIG SET slowlog-max-len 256

# Rename dangerous commands
rename-command KEYS ""              # Disable KEYS entirely
rename-command FLUSHALL ""          # Disable FLUSHALL
rename-command FLUSHDB ""           # Disable FLUSHDB
rename-command DEBUG ""             # Disable DEBUG

ਸਮਰੱਥਾ ਯੋਜਨਾ ਅਤੇ ਸਕੇਲਿੰਗ ਰਣਨੀਤੀਆਂ

Redis HA ਲਈ

ਸਮਰੱਥਾ ਯੋਜਨਾ ਵਿੱਚ ਮਾਸਟਰ ਅਤੇ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਨੋਡਾਂ ਵਿੱਚ ਮੈਮੋਰੀ ਲੋੜਾਂ, ਨੈੱਟਵਰਕ ਬੈਂਡਵਿਡਥ, ਅਤੇ CPU ਉਪਯੋਗਤਾ ਦਾ ਅਨੁਮਾਨ ਲਗਾਉਣਾ ਸ਼ਾਮਲ ਹੈ। ਆਲੇ ਦੁਆਲੇ ਦੀ ਯੋਜਨਾ ਬਣਾਉਣ ਲਈ ਮੁੱਖ ਮੈਟ੍ਰਿਕਸ ਹਨ ਡੈਟਾਸੈੱਟ ਆਕਾਰ, ਪ੍ਰਤੀ ਸਕਿੰਟ ਓਪਰੇਸ਼ਨ, ਔਸਤ ਕੁੰਜੀ/ਮੁੱਲ ਦਾ ਆਕਾਰ, ਅਤੇ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਓਵਰਹੈੱਡ।

# Capacity estimation formulas

# Memory per node:
#   Base dataset size (use redis-cli DBSIZE and MEMORY USAGE on a sample)
#   + Replication output buffer: ~64MB per replica
#   + AOF rewrite buffer: ~64MB during rewrites
#   + Copy-on-write overhead during BGSAVE: up to 2x during heavy writes
#   + Client output buffers: ~1KB per client
#   + OS overhead: ~1-2GB
#   Rule of thumb: maxmemory = 75% of available RAM

# Network bandwidth:
#   Replication: write_throughput_bytes * num_replicas
#   Client traffic: ops_per_sec * avg_response_size
#   Full sync: dataset_size (one-time during replica bootstrap or failover)

# Example sizing for 20GB dataset, 100K ops/sec:
#   RAM per node: 20GB data + 4GB buffers + 2GB OS = 26GB -> 32GB node (75% = 24GB maxmemory)
#   CPU: 1 core handles ~100K ops/sec for simple commands (GET/SET)
#   Network: 100K ops * 1KB avg = 100MB/s client + 50MB/s replication = 150MB/s per master

# Scaling decision tree:
#   Need more read throughput? -> Add replicas (up to 5 per master)
#   Need more write throughput? -> Redis Cluster (add shards)
#   Need more memory? -> Redis Cluster (distribute dataset across shards)
#   Need lower latency? -> Reduce network hops (co-locate, use unix sockets)
#   Need global distribution? -> Multi-region replication or Redis Enterprise Active-Active
Redis ਕਲੱਸਟਰਦੇ ਨਾਲ

ਹਰੀਜੱਟਲ ਸਕੇਲਿੰਗ
# Add shards to an existing Redis Cluster

# 1. Start new Redis nodes
redis-server /etc/redis/new-master.conf
redis-server /etc/redis/new-replica.conf

# 2. Add the new master to the cluster
redis-cli --cluster add-node new-master:7000 existing-node:7000 -a password

# 3. Add the new replica to follow the new master
redis-cli --cluster add-node new-replica:7000 existing-node:7000 \
  --cluster-slave --cluster-master-id NEW_MASTER_ID -a password

# 4. Reshard slots to the new master
redis-cli --cluster reshard existing-node:7000 \
  --cluster-from all --cluster-to NEW_MASTER_ID \
  --cluster-slots 4096 --cluster-yes -a password

# 5. Verify the new slot distribution
redis-cli -c -h existing-node -p 7000 -a password CLUSTER SLOTS

# Remove a shard (scale down)
# 1. Reshard all slots away from the node
redis-cli --cluster reshard existing-node:7000 \
  --cluster-from REMOVING_NODE_ID --cluster-to TARGET_NODE_ID \
  --cluster-slots 5461 --cluster-yes -a password

# 2. Remove the empty node
redis-cli --cluster del-node existing-node:7000 REMOVING_NODE_ID -a password

ਵਰਟੀਕਲ ਸਕੇਲਿੰਗ ਵਿਚਾਰ

# When to scale vertically vs horizontally:

# Scale UP (bigger instances) when:
#   - Dataset fits in single-node memory
#   - Workload uses multi-key operations (MGET, SUNION, Lua across keys)
#   - Operational simplicity is more important than cost efficiency
#   - Using Redis modules that don't support Cluster mode well

# Scale OUT (more shards) when:
#   - Dataset exceeds single-node memory
#   - Write throughput exceeds single-thread capacity (~200K ops/sec)
#   - You need per-shard isolation for multi-tenant workloads
#   - Cost per GB of RAM is a concern (many smaller nodes vs few large ones)

# Cloud instance recommendations:
# AWS:   cache.r7g.xlarge (4 vCPU, 26GB) to cache.r7g.16xlarge (64 vCPU, 419GB)
# Azure: P1 (6GB) to P5 (120GB) per shard
# GCP:   5GB to 300GB per instance (Memorystore Standard)

# Bare metal:
#   CPU: 2-4 cores dedicated to Redis (single-threaded, but background tasks use extra cores)
#   RAM: 32-128GB per node (NVMe for swap-as-last-resort)
#   Network: 10Gbps minimum, 25Gbps for large datasets
#   Storage: NVMe SSD for AOF/RDB persistence (IOPS matters for fsync)

ਸਿੱਟਾ

Redis ਉੱਚ ਉਪਲਬਧਤਾ ਇੱਕ ਸਿੰਗਲ ਕੌਂਫਿਗਰੇਸ਼ਨ ਵਿਕਲਪ ਨਹੀਂ ਹੈ - ਇਹ ਇੱਕ ਵਿਆਪਕ ਸਿਸਟਮ ਡਿਜ਼ਾਈਨ ਹੈ ਜੋ ਕਿ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਟੋਪੋਲੋਜੀ, ਅਸਫਲਤਾ ਖੋਜ, ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ, ਕਲਾਇੰਟ ਕੌਂਫਿਗਰੇਸ਼ਨ, ਸਥਿਰਤਾ ਰਣਨੀਤੀ, ਮੈਮੋਰੀ ਪ੍ਰਬੰਧਨ, ਸੁਰੱਖਿਆ, ਨਿਗਰਾਨੀ, ਅਤੇ ਸੰਚਾਲਨ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਫੈਲਾਉਂਦਾ ਹੈ। ਸਹੀ HA ਆਰਕੀਟੈਕਚਰ ਤੁਹਾਡੀਆਂ ਖਾਸ ਲੋੜਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ।

ਜ਼ਿਆਦਾਤਰ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ,Redis ਸੈਂਟੀਨੇਲਇੱਕ ਮਾਸਟਰ ਦੀ ਨਿਗਰਾਨੀ ਕਰਨ ਵਾਲੇ ਤਿੰਨ ਸੈਂਟੀਨੇਲ ਉਦਾਹਰਨਾਂ ਅਤੇ ਦੋ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ 30 ਸਕਿੰਟਾਂ ਤੋਂ ਘੱਟ ਵਿੱਚ ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ ਦੇ ਨਾਲ ਇੱਕ ਸਾਬਤ, ਲੜਾਈ-ਜਾਂਚ HA ਹੱਲ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਤੁਹਾਨੂੰ ਇੱਕ ਸਿੰਗਲ ਮਾਸਟਰ ਦੇ ਥ੍ਰਰੂਪੁਟ ਜਾਂ ਮੈਮੋਰੀ ਸਮਰੱਥਾ ਤੋਂ ਪਰੇ ਹਰੀਜੱਟਲ ਸਕੇਲਿੰਗ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਤਾਂRedis ਕਲੱਸਟਰਬਿਲਟ-ਇਨ ਫੇਲਓਵਰ ਪ੍ਰਤੀ ਸ਼ਾਰਡ ਬਣਾਏ ਰੱਖਦੇ ਹੋਏ ਕਈ ਸ਼ਾਰਡਾਂ ਵਿੱਚ ਡੇਟਾਸੈਟ ਨੂੰ ਵੰਡਦਾ ਹੈ। Kubernetes ਵਾਤਾਵਰਣਾਂ ਲਈ,SpotahomeਅਤੇOpsTreeਵਰਗੇ ਓਪਰੇਟਰ ਸੰਚਾਲਨਤਮਿਕ ਵਧੀਆ ਅਭਿਆਸਾਂ ਨੂੰ ਘੋਸ਼ਣਾਤਮਕ CRDs ਵਿੱਚ ਏਨਕੋਡ ਕਰਦੇ ਹਨ, ਜਦੋਂ ਕਿRedis Enterpriseਐਕਟਿਵ-ਰੇਪਿਊਲ ਸਪੋਰਟ ਅਤੇ ਐਕਟਿਵ-ਮੋਡਲੀਕੇਸ਼ਨ ਸਪੋਰਟ ਦੇ ਨਾਲ ਸਭ ਤੋਂ ਵੱਧ ਵਿਸ਼ੇਸ਼ਤਾ-ਅਮੀਰ ਵਿਕਲਪ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।

ਕਲਾਊਡ-ਪ੍ਰਬੰਧਿਤ ਸੇਵਾਵਾਂ —AWS ElastiCache, RedisਲਈAzure ਕੈਸ਼, ਅਤੇGCP ਮੈਮੋਰੀਸਟੋਰ— ਚਲਾਉਣ ਦੇ ਸੰਚਾਲਨ ਬੋਝ ਨੂੰ ਖਤਮ ਕਰੋ ਪਰ Redis ਦੇ ਉੱਚੇ ਪੈਮਾਨੇ 'ਤੇ ਸੰਰਚਨਾ ਨੂੰ ਘੱਟ ਕਰੋ ਅਤੇ ffralex ਸਕੇਲ 'ਤੇ ਘੱਟ ਕਰੋ। ਬੇਅਰ ਮੈਟਲ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਵਾਲੇ ਸੰਗਠਨਾਂ ਲਈ, ਰੈਂਚਰ ਅਤੇ ਲੋਂਗਹੋਰਨਦੇ ਨਾਲk3s ਇੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਓਪਨ-ਸੋਰਸ, ਕਲਾਊਡ-ਸੁਤੰਤਰ ਵਿਕਲਪ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ ਵਿਕਰੇਤਾ ਲਾਕ-ਇਨ ਤੋਂ ਬਿਨਾਂ ਐਂਟਰਪ੍ਰਾਈਜ਼-ਗ੍ਰੇਡ HA ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

ਵਿਕਲਪ ਜਿਵੇਂ ਕਿDragonflyਅਤੇKeyDBਖਾਸ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਲਈ ਮੁਲਾਂਕਣ ਕਰਨ ਯੋਗ ਹਨ — ਵੱਡੀਆਂ ਮਸ਼ੀਨਾਂ 'ਤੇ ਕੱਚੇ ਮਲਟੀ-ਥ੍ਰੈਡਡ ਥ੍ਰੂਪੁੱਟ ਲਈ ਡਰੈਗਨਫਲਾਈ, ਅਤੇ ਕਿਰਿਆਸ਼ੀਲ-ਕਿਰਿਆਸ਼ੀਲ ਮਲਟੀ-ਮਾਸਟਰ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਲਈ KeyDB। ਦੋਵੇਂ Redis-ਅਨੁਕੂਲ ਹਨ ਅਤੇ ਬਹੁਤ ਸਾਰੇ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ ਡ੍ਰੌਪ-ਇਨ ਰਿਪਲੇਸਮੈਂਟ ਵਜੋਂ ਕੰਮ ਕਰ ਸਕਦੇ ਹਨ।

ਤੁਸੀਂ ਜੋ ਵੀ ਆਰਕੀਟੈਕਚਰ ਚੁਣਦੇ ਹੋ, ਓਪਰੇਸ਼ਨਲ ਬੁਨਿਆਦੀ ਤੱਤ ਸਥਿਰ ਰਹਿੰਦੇ ਹਨ: ਸਹੀ ਸਥਿਰਤਾ (ਹਾਈਬ੍ਰਿਡ RDB + AOF) ਨੂੰ ਕੌਂਫਿਗਰ ਕਰੋ, ਸਪਲਿਟ-ਬ੍ਰੇਨ ਡੇਟਾ ਦੇ ਨੁਕਸਾਨ ਨੂੰ ਰੋਕਣ ਲਈmin-replicas-to-writeਨੂੰ ਲਾਗੂ ਕਰੋ, ਤੁਹਾਡੇ ਰਾਈਟ ਵਾਲੀਅਮ ਲਈ ਆਪਣੇ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਬੈਕਲਾਗ ਨੂੰ ਆਕਾਰ ਦਿਓ, TLS ਨਾਲ ਸਾਰੇ ਟ੍ਰੈਫਿਕ ਨੂੰ ਐਨਕ੍ਰਿਪਟ ਕਰੋ, ਘੱਟ ਤੋਂ ਘੱਟ ਮੈਮੋਰੀ ਦੇ ਨਾਲ ਮਾਨੀਟਰ-ਐਕਸੈੱਸ ਅਤੇ lagviCL ਮਾਨੀਟਰ ਕਰੋ। Prometheus ਅਤੇ Grafana ਨਾਲ ਵਰਤੋਂ, ਟਿਕਾਊ ਆਫ-ਸਾਈਟ ਸਟੋਰੇਜ ਲਈ RDB ਸਨੈਪਸ਼ਾਟ ਦਾ ਬੈਕਅੱਪ ਲਓ, ਅਤੇ - ਸਭ ਤੋਂ ਗੰਭੀਰ ਤੌਰ 'ਤੇ - ਨਿਯਮਿਤ ਤੌਰ 'ਤੇ ਆਪਣੇ ਫੇਲਓਵਰ ਦੀ ਜਾਂਚ ਕਰੋ। ਇੱਕ ਫੇਲਓਵਰ ਸਿਸਟਮ ਜਿਸਦੀ ਕਦੇ ਜਾਂਚ ਨਹੀਂ ਕੀਤੀ ਗਈ ਇੱਕ ਸਿਸਟਮ ਹੈ ਜੋ ਕੰਮ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਮਾਸਿਕ ਫੇਲਓਵਰ ਡ੍ਰਿਲਸ ਚਲਾਓ, ਅਰਾਜਕਤਾ ਇੰਜੀਨੀਅਰਿੰਗ ਟੂਲਸ ਨਾਲ ਅਸਫਲਤਾਵਾਂ ਨੂੰ ਇੰਜੈਕਟ ਕਰੋ, ਅਤੇ ਆਪਣੇ ਅਸਲ ਰਿਕਵਰੀ ਸਮੇਂ ਨੂੰ ਮਾਪੋ। ਵਿਵਸਥਿਤ ਟੈਸਟਿੰਗ ਤੋਂ ਤੁਹਾਡੇ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕੀਤਾ ਵਿਸ਼ਵਾਸ ਉਹ ਹੈ ਜੋ Redis ਤੈਨਾਤੀ ਨੂੰ ਵੱਖ ਕਰਦਾ ਹੈ ਜੋ ਉਤਪਾਦਨ ਦੀਆਂ ਘਟਨਾਵਾਂ ਤੋਂ ਬਚਦਾ ਹੈ ਜੋ ਇੱਕ ਸਰਵਰ ਅਸਫਲਤਾ ਨੂੰ ਕੰਪਨੀ-ਵਿਆਪੀ ਆਊਟੇਜ ਵਿੱਚ ਬਦਲਦਾ ਹੈ।