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 پېرېدونکو سره دا پایلې ورکړې:
| ازمېښت | په ثانیه کې غوښتنې | منځنی ځنډ |
|---|---|---|
| SET | 30,303 | 1.0 ms |
| GET | 35,149 | 0.9 ms |
| SET، په هر تګ راتګ کې 16 کمانډونه | 272,109 | 2.4 ms |
| GET، په هر تګ راتګ کې 16 کمانډونه | 414,938 | 1.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 کېږي.
تبصرې
لا تبصرې نشته. لومړی اوسئ.