المقدمة
Redis هو متجر بيانات مفتوح المصدر للقيم الرئيسية في الذاكرة. يأتي مع العديد من الأوامر التي يمكن أن تساعد في حل المشكلات وتصحيح الأخطاء. بسبب طبيعة Redis كـمخزن للقيم الرئيسية في الذاكرة، تركز العديد من هذه الأوامر على إدارة الذاكرة، ولكن هناك أوامر أخرى قيمة لتوفير نظرة عامة على حالة خادم Redis الخاص بك. ستوفر هذه الدورة التعليمية تفاصيل حول كيفية استخدام بعض هذه الأوامر للمساعدة في تشخيص وحل المشكلات التي قد تواجهها أثناء استخدامك لـ Redis.
كيفية استخدام هذا الدليل
تم كتابة هذا الدليل كورقة مرجعية مع أمثلة مستقلة. نحن نشجعك على الانتقال إلى أي قسم يكون ذا صلة بالمهمة التي تحاول إتمامها.
تم اختبار الأوامر المعروضة في هذا الدليل على خادم Ubuntu 22.04 يعمل بنسخة Redis 6.0.16. لإعداد بيئة مشابهة، يمكنك اتباع الخطوة 1 في دليلنا عن كيفية تثبيت وتأمين Redis على Ubuntu 22.04. سنقوم بتوضيح كيفية سلوك هذه الأوامر عن طريق تشغيلها باستخدام redis-cli
، واجهة سطر أوامر Redis. إذا كنت تستخدم واجهة Redis مختلفة — مثل Redli، على سبيل المثال — قد تختلف النتيجة الدقيقة لبعض الأوامر.
بدلاً من ذلك، يمكنك توفير نسخة مديرة لقاعدة بيانات Redis لاختبار هذه الأوامر، ولكن اعتمادًا على مستوى التحكم المسموح به من قبل مزود خدمة قاعدة البيانات الخاص بك، قد لا تعمل بعض الأوامر في هذا الدليل كما هو موضح. لتوفير قاعدة بيانات مُدارة من DigitalOcean، اتبع توثيق منتج Managed Databases لدينا. بعد ذلك، يجب عليك إما تثبيت Redli أو إعداد نفق TLS من أجل الاتصال بقاعدة البيانات المدارة عبر TLS.
حل مشكلات ذاكرة
memory usage
يخبرك عن كمية الذاكرة التي يتم استخدامها حاليًا بواسطة مفتاح واحد. يأخذ اسم المفتاح كوسيطة ويخرج عدد البايتات التي يستخدمها. أولاً، قم بتعيين متغير مثالي:
- set key_meaningOfLife "Food"
بعد ذلك، قم بفحص الذاكرة باستخدام memory usage
:
- memory usage key_meaningOfLife
Output(integer) 88
لفهم أكثر عامة حول كيفية استخدام خادم Redis لذاكرته، يمكنك تشغيل أمر memory stats
:
- memory stats
يقوم هذا الأمر بإخراج مجموعة من المقاييس المتعلقة بالذاكرة وقيمها. التالي هي المقاييس التي يقوم بالإبلاغ عنها memory stats
:
peak.allocated
: أقصى عدد من البايت المستهلكة بواسطة Redistotal.allocated
: العدد الإجمالي للبايت المخصصة بواسطة Redisstartup.allocated
: العدد الابتدائي من البايت المستهلكة بواسطة Redis عند التشغيلreplication.backlog
: حجم سجل التكرار ، بالبايتclients.slaves
: الحجم الإجمالي لجميع التكاليف الزائدة للنسخةالاحتياطية ، وهذا يعني الإخراج والمخرجات وسياقات الاتصالclients.normal
: الحجم الإجمالي لجميع التكاليف الإضافية للعميلaof.buffer
: الحجم الإجمالي لمخزن الملف الذي يتم إلحاقه وإعادة كتابةالملف بطريقة الإلحاقdb.0
: التكاليف الزائدة للقواميس الرئيسية وانتهاء الصلاحية لكل قاعدة بيانات قيد الاستخدام على الخادم ، مُبلَغَةً بالبايتoverhead.total
: مجموع جميع التكاليف المستخدمة لإدارة مساحة مفاتيح Rediskeys.count
: العدد الإجمالي للمفاتيح المخزنة في جميع قواعد البيانات على الخادمkeys.bytes-per-key
: نسبة استخدام الذاكرة الصافية للخادم وkeys.count
dataset.bytes
: حجم المجموعة البيانية ، بالبايتdataset.percentage
: النسبة المئوية لاستخدام الذاكرة الصافية لـ Redis التي تستغرقهاdataset.bytes
peak.percentage
: النسبة المئوية لـpeak.allocated
المأخوذة منtotal.allocated
التجزئة
: النسبة بين كمية الذاكرة المستخدمة حاليًا مقسومة على الذاكرة الفعلية التي يستخدمها Redis بالفعل
memory malloc-stats
يوفر تقريرًا داخليًا للإحصاءات من جيمالوك، مكون تخصيص الذاكرة المستخدم بواسطة Redis على أنظمة Linux:
- memory malloc-stats
إذا بدا لك أنك تواجه مشاكل تتعلق بالذاكرة، ولكن تحليل ناتج الأوامر السابقة يثبت عدم فائدته، يمكنك محاولة تشغيل memory doctor
:
- memory doctor
سيقوم هذا الميزة بإخراج أي مشاكل في استهلاك الذاكرة التي يمكنها العثور عليها واقتراح حلول محتملة.
الحصول على معلومات عامة حول مثيل Redis الخاص بك
A debugging command that isn’t directly related to memory management is monitor
. This command allows you to review a constant stream of every command processed by the Redis server:
- monitor
OutputOK
1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared"
1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"
أمر آخر مفيد لتصحيح الأخطاء هو info
، الذي يعيد عدة كتل من المعلومات والإحصائيات حول الخادم:
- info
Output# Server
redis_version:6.0.16
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a3fdef44459b3ad6
redis_mode:standalone
os:Linux 5.15.0-41-generic x86_64
. . .
يعيد هذا الأمر الكثير من المعلومات. إذا كنت ترغب في إرجاع كتلة معلومات واحدة فقط، يمكنك تحديدها كوسيطة لـ info
:
- info CPU
Output# CPU
used_cpu_sys:173.16
used_cpu_user:70.89
used_cpu_sys_children:0.01
used_cpu_user_children:0.04
لاحظ أن المعلومات المعادة بواسطة الأمر info
ستعتمد على الإصدار الذي تستخدمه من Redis.
استخدام الأمر keys
الأوامر
هي مفيدة في الحالات التي نسيت فيها اسم المفتاح، أو ربما قمت بإنشاء واحد ولكن بطريق الخطأ قمت بكتابة اسمه بشكل غير صحيح. الأوامر
تبحث عن مفاتيح تتناسب مع نمط معين:
- keys pattern
تدعم المتغيرات التي تتبع نمط الجلوب الاتي:
؟
هو رمز بدل يمثل أي حرف فردي، لذاs؟mmy
يتناسب معsammy
،sommy
، وsqmmy
*
هو رمز بدل يمثل أي عدد من الأحرف، بما في ذلك عدم وجود أي أحرف على الإطلاق، لذاsa*y
يتناسب معsammy
،say
،sammmmmmy
، وsalmony
- يمكنك تحديد حرفين أو أكثر يمكن أن يتضمنهما النمط عن طريق وضعهما في قوسين، لذا
s[ai]mmy
سيتناسب معsammy
وsimmy
، ولكن لا يتناسب معsummy
- لتعيين بديل يتجاهل حرفًا أو أكثر، ضعهم بين قوسين وسبقهم بعلامة الرف (carrot) (
^
)، لذاs[^oi]mmy
سيتناسب معsammy
وsxmmy
، ولكن لا يتناسب معsommy
أوsimmy
- لتعيين بديل يتضمن مجموعة من الحروف، افصل بين بداية ونهاية النطاق بواسطة إشارة الشرطة وضعها في قوسين، لذا
s[a-o]mmy
سيتناسب معsammy
،skmmy
، وsommy
، ولكن لا يتناسب معsrmmy
تحذير: يحذر توثيق Redis من أنه يجب تجنب استخدام الأوامر
تقريباً في بيئة الإنتاج لأن ذلك قد يؤدي إلى تأثير سلبي كبير على الأداء.
الختام
يوضح هذا الدليل عددًا من الأوامر التي تكون مفيدة لتحديد المشاكل وحلها التي قد يواجهها المستخدم أثناء العمل مع Redis. إذا كانت هناك أوامر أخرى ذات صلة أو وسائل أو إجراءات أخرى ترغب في التعرف عليها في هذا الدليل، يرجى السؤال أو تقديم الاقتراحات في التعليقات.
لمزيد من المعلومات حول أوامر Redis، تفقد سلسلة الدروس الخاصة بنا حول كيفية إدارة قاعدة بيانات Redis.
Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis