EQVPS

Redis በ VPS ላይ እንዴት እንደሚጫን፦ የማህደረ ትውስታ ገደብ፣ በዲስክ ማስቀመጥ እና የማይጠፋ የይለፍ ቃል

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 ውስጥ ያስቀምጣል፣ ከዳግም ማስጀመር በኋላ እንዲቆዩ። ከደረጃ 4 በፊት ማወቅ ያለብዎትን መስመርም ይጨምራል።

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 ነው።

FAQ

Redis ምን ያህል RAM ያስፈልገዋል?

Redis ራሱ በጣም ትንሽ ነው፦ በሰርቨራችን ላይ ከተጫነ በኋላ ወዲያውኑ 13.5 MB። የሚያስፈልገው ለዳታዎ ቦታ ነው፣ ምክንያቱም ዳታው በማህደረ ትውስታ ውስጥ ይቀመጣል። maxmemoryን ሰርቨሩ ሊሰጥ በሚችለው መጠን ያዘጋጁ፣ ለምሳሌ በ 1 GB ሰርቨር ላይ 256 MB፣ እና ሲሞላ ምን እንደሚሆን ይምረጡ።

Redis ወይስ Valkey?

Valkey ከ Redis 7.2 የተነሳ የ Redis ፎርክ ሲሆን ተመሳሳይ ፕሮቶኮል ይጠቀማል፣ ስለዚህ አብዛኞቹ ደንበኞች ከሁለቱም ጋር ይሰራሉ። Ubuntu 24.04 Redis 7.0.15ን ብቻ ይዟል። Debian 13 Redis 8.0ም Valkey 8.1ም አለው፣ Debian 12 ደግሞ Valkey 8.0ን ከ backports ያገኛል። የዚህ መመሪያ ደረጃዎች ለሁለቱም ይሰራሉ።

Redis ከብልሽት በኋላ ለምን ዳታ ያጣል?

በነባሪ Redis በተለወጡ ቁልፎች ብዛት መሰረት በየጥቂት ደቂቃው ቅጽበታዊ ምስል በዲስክ ላይ ያስቀምጣል። ሂደቱን ስንገድለው ከመጨረሻው ምስል በኋላ የተጻፈው ቁልፍ ጠፍቶ ነበር። በየሰከንዱ የሚጽፈውን AOF ፋይል ያብሩ፣ ከዚያ ብልሽት ቢበዛ ወደ አንድ ሰከንድ ገደማ የሚሆን ጽሑፍ ብቻ ያሳጣዎታል።

requirepassን ወደ redis.conf ጨመርኩ፣ ታዲያ Redis ለምን አሁንም ያለ ይለፍ ቃል ትዕዛዞችን ይቀበላል?

ምናልባት በአንድ ወቅት CONFIG REWRITE ስለተሄደ ነው። በ Redis 7 ይህ ትዕዛዝ በ redis.conf መጨረሻ user default on nopass ~* &* +@all የሚለውን መስመር ይጨምራል፣ ይህ መስመርም ከላይ የተጻፈውን requirepass ይሽረዋል። የይለፍ ቃሉን በ CONFIG SET requirepass ያዘጋጁ፣ ከዚያ CONFIG REWRITEን ያሂዱ፣ Redis በዚያው መስመር ያስቀምጠዋል።

ፖርት 6379ን ለኢንተርኔት መክፈት እችላለሁ?

አይክፈቱ። ክፍት የ Redis ፖርቶች ያለማቋረጥ ይቃኛሉ፣ ወደ ሰርቨሮችም የተለመደ መግቢያ ናቸው። ከኮምፒውተርዎ በ SSH ዋሻ በኩል ከ Redis ጋር ይገናኙ፣ ወይም ከሚጠቀመው መተግበሪያ ጋር በአንድ ሰርቨር ላይ ያቆዩት።

አስተያየቶች

እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።

አስተያየት ይተዉ

አስተያየቶች ከመታየታቸው በፊት ይጣራሉ።