EQVPS
ډشبورډپیل وکړئ

په VPS کې Redis څنګه نصب کړو: د حافظې حد، په ډیسک کې ساتل او داسې پاسورډ چې پاتې شي

Redis په Ubuntu 24.04 کې نصب کړئ، د هغه حافظه محدوده کړئ چې ټول سرور ونه نیسي، پرته له دې چې معلومات مو پاک شي AOF فایل فعال کړئ، او داسې پاسورډ کېږدئ چې له بیا پیلولو وروسته هم پاتې شي. په دوو ګامونو کې داسې جالونه دي چې موږ پخپله په خپل ازمېښتي سرور کې پکې ولوېدو.

Redis معلومات په حافظه کې ساتي او شاوخوا په یوه ملي ثانیه کې ځواب ورکوي، له همدې امله د کیش، کتار یا د ناستو د زېرمې په توګه د ډېرو اپونو تر شا کار کوي. نصب یې یو کمانډ دی. اصلي کار په ډیفالټ تنظیماتو کې دی: د حافظې حد نشته، انځورونه ښايي وروستۍ لیکنې له لاسه ورکړي، او دوه اسانه تېروتنې شته چې په چوپتیا ستاسو معلومات پاکوي یا ستاسو پاسورډ بندوي. دا لارښود دا ټول په Ubuntu 24.04 کې څېړي. هر ګام مو په خپل امېج کې چلولی؛ شمېرې د Micro سرور (2 vCPU، 2 GB) څخه دي.

تاسو د sudo لرونکي کارن ته اړتیا لرئ. د Ubuntu د جوړولو لارښود یو جوړوي.

1. نصب

sudo apt update
sudo apt install -y redis-server
redis-server --version
redis-cli ping

نصب 13 ثانیې ونیولې او Redis 7.0.15 یې راکړ. سمدستي او په هر بوټ کې پیلېږي، PONG ځواب ورکوي او یوازې پخپله په سرور کې اوري: 127.0.0.1:6379 او [::1]:6379، له protected-mode yes سره. پرته له معلوماتو یې 13.5 MB RAM کاروله.

په لاګ کې دمخه یو خبرداری و:

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

Redis ډیسک ته د خپل هغه کاپي څخه ساتي چې د fork په مرسته جوړېږي، او د کرنل په ډیفالټ تنظیم کې کله چې حافظه کمه وي دا fork ښايي ناکام شي. یو ځل یې سم کړئ:

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

له بیا پیلولو وروسته خبرداری ورک شو.

2. حافظه یې محدوده کړئ

له پیله maxmemory ارزښت 0 دی، یعنې هېڅ حد نشته، او تګلاره noeviction ده. Redis به تر هغه RAM اخلي چې د سرور حافظه پای ته ورسېږي. یو سقف وټاکئ او پرېکړه وکړئ چې هلته رسېدو سره څه پېښ شي:

redis-cli CONFIG SET maxmemory 256mb
redis-cli CONFIG SET maxmemory-policy allkeys-lru
redis-cli CONFIG REWRITE

موږ دواړه تګلارې د 64 MB حد او 400,000 لیکنو سره وازمویلې:

  • noeviction (ډیفالټ): حافظه په 63 MB کې ودرېده او نوې لیکنې د OOM command not allowed when used memory > 'maxmemory' تېروتنې سره ناکامې شوې. د کتار یا هر هغه څه لپاره سم دی چې له لاسه ورکول یې نشئ زغملی.
  • allkeys-lru: Redis هغه کلي چې تر ټولو ډېر وخت نه وې کارول شوې، ټولټال 48,606، لرې کړې او ټولې لیکنې بریالۍ شوې. د کیش لپاره سم دی.

CONFIG REWRITE روان تنظیمات په /etc/redis/redis.conf کې ساتي، تر څو له بیا پیلولو وروسته پاتې شي. همدارنګه یوه کرښه ورزیاتوي چې باید له څلورم ګام مخکې پرې خبر اوسئ.

3. وټاکئ چې څنګه ډیسک ته وساتي

په ډیفالټ ډول Redis په یوه ساعت کې د 1، په پنځو دقیقو کې د 100 یا په یوه دقیقه کې د 10,000 بدلونونو وروسته یو انځور (/var/lib/redis/dump.rdb) لیکي. موږ د درولو درې لارې وازمویلې:

