|
Redis ile uygulama geliştirmek hoş bir süreçtir, ancak her teknoloji gibi, Redis tabanlı uygulamalar tasarlarken aklınızda bulundurmanız gereken birkaç şey vardır. İlişkisel veritabanı geliştirme rutinine daha önce aşina olabilirsiniz ve Redis tabanlı uygulama geliştirmede birçok benzerlik vardır, ancak şu iki şeyi aklınızda tutmanız gerekir - Redis bellek içi bir veritabanıdır ve tek iş parçacıklıdır. Bu nedenle, Redis kullanırken aşağıdaki noktalara dikkat etmeniz gerekir: 1. Redis'te depolanan tüm anahtarları kontrol edin Bir veritabanının ana işlevi veri depolamaktır, ancak uygulama gereksinimleri veya veri kullanım yöntemlerindeki değişiklikler nedeniyle geliştiricilerin veritabanında depolanan bazı verileri görmezden gelmesi normaldir ve Redis'te de durum aynıdır. Bazı anahtarların süresi dolmuş olabilir veya uygulamanızın bir modülü kullanımdan kaldırıldığı için verileri unutabilirsiniz. Her iki durumda da, Redis artık kullanılmayan bazı verileri saklıyor ve sebepsiz yere yer kaplıyor. Redis'in zayıf yapılandırılmış veri deseni, anahtarlar için çok olgun bir adlandırma kullanmadıkça merkezi olarak neyin depolandığını anlamayı zorlaştırıyor. Doğru adlandırma yöntemini kullanmak veritabanı yönetiminizi kolaylaştırır ve uygulamanız veya servisiniz üzerinden anahtarlar için bir isim alanı oluşturduğunuzda (genellikle anahtar isimlerini iki nokta kullanarak bölerseniz), veriyi taşımak, dönüştürmek veya silmek için kolayca tespit edebilirsiniz. Redis'in bir diğer yaygın kullanım durumu, verinin çoğunun PostgreSQL veya MongoDB gibi diğer veritabanlarında saklandığı sıcak veri öğeleri için ikinci veri deposu olmasıdır. Bu kullanım durumlarda, geliştiriciler veri birincil depodan kaldırıldığında Redis'teki ilgili verileri silmeyi genellikle unuturlar. Bu durumda, genellikle kademeli silme gereklidir; bu durumda, Redis yapılandırmasında belirli bir veri öğesi için tüm tanımlayıcıların kaydedilmesiyle sağlanabilir; böylece veriler birincil veritabanında silindikten sonra tüm ilgili kopyaları ve bilgileri silmek için bir temizleyici çağrılır. 2. Tüm anahtar isimlerinin uzunluğunu kontrol edin Yukarıda da dediğimiz gibi, uygun adlandırma kuralları kullandık ve verinin nereye gittiğini belirlemek için önekler ekledik, bu da buna aykırı görünüyor. Ancak, Redis bir bellek içi veritabanı olduğunu ve anahtarlar ne kadar kısa, o kadar az alana ihtiyacınız olduğunu unutmayın. Doğal olarak, bir veritabanında milyonlarca veya milyarlarca anahtar olduğunda, anahtar adının uzunluğu büyük bir etkiye sahip olur. Örneğin, 32-bit bir Redis sunucusunda, 32 karakter uzunluğunda bir milyon anahtar depolarsanız, 6 karakterli anahtar adı kullanırken yaklaşık 96MB alan kaplar, ancak 12 karakterlik bir anahtar adı kullanırsanız alan tüketimi yaklaşık 111MB'a çıkar. Daha fazla tuş ile ek %15 ek yük önemli bir etki yaratacaktır. 3. Doğru veri yapısını kullanın Bellek kullanımı ya da performans olsun, bazen veri yapıları büyük bir etki yaratabilir, işte başvurabileceğiniz bazı en iyi uygulamalar: Verileri binlerce (veya milyonlarca) ayrı dizide depolamak yerine, ilgili verileri gruplamak için hash veri yapılarını kullanmayı düşünün. Hash tabloları çok verimlidir ve bellek kullanımınızı azaltabilir; Aynı zamanda, hash detay soyutlama ve kod okunabilirliği için de daha faydalıdır. Uygun olduğunda, set yerine list kullanın. Set özelliğini kullanmanız gerekmiyorsa, List daha az bellek kullanarak ayarlanandan daha yüksek hızlar sağlayabilir. Sıralanmış kümeler, hem bellek tüketimi hem de temel işlemlerin karmaşıklığı açısından en pahalı veri yapılarıdır. Sadece kayıtları sorgulamak için bir yol istiyorsanız ve bu tür özellikleri sıralamakla ilgilenmiyorsanız, hash tablolarını kullanmanız şiddetle tavsiye edilir. Redis'te sıkça gözden kaçan bir özellik bitmap veya bit kümeleridir (V2.2'den sonra). Bit kümeleri, Redis değerleri üzerinde hafif analizler gibi birden fazla bit düzeyinde işlem yapmanızı sağlar. 4. SCAN kullanırken anahtarı kullanmayın Redis v2.8'den itibaren, anahtarların imleç kullanılarak anahtar uzayından alınmasını sağlayan SCAN komutu zaten mevcuttur. KEYS komutuyla karşılaştırıldığında, SCAN tüm eşleşen sonuçları aynı anda döndüremese de, sistemi engelleme riskini önler, böylece bazı işlemler ana düğümde gerçekleştirilebilir. SCAN komutunun imleç tabanlı bir yinelemeci olduğunu belirtmek önemlidir. SCAN komutu her çağrıldığında, kullanıcıya yeni bir imleç geri döner ve kullanıcı, önceki yineleme sürecine devam edebilmek için bu yeni imleci bir sonraki yinelemede SCAN komutunun imleç parametresi olarak kullanması gerekir. Aynı zamanda, SCAN ile kullanıcılar komutları anahtar adı modu ve sayım seçenekleriyle de ayarlayabilirler. SCAN ile ilgili komutlar ayrıca koleksiyonlar, hash anahtarları ve devam oyunları için kullanılan SSCAN komutları, HSCAN komutları ve ZSCAN komutlarını içerir. 5. Sunucu tarafı Lua betiklerini kullanın Redis kullanımı sürecinde, Lua betiklerinin desteği geliştiricilere kesinlikle çok dostça bir geliştirme ortamı sunar ve böylece kullanıcıların yaratıcılığını büyük ölçüde özgürleştirir. Doğru kullanıldığında, Lua scriptleri performans ve kaynak tüketiminde önemli iyileştirmeler sağlayabilir. Veriyi CPU'ya aktarmak yerine, scriptler veriye en yakın mantığı çalıştırmanıza olanak tanır, böylece ağ gecikmesini ve yedekli veri transferini azaltır. Redis'te, Lua'nın çok klasik bir kullanım durumu, veri filtreleme veya verileri bir uygulamaya toplamaktır. İşlem iş akışını bir betikte kapsülleyerek, az kaynakla daha kısa sürede daha küçük bir cevap almak için onu kolayca çağırabilirsiniz. Profesyonel ipucu:Lua harika, ama hata raporlama ve başa çıkma gibi bazı sorunları da var. Akıllıca bir yaklaşım, Redis'in Pub/Sub özelliğini kullanıp scriptin günlük mesajlarını özel bir kanal üzerinden göndermesine izin vermektir. Sonra bir abone süreci oluşturun ve buna göre işleyin.
|