Redis 7.0 DBMS'nin Sürümü

NoSQL sistemler sınıfına ait olan Redis 7.0 DBMS'nin sürümü yayımlandı. Redis, anahtar/değer verilerini depolamak için listeler, karmalar ve kümeler gibi yapılandırılmış veri formatları desteğinin yanı sıra Lua'da sunucu tarafı komut dosyası işleyicilerini çalıştırma yeteneğiyle geliştirilmiş işlevler sağlar. Proje kodu BSD lisansı altında sağlanmaktadır. RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom gibi kurumsal kullanıcılara gelişmiş özellikler sunan ek modüller, 2019'dan bu yana özel bir RSAL lisansı kapsamında sağlanmaktadır. Son dönemde durağanlaşan GoodFORM projesi, bu modüllerin açık versiyonlarının geliştirilmesine AGPLv3 lisansı altında devam etmeye çalıştı.

Memcached gibi bellek içi depolama sistemlerinden farklı olarak Redis, verilerin kalıcı olarak diskte saklanmasını ve çökme durumunda veritabanının sağlam kalmasını sağlar. Projenin kaynak kodu BSD lisansı altında dağıtılmaktadır. İstemci kitaplıkları Perl, Python, PHP, Java, Ruby ve Tcl dahil olmak üzere en popüler diller için mevcuttur. Redis, bir grup komutu tek adımda yürütmenize olanak tanıyan, belirli bir komut kümesinin yürütülmesinde tutarlılık ve tutarlılık (diğer isteklerden gelen komutlar müdahale edemez) sağlayan ve sorun olması durumunda geri almanıza olanak tanıyan işlemleri destekler. değişiklikler. Tüm veriler tamamen RAM'de önbelleğe alınır.

Veri yönetimi için arttırma/azaltma, standart liste ve set işlemleri (birleştirme, kesişim), tuş yeniden adlandırma, çoklu seçim ve sıralama fonksiyonları gibi komutlar sağlanmıştır. İki depolama modu desteklenir: verilerin diske periyodik senkronizasyonu ve diskte bir değişiklik günlüğünün bakımı. İkinci durumda, tüm değişikliklerin tam güvenliği garanti edilir. Master-slave verilerinin çoğaltılmasını, engellemesiz modda gerçekleştirilen birden fazla sunucuya organize etmek mümkündür. Ayrıca, mesajların aboneliğe göre müşterilere dağıtıldığı bir kanalın oluşturulduğu bir "yayınla/abone ol" mesajlaşma modu da mevcuttur.

Redis 7.0'daki önemli değişiklikler:

  • Sunucu tarafı işlevleri için destek eklendi. Lua dilinde daha önce desteklenen komut dosyalarının aksine, işlevler uygulamaya bağlı değildir ve sunucunun yeteneklerini genişleten ek mantığın uygulanmasını amaçlamaktadır. İşlevler, çoğaltılma ve kalıcı depolamada saklanma da dahil olmak üzere, uygulamayla değil, verilerle ve veritabanıyla ilişkili olarak ayrılmaz bir şekilde işlenir.
  • ACL'nin, anahtarlara dayalı olarak verilere erişimi kontrol etmenize olanak tanıyan ve her kullanıcıya birkaç seçiciyi (izin kümeleri) bağlama yeteneği ile komutlara erişim için farklı kural kümeleri tanımlamanıza olanak tanıyan ikinci bir sürümü önerildi. Her anahtar belirli bir yetkiyle tanımlanabilir; örneğin, erişimi yalnızca belirli bir anahtar alt kümesini okumak veya yazmakla sınırlayabilirsiniz.
  • Bir kümede çalışan Yayınla-Abone Ol mesaj dağıtım paradigmasının bölümlenmiş (parçalanmış) bir uygulaması sağlanır; burada bir mesaj, bir mesaj kanalının eklendiği belirli bir düğüme gönderilir ve ardından bu mesaj, dahil edilen geri kalan düğümlere yeniden yönlendirilir. parçanın içinde. İstemciler bir kanala abone olarak hem ana düğüme hem de bölümün ikincil düğümlerine bağlanarak mesaj alabilirler. Kontrol SSUBSCRIBE, SUNSUBSCRIBE ve SPUBLISH komutları kullanılarak gerçekleştirilir.
  • Çoğu bağlamda alt komutların işlenmesine yönelik destek eklendi.
  • Yeni komutlar eklendi:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SİNTERKART, ZİNTERKART.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • SON SÜRESİ, PEXPIRET SÜRESİ.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FONKSİYON *, FCALL, FCALL_RO.
    • KOMUT DOKÜMANLARI, KOMUT LİSTESİ.
    • GECİKME HİSTOGRAM.
    • KÜME PARÇALARI, KÜME BAĞLANTILARI, KÜME DELSLOTS ARALIĞI, KÜME ADDSLOTS ARALIĞI.
    • MÜŞTERİ TAHLİYE EDİLMEZ.
    • ACL KURUTMA.
  • Bir CONFIG SET/GET çağrısında birden fazla konfigürasyonu aynı anda işleme yeteneği sağlandı.
  • Redis-cli yardımcı programına “-json”, “-2”, “-scan”, “-functions-rdb” seçenekleri eklendi.
  • Varsayılan olarak, güvenliği etkileyen ayarlara ve komutlara istemci erişimi devre dışıdır (örneğin DEBUG ve MODULE komutları devre dışıdır, PROTECTED_CONFIG bayrağıyla yapılandırmaların değiştirilmesi yasaktır). redis-cli artık hassas veriler içeren komutların çıktısını bir geçmiş dosyasına vermiyor.
  • Performansı artırmayı ve bellek tüketimini azaltmayı amaçlayan optimizasyonların büyük bir kısmı tanıtıldı. Örneğin, küme modunu etkinleştirirken, yazma üzerine kopyalama işlemleri gerçekleştirirken ve karma ve zset anahtarlarıyla çalışırken bellek tüketimi önemli ölçüde azaldı. Verilerin diske aktarılmasına yönelik geliştirilmiş mantık (fsync çağrısı). İstemciye yanıt gönderilirken ağ paketlerinin ve sistem çağrılarının sayısı azaltıldı. Çoğaltma verimliliği artırıldı.
  • Lua komut dosyalarının yürütülmesine yönelik ortamda bulunan CVE-2022-24735 güvenlik açığı düzeltildi; bu, kendi Lua kodunuzu değiştirmenize ve daha yüksek ayrıcalıklara sahip biri de dahil olmak üzere başka bir kullanıcı bağlamında yürütülmesine olanak tanıyor.
  • NULL işaretçi referansı nedeniyle redis-sunucu işleminin çökmesine izin veren CVE-2022-24736 güvenlik açığı düzeltildi. Saldırı, özel olarak tasarlanmış Lua komut dosyalarının yüklenmesi yoluyla gerçekleştiriliyor.

Kaynak: opennet.ru

Yorum ekle