Redis څنګه ودرېدیوازې انځورونه (ډیفالټ)د AOF فایل سره
systemctl restartهېڅ له لاسه ونه وت: د بندېدو پر مهال ساتيهېڅ له لاسه ونه وت
د kill -9 په مرسته ووژل شوله وروستي انځور وروسته کلي ورکه وههغه کلي چې 2 ثانیې مخکې لیکل شوې وه موجوده وه

په دواړو حالتونو کې systemd په څو ثانیو کې Redis پخپله بیا پیل کړ.

که په Redis کې داسې معلومات لرئ چې له لاسه ورکول یې درته مهم دي، د AOF فایل (append-only file) فعال کړئ. هره لیکنه ثبتوي او هره ثانیه یو ځل یې ډیسک ته لېږي. دا په چلېدونکي سرور کې وکړئ، نه د فایل په سمولو:

redis-cli CONFIG SET appendonly yes
redis-cli CONFIG REWRITE
redis-cli INFO persistence | grep aof_

موږ لومړی بله لاره وازمویله، او زموږ معلومات یې له منځه یوړل. موږ په redis.conf کې appendonly no په appendonly yes بدل کړ او بیا مو پیل کړ. Redis له تش AOF سره پورته شو او له انځور څخه یې هېڅ بار نه کړل، نو ټولې موجودې کلي ورکې شوې. بیا یې د بندېدو پر مهال خپله نوې منځپانګه، پرته له زړو کلیو، د dump.rdb پر سر هم ولیکله. CONFIG SET له دې مخنیوی کوي: Redis لومړی AOF په حافظه کې له شته معلوماتو لیکي. له بیا پیلولو وروسته زموږ ټولې کلي موجودې وې.

که Redis یوازې کیش وي چې تش پیلېدای شي، برعکس وکړئ او ساتل د redis-cli CONFIG SET save "" په مرسته بند کړئ.

4. پاسورډ کېږدئ

دا دویم جال دی. له هر CONFIG REWRITE وروسته Redis 7 د redis.conf په پای کې دا کرښه ورزیاتوي:

user default on nopass ~* &* +@all

مانا یې دا ده: "ډیفالټ کارن پاسورډ ته اړتیا نه لري". بیا موږ په فایل کې پورته requirepass ورزیات کړ او بیا مو پیل کړ. Redis لا هم پرته له پاسورډ PONG ځواب ورکاوه، ځکه د user کرښه پر هغه غالبه ده. پاسورډ د Redis له لارې وټاکئ:

REDIS_PASS=$(openssl rand -hex 24)
echo "$REDIS_PASS"
redis-cli CONFIG SET requirepass "$REDIS_PASS"
REDISCLI_AUTH="$REDIS_PASS" redis-cli CONFIG REWRITE

پاسورډ په خوندي ځای کې وساتئ. اوس Redis دا په هماغه user default کرښه کې د SHA-256 هش په بڼه ساتي. له بیا پیلولو وروسته redis-cli ping ځواب ورکړ NOAUTH Authentication required. او یوازې پاسورډ کار وکړ. redis-cli ته یې د REDISCLI_AUTH متغیر له لارې ورکړئ. د -a سره د پروسو په لېست کې ښکاري، او redis-cli په دې اړه خبرداری ورکوي. په خپل اپ کې یې د Redis پته کې ولیکئ: redis://:PASSWORD@127.0.0.1:6379/0.

5. له خپل کمپیوټر څخه لاسرسی

Redis په 127.0.0.1 کې پرېږدئ او د SSH تونل وکاروئ. د خپل سرور SSH پورټ ورکړئ؛ د NAT پلانونو کې دا ستاسو شخصي پورټ دی:

ssh -N -L 6380:127.0.0.1:6379 deploy@YOUR_SERVER_IP -p 22

تر هغه چې دا چلېږي، ستاسو په کمپیوټر کې redis-cli -p 6380 او ډیسکټاپ وسیلې د سرور له Redis سره خبرې کوي. انټرنېټ ته هېڅ نوی شی نه پرانیستل کېږي. د SSH کلیو لارښود سره تونل پرته له پاسورډ ننوځي.

څومره چټک دی

د Micro په ازمېښتي سرور کې redis-benchmark له 50 پېرېدونکو سره دا پایلې ورکړې:

