Maqolalar katalogi
Bitta serverda bir nechtasini ishga tushirishni xohlaysizmiWordPressVeb-saytingizda Redis obyektlarini keshlash yoqilgan bo'lsa, keshlangan ma'lumotlarning ustiga yozilishi va oldingi xatolar haqida xavotirdamisiz? Ushbu qo'llanma Redis-ni bir xil serverdagi bir nechta WordPress saytlarida sozlash bo'yicha eng yaxshi qo'llanmani taqdim etadi!
Ushbu qo'llanmada wp-config.php faylini o'zgartirish orqali turli xil Redis ma'lumotlar bazalarini (0-15) va Cache Key Salt prefiksini ajratishning ikkita usuli o'rgatiladi. Bu usullar ma'lumotlarning chalkashtirilishini mukammal darajada hal qiladi va yuqori parallel serverlarning ish faoliyatini sezilarli darajada yaxshilaydi. Veb-masterlar uchun zarur bo'lgan narsa!
Bir necha kun oldin, mustaqil veb-saytni boshqaradigan do'stim ikkita WordPress veb-sayti so'nggi paytlarda g'alati ishlayotganidan shikoyat qildi. A veb-saytidagi post sarlavhalari B veb-saytiga yo'naltirilib borardi va B veb-saytidan keshlangan rasmlar A veb-saytining sharhlar bo'limida tushunarsiz ravishda paydo bo'ldi. Men darhol kuldim; gap shunchaki Redis izolyatsiya uchun sozlanmaganligida.
Bir o'ylab ko'ring: ko'p odamlar pulni tejash maqsadida bir nechta WordPress veb-saytlarini bitta serverga sig'dirib, ularning barchasida keshlash uchun Redisdan foydalanishni yoqtirishadi. Natija qanday? Barcha veb-saytlar standart ravishda Redis 0 ma'lumotlar bazasiga ulanishni amalga oshiradi, bu esa ma'lumotlarning chalkashligiga olib keladi. Agar A veb-saytining kesh kaliti B veb-saytining kesh kaliti bilan mos kelsa, bu falokatga olib keladi.
Rostini aytsam, men ham bu tuzoqqa tushib qoldim. Ichki bilimlar bazasini yaratayotganimda, ikkita sinov muhiti bitta Redis nusxasini birgalikda ishlatar edi, natijada keshlar bir-birining ustiga yozib qo'yildi. Muammoni tushunish uchun ko'p vaqt kerak bo'ldi. Shunday qilib, men bu sohada dastlabki tajribam bilan o'rtoqlashdim.
Bu muammoni hal qilishning asosiy g'oyasi izolyatsiyadir. Har bir veb-saytning ma'lumotlari bir-biriga xalaqit bermasdan, o'zining alohida maydonida qoladi. Bu izolyatsiyaga qanday erishamiz? Ikkita asosiy yondashuv mavjud.

