English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تكوين Redis

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf(Windows 名为 redis.windows.conf)。

你可以通过 CONFIG 命令查看或设置配置项。

النحو

Redis CONFIG 命令格式如下:

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

مثال على الاستخدام

redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"

使用 * 号获取所有配置项:

مثال على الاستخدام

redis 127.0.0.1:6379> CONFIG GET *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  5) "masterauth"
  6) ""
  7) "unixsocket"
  8) ""
  9) "logfile"
 10) ""
 11) "pidfile"
 12) "/var/run/redis.pid"
 13) "maxmemory"
 14) "0"
 15) "maxmemory-samples"
 16) "3"
 17) "timeout"
 18) "0"
 19) "tcp-keepalive"
 20) "0"
 21) "auto-aof-rewrite-percentage"
 22) "100"
 23) "auto-aof-rewrite-min-size"
 24) "67108864"
 25) "hash-max-ziplist-entries"
 26) "512"
 27) "hash-max-ziplist-value"
 28) "64"
 29) "list-max-ziplist-entries"
 30) "512"
 31) "list-max-ziplist-value"
 32) "64"
 33) "set-max-intset-entries"
 34) "512"
 35) "zset-max-ziplist-entries"
 36) "128"
 37) "zset-max-ziplist-value"
 38) "64"
 39) "hll-sparse-max-bytes"
 40) "3000"
 41) "lua-time-limit"
 42) "5000"
 43) "slowlog-log-slower-than"
 44) "10000"
 45) "latency-monitor-threshold"
 46) "0"
 47) "slowlog-max-len"
 48) "128"
 49) "port"
 50) "6379"
 51) "tcp-backlog"
 52) "511"
 53) "databases"
 54) "16"
 55) "repl-ping-slave-period"
 56) "10"
 57) "repl-timeout"
 58) "60"
 59) "repl-backlog-size"
 60) "1048576"
 61) "repl-backlog-ttl"
 62) "3600"
 63) "maxclients"
 64) "4064"
 65) "watchdog-period"
 66) "0"
 67) "slave-priority"
 68) "100"
 69) "min-slaves-to-write"
 70) "0"
 71) "min-slaves-max-lag"
 72) "10"
 73) "hz"
 74) "10"
 75) "no-appendfsync-on-rewrite"
 76) "no"
 77) "slave-serve-stale-data"
 78) "yes"
 79) "slave-read-only"
 80) "yes"
 81) "stop-writes-on-bgsave-error"
 82) "yes"
 83) "daemonize"
 84) "no"
 85) "rdbcompression"
 86) "yes"
 87) "rdbchecksum"
 88) "yes"
 89) "activerehashing"
 90) "yes"
 91) "repl-disable-tcp-nodelay"
 92) "no"
 93) "aof-rewrite-incremental-fsync"
 94) "yes"
 95) "appendonly"
 96) "no"
 97) "dir"
 98) "/home/deepak/Downloads/redis-2.8.13/src"
 99) "maxmemory-policy"
100) "volatile-lru"
101) "appendfsync"
102) "everysec"
103) "save"
104) "3600 1 300 100 60 10000"
105) "loglevel"
106) "notice"
107) "client-output-buffer-limit"
108) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
109) "unixsocketperm"
110) "0"
111) "slaveof"
112) ""
113) "notify-keyspace-events"
114) ""
115) "bind"
116) ""

تحرير الإعداد

يمكنك تعديل ملف redis.conf أو استخدام CONFIG set استخدام الأمر

النحو

CONFIG SET قواعد النحو الأساسية:

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

مثال على الاستخدام

redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"

شرح المعاملات

شرح إعداد redis.conf كما يلي:

