Rilis DBMS Redis 7.0

Rilis DBMS Redis 7.0, yang termasuk dalam kelas sistem NoSQL, telah dipublikasikan. Redis menyediakan fungsi untuk menyimpan data kunci/nilai, ditingkatkan dengan dukungan untuk format data terstruktur seperti daftar, hash, dan set, serta kemampuan untuk menjalankan penangan skrip sisi server di Lua. Kode proyek disediakan di bawah lisensi BSD. Modul tambahan yang menawarkan kemampuan tingkat lanjut untuk pengguna korporat, seperti RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, telah disediakan di bawah lisensi RSAL sejak 2019. Proyek GoodFORM, yang akhir-akhir ini mengalami stagnasi, mencoba melanjutkan pengembangan versi terbuka modul ini di bawah lisensi AGPLv3.

Tidak seperti sistem penyimpanan dalam memori seperti Memcached, Redis memastikan bahwa data disimpan secara persisten di disk dan memastikan bahwa database tetap utuh jika terjadi kerusakan. Kode sumber proyek didistribusikan di bawah lisensi BSD. Pustaka klien tersedia untuk sebagian besar bahasa populer, termasuk Perl, Python, PHP, Java, Ruby, dan Tcl. Redis mendukung transaksi, yang memungkinkan Anda menjalankan sekelompok perintah dalam satu langkah, memastikan konsistensi dan konsistensi (perintah dari permintaan lain tidak dapat mengganggu) dalam pelaksanaan serangkaian perintah tertentu, dan jika terjadi masalah, memungkinkan Anda untuk memutar kembali perubahan. Semua data sepenuhnya di-cache di RAM.

Perintah seperti penambahan/penurunan, operasi daftar dan himpunan standar (penyatuan, persimpangan), penggantian nama kunci, pilihan ganda, dan fungsi pengurutan disediakan untuk manajemen data. Dua mode penyimpanan didukung: sinkronisasi data secara berkala ke disk dan pemeliharaan log perubahan pada disk. Dalam kasus kedua, keamanan penuh dari semua perubahan dijamin. Dimungkinkan untuk mengatur replikasi data master-slave ke beberapa server, yang dilakukan dalam mode non-pemblokiran. Mode pesan β€œterbitkan/berlangganan” juga tersedia, di mana saluran dibuat, pesan-pesan yang didistribusikan ke klien dengan berlangganan.

Perubahan penting di Redis 7.0:

  • Menambahkan dukungan untuk fungsi sisi server. Tidak seperti skrip yang didukung sebelumnya dalam bahasa Lua, fungsinya tidak terikat pada aplikasi dan ditujukan untuk mengimplementasikan logika tambahan yang memperluas kemampuan server. Fungsi diproses secara tidak terpisahkan dengan data dan dalam kaitannya dengan database, dan bukan dengan aplikasi, termasuk direplikasi dan disimpan dalam penyimpanan persisten.
  • Edisi kedua ACL telah diusulkan, yang memungkinkan Anda mengontrol akses ke data berdasarkan kunci dan memungkinkan Anda menentukan kumpulan aturan berbeda untuk mengakses perintah dengan kemampuan untuk mengikat beberapa pemilih (kumpulan izin) ke setiap pengguna. Setiap kunci dapat diidentifikasi dengan otoritas tertentu, misalnya, Anda dapat membatasi akses hanya untuk membaca atau menulis subset kunci tertentu.
  • Implementasi partisi (sharded) dari paradigma distribusi pesan Publikasikan-Berlangganan yang berjalan dalam sebuah cluster disediakan, di mana pesan dikirim ke node tertentu di mana saluran pesan dilampirkan, setelah itu pesan ini dialihkan ke node lain yang disertakan di pecahan. Klien dapat menerima pesan dengan berlangganan suatu saluran, baik dengan menghubungkan ke node utama maupun ke node sekunder di bagian tersebut. Kontrol dilakukan dengan menggunakan perintah SSUBSCRIBE, SUNSUBSCRIBE dan SPUBLISH.
  • Menambahkan dukungan untuk memproses subperintah di sebagian besar konteks.
  • Perintah baru ditambahkan:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • KARTU SINTER, KARTU ZINTER.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • WAKTU KEDALUWARSA, WAKTU PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNGSI*, FCALL, FCALL_RO.
    • DOKUMEN PERINTAH, DAFTAR PERINTAH.
    • HISTOGRAM LATENSI.
    • PECAH KLUSTER, TAUTAN KLUSTER, KLUSTER DELSLOTSRANGE, KLUSTER TAMBAHAN KLUSTER.
    • KLIEN TIDAK DUSUR.
    • KERING ACL.
  • Kemampuan untuk memproses beberapa konfigurasi sekaligus dalam satu panggilan CONFIG SET/GET telah disediakan.
  • Opsi β€œ-json”, β€œ-2”, β€œ-scan”, β€œ-functions-rdb” telah ditambahkan ke utilitas redis-cli.
  • Secara default, akses klien ke pengaturan dan perintah yang mempengaruhi keamanan dinonaktifkan (misalnya, perintah DEBUG dan MODULE dinonaktifkan, mengubah konfigurasi dengan flag PROTECTED_CONFIG dilarang). Redis-cli tidak lagi mengeluarkan perintah yang berisi data sensitif ke file riwayat.
  • Sebagian besar optimasi telah diperkenalkan yang bertujuan untuk meningkatkan kinerja dan mengurangi konsumsi memori. Misalnya, konsumsi memori telah berkurang secara signifikan saat mengaktifkan mode cluster, saat melakukan operasi copy-on-write, dan saat bekerja dengan hash dan kunci zset. Peningkatan logika untuk membuang data ke disk (panggilan fsync). Jumlah paket jaringan dan panggilan sistem saat mengirimkan respons ke klien telah berkurang. Efisiensi replikasi telah ditingkatkan.
  • Kerentanan CVE-2022-24735 di lingkungan untuk mengeksekusi skrip Lua telah diperbaiki, yang memungkinkan Anda mengganti kode Lua Anda sendiri dan mencapai eksekusinya dalam konteks pengguna lain, termasuk pengguna dengan hak istimewa lebih tinggi.
  • Memperbaiki kerentanan CVE-2022-24736, yang memungkinkan proses server redis terhenti karena dereferensi penunjuk NULL. Serangan tersebut dilakukan melalui pemuatan skrip Lua yang dirancang khusus.

Sumber: opennet.ru

Tambah komentar