1-variant: Turli veb-saytlarga turli Redis ma'lumotlar bazalarini tayinlang
Birinchi yondashuv, shuningdek, mening eng yaxshi tavsiyam, har bir veb-saytga alohida Redis ma'lumotlar bazasini tayinlashdir. Redisda sukut bo'yicha 0 dan 15 gacha raqamlangan 16 ta ma'lumotlar bazasi mavjud. Siz A veb-saytida 0 ma'lumotlar bazasi, B veb-saytida 1-ma'lumotlar bazasi va boshqalardan foydalanishingiz mumkin. Bu har bir veb-saytga alohida qattiq disk bo'limi berishga o'xshaydi, bu jismoniy ma'lumotlarni izolyatsiya qilishni va eng toza ma'lumotlarni saqlashni ta'minlaydi.
Aniq qadamlar quyidagicha: Birinchidan, har bir WordPress veb-saytining administrator paneliga "Redis Object Cache" deb nomlangan plaginni o'rnating. Ishlab chiquvchi Till Krüss bo'lib, bu plagin eng barqaror va ishonchli hisoblanadi. Keshlashni hali yoqmang. Keyin, FTP yoki SSH orqali serverga ulaning, har bir veb-saytning asosiy katalogida wp-config.php faylini toping va "/* Hammasi shu, tahrirlashni to'xtating! Nashr qilishdan zavqlaning. */" qatori ustiga bir nechta konfiguratsiya qatorlarini qo'shing.
Masalan, A veb-saytining konfiguratsiyasi:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 0 ); // 用数据库0
define( 'WP_CACHE_KEY_SALT', 'site_a_' ); // 加个独立前缀,双重保险B veb-sayti uchun shunchaki ma'lumotlar bazasi raqamini va prefiksini o'zgartiring:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 1 ); // 用数据库1
define( 'WP_CACHE_KEY_SALT', 'site_b_' ); // 前缀也要改Aytgancha, agar sizning Redis nusxangizda parol bo'lsa, uni har bir veb-sayt uchun konfiguratsiyaga qo'shishingiz kerak:
define( 'WP_REDIS_PASSWORD', '你的Redis密码' );Konfiguratsiya fayllarini o'zgartirgandan so'ng, har bir veb-saytga qayting.WordPress backend"Sozlamalar" -> "Redis" bo'limiga o'ting va "Ob'ekt keshini yoqish" tugmasini bosing. Agar hamma narsa muammosiz bo'lsa, holat "Ulangan" deb ko'rsatiladi. Bu vaqtda ikkita veb-saytdan olingan ma'lumotlar ajratiladi.
2-variant: Turli Redis kalit prefikslaridan foydalaning (Tuz)
Biroq, sizni oldindan ogohlantirishim kerak bo'lgan bir kamchilik bor. Agar sizda 16 dan ortiq veb-sayt bo'lsa yoki faqat bitta ma'lumotlar bazasini taqdim etadigan bulutli Redis xizmatidan foydalanayotgan bo'lsangiz, birinchi yondashuv ishlamaydi. Bunday holda, siz ikkinchi yondashuvdan foydalanishingiz kerak bo'ladi: turli xil Redis kalit prefikslaridan (Tuz) foydalanish.
Bu yondashuv barcha veb-saytlarga bir xil Redis ma'lumotlar bazasini ulashish imkonini beradi, ammo ma'lumotlarni noyob prefiks yordamida ajratib turadi. Sodda qilib aytganda, bu xuddi hamma bir binoda yashashga o'xshaydi, lekin har bir kvartiraning o'ziga xos manzili bor, bu esa yetkazib beruvchi haydovchilarning xato qilishining oldini oladi.
Konfiguratsiya usuli o'xshash, shuningdek, wp-config.php fayliga konfiguratsiya qo'shishni ham o'z ichiga oladi, ammo asosiysi shundaki, WP_CACHE_KEY_SALT noyob bo'lishi kerak, WP_REDIS_DATABASE esa bir xil bo'lishi mumkin (yoki bo'sh qoldirilishi mumkin, standart qiymati 0).
A veb-saytining konfiguratsiyasi:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_CACHE_KEY_SALT', 'www_siteA_com_' ); // 确保唯一B veb-saytining konfiguratsiyasi:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_CACHE_KEY_SALT', 'www_siteB_com_' ); // 确保唯一Konfiguratsiyadan so'ng, plagin orqa tomonida keshlashni yoqing.
Redis konfiguratsiyasining keng tarqalgan muammolari va yechimlari
Biroq, ochig'ini aytishim kerakki, ikkinchi variant moslashuvchan bo'lsa-da, u potentsial xavf tug'diradi. Agar plaginingiz keshni tozalashda butun 0-ma'lumotlar bazasini tozalasa, boshqa veb-saytlardan olingan ma'lumotlar noto'g'ri ta'sirlanishi mumkin. Shuning uchun, agar sizda 16 yoki undan kam veb-sayt bo'lsa, xavfsizlikni oshirish uchun birinchi variantdan foydalanishni tavsiya qilaman.
Konfiguratsiya jarayonida siz ba'zi muammolarga duch kelishingiz mumkin. Masalan, konfiguratsiya o'zgarishlarini kiritgandan so'ng veb-sayt xatolarni yoki bo'sh ekranni ko'rsatishi mumkin. Bunday hollarda, avval wp-config.php faylidagi kod sintaksisini tekshirib, vergul yoki nuqta-vergullar yo'qligini tekshiring. Bundan tashqari, serverda PHP Redis kengaytmasi (php-redis) o'rnatilganligiga ishonch hosil qiling; agar yo'q bo'lsa, avval uni o'rnating.
Yana bir keng tarqalgan savol: ma'lum bir veb-sayt keshini qanday tozalashim mumkin? Har bir veb-saytning WordPress administrator panelidagi "Keshni tozalash" tugmasini bosing. Agar siz birinchi usuldan (turli ma'lumotlar bazalari) foydalanayotgan bo'lsangiz, u faqat joriy veb-saytga mos keladigan ma'lumotlar bazasini tozalaydi va boshqa veb-saytlarga ta'sir qilmaydi. Agar siz ikkinchi usuldan (bir xil ma'lumotlar bazasi, turli prefikslar) foydalanayotgan bo'lsangiz, ba'zi plaginlar tozalash jarayonida butun 0-ma'lumotlar bazasini tozalashi mumkin, shuning uchun birinchi usul bir nechta saytlar uchun tavsiya etiladi.
Redisni sozlash aslida bir nechta telefonlarni zaryadlashga o'xshaydi. Siz har bir telefon uchun alohida zaryadlovchidan foydalanishingiz mumkin (1-variant) yoki har bir kabel uchun mustaqil kalitga ega quvvat simidan foydalanishingiz mumkin (2-variant). Asosiy printsip zaryadlash xavfsizligini ta'minlash va qisqa tutashuvlarning oldini olishdir.
Esimda, men bir nechta saytlarni o'rnatishni boshlaganimda, Redisni sozlash oddiy deb o'ylagandim — shunchaki bir nechta parametrlarni o'zgartirish, to'g'rimi? Lekin u aslida ishlab chiqarishga kiritilganda, keshlash bilan bog'liq har xil muammolar paydo bo'ldi. Keyinchalik men texnik tafsilotlar ko'pincha o'sha "oddiy ko'rinadigan" joylarda yashiringanini angladim.
Endi orqaga nazar tashlasak, konfiguratsiya jarayonining o'zi murakkab emas edi, ammo izolyatsiyaning asosiy tushunchasi juda muhim edi. Tizimni loyihalashda izolyatsiya barqarorlikni ta'minlashning kalitidir. Shaharsozlik singari, turar-joy hududlari, sanoat hududlari va tijorat hududlari bir-biridan ajratilishi kerak, aks holda tartibsizlik yuzaga keladi.
Xuddi shu narsa texnik konfiguratsiyaga ham tegishli. Har bir veb-sayt boshqalarga xalaqit bermasdan, o'zining mustaqil maydoniga ega bo'lishi kerak. Bu nafaqat texnik masala, balki dizayn tamoyilidir.Falsafa.
Siz shu yergacha o'qiganingiz uchun, agar foydali bo'lgan bo'lsa, iltimos, layk bosing va ulashing. Agar birinchi bo'lib yangiliklardan xabardor bo'lishni istasangiz, meni kuzatib borishingiz ham mumkin!
Maqolamni o'qiganingiz uchun tashakkur. Keyingi safar ko'rishguncha.
Umid qilamanki, Chen Veyliang blogi ( https://www.chenweiliang.com/ Bu yerda baham ko'rilgan "Bir xil serverda bir nechta WordPress veb-saytlari uchun Redisni qanday sozlash mumkin? Ma'lumotlarni chalkashtirib yubormaslikning eng yaxshi qo'llanmasi" maqolasi siz uchun foydali bo'lishi mumkin.
Ushbu maqolaning havolasini baham ko'rish uchun xush kelibsiz:https://www.chenweiliang.com/cwl-34366.html