الترقيمإعدادشرح
1
daemonize no
Redis لا يعمل بشكل افتراضي كخادم الخلفية، يمكنك تعديل هذا الإعداد، باستخدام yes لتمكين الخادم الخلفي (لا يدعم Windows تكوين الخيط الخلفي)
2
pidfile /var/run/redis.pid
عند تشغيل Redis كخادم الخلفية، يقوم Redis بشكل افتراضي بكتابة pid في ملف /var/run/redis.pid، يمكنك تحديد pidfile لتحديد
3
منفذ 6379
تحديد ميناء Redis الذي يسمع عليه، الافتراضي هو 6379، يشرح الكاتب في مدونة له لماذا تم اختيار 6379 كمنفذ افتراضي، لأن 6379 هو الرقم الذي يُمثل MERZ في مفاتيح الهاتف، وMERZ مستوحى من اسم مغنية إيطالية أليسيا ميرز
4
bind 127.0.0.1
عنوان المضيف الم绑定
5
timeout 300
إغلاق الاتصال بعد فترة راحة العميل لعدد ثوانٍ معين، إذا تم تحديد 0، فإن ذلك يعني إغلاق هذه الميزة
6
مستوى السجلات notice
تحديد مستوى تسجيل السجلات، Redis يدعم أربعة مستويات: debug، verbose، notice، warning، الافتراضي هو notice
7
ملف السجلات stdout
طريقة تسجيل السجلات، الافتراضية هي إخراج معياري، إذا تم تكوين Redis لتشغيله كخادم الخلفية، وكانت هنا تكوين سجلات إخراج معياري، فإن السجلات ستُرسل إلى /dev/null
8
قواعد البيانات 16
إعداد عدد قواعد البيانات، قاعدة البيانات الافتراضية هي 0، يمكنك استخدام أمر SELECT لتعيين id قاعدة البيانات في الاتصال
9
تحفظ <ثواني> <التغييرات>

يقدم ملف تكوين Redis الافتراضي ثلاثة شروط:

save 900 1

save 300 10

save 60 10000

تعني 1 تغيير في الدقيقة الـ 900 (15 دقيقة)،10 تغييرات في الدقيقة الـ 300 (5 دقائق) و10000 تغيير في الدقيقة الـ 60.

تحديد فترة زمنية في غضونها،كمية تحديثات معينة،سيتم نسخ البيانات إلى ملفات البيانات.
10
rdbcompression yes
تحديد ما إذا كان يجب ضغط البيانات عند تخزينها محليًا،القيمة الافتراضية هي yes،يستخدم Redis ضغط LZF،إذا كان من الممكن توفير وقت المعالجة،يمكن إلغاء هذا الخيار،لكن سيؤدي ذلك إلى أن تصبح ملفات قاعدة البيانات ضخمة.
11
dbfilename dump.rdb
تحديد اسم ملف قاعدة البيانات المحلية،القيمة الافتراضية هي dump.rdb.
12
dir ./
تحديد مسار مجلد تخزين قاعدة البيانات المحلية.
13
slaveof <masterip> <masterport>
إعداد عنوان IP وأيポート لخدمة الماستر عندما تكون هذه الماكينة خدمة slave،سيقوم Redis تلقائيًا بالتنسيق البيانات من الماستر عند بدء التشغيل.
14
masterauth <master-password>
عندما يتم تعيين حماية كلمة المرور في خدمة الماستر،سيتم الاتصال بـ master بواسطة كلمة المرور لـ slave.
15
requirepass foobared
إعداد كلمة المرور للاتصال بـ Redis،إذا تم تعيين كلمة المرور،فسيحتاج العملاء إلى تقديم كلمة المرور من خلال الأمر AUTH <password> عند الاتصال بـ Redis،القيمة الافتراضية معتمدة.
16
 maxclients 128
إعداد عدد أكبر عدد من الاتصالات العملاء في نفس الوقت،القيمة الافتراضية غير محددة،يمكن لـ Redis فتح عدد من الاتصالات العملاء في نفس الوقت يساوي عدد الأوصاف المفتوحة القصوى لل عملية Redis،إذا تم تعيين maxclients 0،فإنه يعني عدم وجود تحديد.عندما يصل عدد الاتصالات العملاء إلى الحد الأقصى،سيغلق Redis الاتصال الجديد ويقوم بإرجاع رسالة خطأ max number of clients reached إلى العملاء.
17
maxmemory <bytes>
تحديد الحد الأقصى لمساحة الذاكرة لـ Redis،سيقوم Redis بتشغيل البيانات في الذاكرة عند بدء التشغيل،وعندما يصل إلى الحد الأقصى للذاكرة،سيحاول Redis أولاً حذف المفاتيح المنتهية الصلاحية أو القريبة من انتهاء الصلاحية،وعندما يصل إلى الحد الأقصى المحدد للذاكرة بعد ذلك،سيكون من المستحيل إجراء عمليات الكتابة،لكن يمكن إجراء عمليات القراءة.
18
appendonly no
تعیین می‌کند که آیا در هر بار عملیات به‌روزرسانی، لوگ ثبت شود یا خیر، Redis به صورت پیش‌فرض داده‌ها را به صورت غیرمستقیم به دیسک می‌نویسد، اگر این گزینه فعال نشود، ممکن است در صورت قطع برق، داده‌های مدت زمانی گم شوند. زیرا خود Redis داده‌ها را بر اساس شرایط save ذخیره می‌کند، بنابراین برخی از داده‌ها ممکن است در مدت زمانی فقط در حافظه وجود داشته باشند. مقدار پیش‌فرض no است
19
appendfilename appendonly.aof
نام فایل لوگ به‌روزرسانی را تعیین می‌کند، مقدار پیش‌فرض appendonly.aof است
20
appendfsync everysec

