Artikel ini membawakan anda pengetahuan yang berkaitan tentang Redis, yang terutamanya memperkenalkan isu berkaitan tentang penyelesaian nilai besar kunci panas Redis Mari kita lihat bersama-sama. .
Pembelajaran yang disyorkan: Tutorial video Redis
Mengenai data panas Redis & soalan kunci besar dan nilai besar juga mudah ditanya tinggi -soalan peringkat Adalah lebih baik untuk mempelajari masalah sekaligus dan membiarkan penemuduga terdiam Dalam pengalaman kerja peribadi saya, masalah data panas lebih berkemungkinan dihadapi di tempat kerja daripada runtuhan salji Namun, kebanyakan masa, titik panas tidak cukup panas dan akan dimaklumkan dan diselesaikan lebih awal Tetapi apabila masalah ini tidak dapat dikawal, masalah dalam talian yang ditimbulkan akan cukup untuk meletakkan prestasi anda pada tahun ini.
Dalam keadaan biasa, data dalam gugusan Redis diagihkan sama rata ke setiap nod, dan permintaan diagihkan sama rata kepada setiap serpihan Walau bagaimanapun, dalam beberapa senario khas, seperti perangkak luaran, serangan dan produk panas Tunggu, contoh yang paling biasa ialah apabila seorang selebriti mengumumkan perceraian mereka di Weibo, dan orang ramai masuk meninggalkan mesej, menyebabkan fungsi ulasan Weibo ranap dalam tempoh yang singkat ini, bilangan lawatan ke kunci tertentu adalah terlalu besar dan permintaan akan dibuat untuk kunci yang sama kepada serpihan data yang sama, mengakibatkan beban yang tinggi pada serpihan dan menjadi halangan, yang membawa kepada satu siri masalah seperti runtuhan salji.
Analisis masalah: Kali terakhir saya mendengar bos besar dalam temuduga kumpulan Alibaba p7, saya ditanya soalan ini, indeks kesukarannya ialah lima bintang , tunggu saya Menjadi noob sememangnya satu kelebihan.
Jawapan: Saya ada sesuatu untuk diperkatakan tentang isu data panas Saya sedar tentang isu ini sejak mula-mula belajar menggunakan Redis, jadi apabila menggunakan ia Kami sengaja mengelak dan dengan tegas tidak menggali lubang untuk diri kami sendiri Masalah terbesar dengan data hotspot akan menyebabkan kegagalan yang disebabkan oleh beban yang tidak seimbang dalam gugusan Redis (iaitu, data condong.
Mula-mula mari kita bincangkan tentang punca utama kegagalan ketidakseimbangan beban kelompok Reids:
Jadi apakah kerosakan yang akan disebabkan oleh kekunci panas atau nilai yang besar:
Jawapan: Penyelesaian masalah ini agak luas Ia bergantung kepada senario perniagaan yang berbeza Contohnya, jika sesebuah syarikat menganjurkan aktiviti promosi, maka mesti ada cara untuk mengira produk yang mengambil bahagian dalam promosi terlebih dahulu , senario ini boleh melepasi kaedah anggaran. Untuk kecemasan dan ketidakpastian, Redis akan memantau data hotspot dengan sendirinya. Untuk meringkaskan:
public Connection sendCommand(final ProtocolCommand cmd, final byte[]... args) { //从参数中获取key String key = analysis(args); //计数 counterKey(key); //ignore }
Statistik lapisan proksi kluster Redis:
Seni bina edaran Redis berasaskan ejen seperti Twemproxy dan codis mempunyai pintu masuk bersatu dan boleh dikumpulkan pada lapisan Proksi Dilaporkan , tetapi kelemahannya adalah jelas, tidak semua seni bina kluster Redis mempunyai proksi.
Koleksi pelayan Redis:
Pantau QPS satu serpihan Redis, dan pantau nod di mana QPS dicondongkan ke tahap tertentu untuk mendapatkan kunci tempat liputan. Redis menyediakan arahan monitor, anda boleh mengira semua arahan pada nod Redis tertentu dalam tempoh masa dan menganalisis kekunci panas Di bawah keadaan konkurensi yang tinggi, akan ada bahaya tersembunyi letupan memori dan prestasi Redis, jadi kaedah ini sesuai untuk digunakan dalam tempoh yang singkat; ia juga hanya Ia boleh mengira kekunci hotspot nod Redis Untuk kelompok, statistik ringkasan diperlukan, yang sedikit menyusahkan dari perspektif perniagaan.
Empat kaedah yang dinyatakan di atas semuanya biasa digunakan dalam industri Saya mempunyai idea baharu dengan mengkaji kod sumber Redis. Jenis 5: Ubah suai kod sumber Redis.
Ubah suai kod sumber Redis: (Memikirkan idea daripada membaca kod sumber)
Saya mendapati bahawa Redis4.0 telah membawa kepada kita banyak perkara baharu Ciri, termasuk mekanisme penemuan kunci tempat liputan berdasarkan LFU Dengan ciri baharu ini, kami boleh melaksanakan statistik kunci tempat liputan atas dasar ini.
Psikologi penemubual: Pemuda itu agak berfikiran dan berfikiran luas, malah dia memberi perhatian untuk mengubah suai kod sumber Saya tidak mempunyai cita-cita ini. Kami memerlukan orang seperti ini dalam pasukan kami.
(Temui masalah, analisis masalah, selesaikan masalah, dan beritahu terus cara menyelesaikan masalah hot data tanpa menunggu penemuduga bertanya soalan. Ini kandungan teras)
Jawapan: Mengenai cara menguruskan isu hot data, terdapat dua aspek utama yang perlu dipertimbangkan dalam menyelesaikan masalah ini. Yang pertama ialah serpihan data, supaya Tekanan diagihkan secara sama rata kepada berbilang serpihan kluster untuk menghalang satu mesin daripada tergantung.
Ringkasan ringkasan:
Penemuduga: Anda menjawab dengan sangat baik dan menganggapnya sangat komprehensif.
Analisis masalah: Berbanding dengan konsep besar hot key, konsep big Value lebih mudah difahami Memandangkan Redis berjalan dalam satu thread, jika nilai an operasi adalah sangat besar, ia akan menjejaskan keseluruhan operasi Masa tindak balas redis mempunyai kesan negatif kerana Redis adalah pangkalan data struktur Nilai-Kekunci bermakna bahawa satu nilai mengambil jumlah yang paling langsung kesan pada gugusan Redis ialah data senget.
Jawapan: (Nak kecutkan saya? Saya bersedia.)
Biar saya bercakap dahulu tentang betapa besarnya Nilai, yang diberikan berdasarkan syarikat infrastruktur Nilai pengalaman boleh dibahagikan seperti berikut:
Nota: (Nilai pengalaman bukan standard, ia diringkaskan berdasarkan pemerhatian jangka panjang kes dalam talian oleh kakitangan operasi dan penyelenggaraan kluster)
Memandangkan Redis berjalan dalam satu utas, jika nilai operasi adalah sangat besar, ia akan memberi kesan negatif pada masa tindak balas keseluruhan redis. Oleh itu, ia boleh dibahagikan jika ia boleh dibahagikan dari segi perniagaan Berikut adalah beberapa contoh biasa: Pelan perobohan:
类似于场景一中的第一个做法,可以将这些元素分拆。
以 hash 为例,原先的正常存取流程是:
hget(hashKey, field); hset(hashKey, field, value)
现在,固定一个桶的数量,比如 10000,每次存取的时候,先在本地计算 field 的 hash 值,模除 10000,确定该 field 落在哪个 key 上,核心思想就是将 value 打散,每次只 get 你需要的。
newHashKey = hashKey + (hash(field) % 10000); hset(newHashKey, field, value); hget(newHashKey, field)
推荐学习:Redis学习教程
Atas ialah kandungan terperinci Mari analisa penyelesaian kepada masalah data panas Redis bersama-sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!