ازمېښتپه ثانیه کې غوښتنېمنځنی ځنډ
SET30,3031.0 ms
GET35,1490.9 ms
SET، په هر تګ راتګ کې 16 کمانډونه272,1092.4 ms
GET، په هر تګ راتګ کې 16 کمانډونه414,9381.3 ms

د وېب اپ د کیش یا د دندو کتار لپاره دا له اړتیا ډېر زیات دی. اضافي چټکتیا د کمانډونو په ډلو کې لېږلو (pipelining) څخه راځي.

کوم پلان

Redis ستاسو د معلوماتو لپاره RAM ته اړتیا لري او بل څه ته نږدې نه. Nano (2 vCPU، 1 GB، په میاشت کې $3) د maxmemory 256mb سره د یوه کوچني اپ تر څنګ Redis چلوي. Micro (2 GB، په میاشت کې $5) د لوی کیش او اپ دواړو لپاره ځای پرېږدي. که بل څه باید مستقیم Redis ته وصل شي، خپل IPv4 واخلئ (له Nano-IP څخه، په میاشت کې $8) او په فایروال کې یوازې هماغه پته اجازه کړئ. ټول پلانونه د VPS په پاڼه کې دي، او تادیه د Base، Ethereum یا Polygon په شبکو کې په USDT، USDC یا ETH کېږي.

پوښتنې

Redis څومره RAM ته اړتیا لري؟

Redis پخپله ډېر کوچنی دی: زموږ په سرور کې له نصب سمدستي وروسته 13.5 MB. هغه څه چې ورته اړتیا لري ستاسو د معلوماتو لپاره ځای دی، ځکه معلومات په حافظه کې ساتل کېږي. maxmemory هغومره وټاکئ چې سرور یې ورکولی شي، د بېلګې په توګه په 1 GB سرور کې 256 MB، او وټاکئ چې کله ډکه شي څه پېښ شي.

Redis که Valkey؟

Valkey د Redis یو فورک دی چې له Redis 7.2 څخه پیل شوی او ورته پروتوکول کاروي، نو ډېری پېرېدونکي له دواړو سره کار کوي. Ubuntu 24.04 یوازې Redis 7.0.15 لري. Debian 13 دواړه Redis 8.0 او Valkey 8.1 لري، او Debian 12 Valkey 8.0 له backports څخه ترلاسه کوي. د دې لارښود ګامونه په دواړو کې کار کوي.

Redis له ګډوډۍ وروسته ولې معلومات له لاسه ورکوي؟

په ډیفالټ ډول Redis، د بدلو شویو کلیو د شمېر پر بنسټ، هر څو دقیقې وروسته په ډیسک کې یو انځور ساتي. کله چې موږ پروسه ووژله، هغه کلي چې له وروستي انځور وروسته لیکل شوې وه ورکه وه. د AOF فایل فعال کړئ چې هره ثانیه لیکي، بیا به یوه ګډوډي تاسو ته تر ټولو ډېر شاوخوا یوه ثانیه لیکنه ضایع کړي.

ما redis.conf ته requirepass ورزیات کړ، نو Redis ولې لا هم پرته له پاسورډ کمانډونه مني؟

شونې ده ځکه چې کله نا کله CONFIG REWRITE چلول شوی و. په Redis 7 کې دا د redis.conf په پای کې user default on nopass ~* &* +@all کرښه ورزیاتوي، او دا کرښه پورته لیکل شوی requirepass بې اغېزې کوي. پاسورډ د CONFIG SET requirepass په مرسته وټاکئ، بیا CONFIG REWRITE وچلوئ، او Redis به یې په همدې کرښه کې وساتي.

ایا کولی شم پورټ 6379 انټرنېټ ته پرانیزم؟

مه یې پرانیزئ. پرانیستي Redis پورټونه تل سکین کېږي او سرورونو ته د ننوتلو عامه لار ده. له خپل کمپیوټر څخه د SSH تونل له لارې Redis ته وصل شئ، یا یې په هماغه سرور کې وساتئ چې هغه اپ پکې دی چې دا کاروي.

تبصرې

لا تبصرې نشته. لومړی اوسئ.

یوه تبصره پریږدئ

تبصرې د ښکاره کیدو مخکې اعتدال کیږي.