شرایط به‌روزرسانی لوگ را تعیین می‌کند، 3 گزینه انتخابی وجود دارد:

  • noمعنای انتظار تا سیستم عامل داده‌ها را به صورت خودکار به دیسک همگام‌سازی کند (سریع)

  • alwaysمعنای هر بار که عملیات به‌روزرسانی انجام می‌شود، دستور fsync() به صورت دستی فراخوانی شود تا داده‌ها به دیسک نوشته شوند (آهسته، امن)

  • everysecمعنای هر ثانیه یک بار همگام‌سازی شود (در مقایسه با مقدار پیش‌فرض)

21
vm-enabled no
تعیین می‌کند که آیا مکانیزم حافظه مجازی فعال است یا خیر، مقدار پیش‌فرض no است، به طور خلاصه توضیح می‌دهم که VM مکانیزمی است که داده‌ها را به صورت صفحه ذخیره می‌کند، Redis صفحات کمتر مورد استفاده را به دیسک swap می‌کند (داده‌های کمتر مورد استفاده به معنای داده‌های سرد است)، صفحات بیشتری که مورد استفاده قرار می‌گیرند به صورت خودکار از دیسک به حافظه منتقل می‌شوند (در مقاله‌های بعدی به طور دقیق‌تر به تحلیل مکانیزم VM Redis خواهم پرداخت)
22
vm-swap-file /tmp/redis.swap
مسیر فایل حافظه مجازی، مقدار پیش‌فرض /tmp/redis.swap است، نمی‌توان چندین نمونه Redis به اشتراک گذاشت
23
vm-max-memory 0
تمام داده‌های بزرگتر از vm-max-memory به حافظه مجازی وارد می‌شوند، مهم نیست که vm-max-memory چقدر کوچک تنظیم شده باشد، تمام داده‌های شاخص به صورت حافظه‌ای ذخیره می‌شوند (داده‌های شاخص Redis به معنای keys است)، یعنی زمانی که vm-max-memory به 0 تنظیم شود، در واقع تمام values در دیسک وجود دارند. مقدار پیش‌فرض 0 است
24
vm-page-size 32
Redis swap ملفات به تعداد زیادی صفحه تقسیم شده‌اند، یک شیء می‌تواند در چندین صفحه ذخیره شود، اما یک صفحه نمی‌تواند توسط چندین شیء به اشتراک گذاشته شود، vm-page-size باید بر اساس اندازه داده‌های ذخیره شده تنظیم شود، نویسنده پیشنهاد می‌دهد که اگر تعداد زیادی شیء کوچک ذخیره شود، اندازه صفحه بهترین انتخاب 32 یا 64bytes است؛ اگر شیءهای بزرگتر ذخیره شوند، می‌توان از صفحه بزرگتر استفاده کرد، اگر مطمئن نبود، از مقدار پیش‌فرض استفاده کنید
25
vm-pages 134217728
تحديد عدد الصفوف في ملف الـ
26
vm-max-threads 4
تحديد عدد الأنماط التي يتم فيها الوصول إلى ملف الـ
27
glueoutputbuf yes
تحديد ما إذا كان يجب دمج الحزم الصغيرة في حزمة واحدة عند الرد على العميل، يتم دمجها بشكل افتراضي
28
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
تحديد ما إذا كان يجب استخدام خوارزمية الترميز الخاصة عند تجاوز عدد معين أو عند تجاوز عدد الأعمدة القصوى لقيمة معينة
29
activerehashing yes
تحديد ما إذا كان يجب تشغيل إعادة الترميز للـ
30
include /path/to/local.conf
تحديد ملف تكوين آخر، يمكن استخدام نفس ملف التكوين في عدة نماذج Redis على نفس المضيف، بينما تظل كل نموذج يمتلك تكوينًا خاصًا به