Senaryo 1: Weibo'ya benzer şekilde, takip etme ve takip edilen işlevleri gerçekleştirir.
Fikirler:
Başkalarını takip eden kullanıcıları ve kullanıcı tarafından takip edilen kullanıcıları depolamak için her kullanıcı için iki toplama tipi anahtarı kullanılır. A kullanıcısı B kullanıcısını takip ettiğinde, iki adım gerçekleştirin:
sadd kullanıcısı: A B
sadd kullanıcısı: B A
Soru 1:
Bir kullanıcı takip işlemini tamamlamak için, iki adımlı kod gereklidir.İlk defa, A kullanıcısı B'yi takip edebilir ve B'nin hayranı olabilir. İkinci aşamada, herhangi bir nedenle yürütülmezse veya başarıyla yürütülmezse, A, B'nin kendine dikkat ettiğini bilmez.
İşler:
İşlemin prensibi, önce Redis'e bir işlem komutu göndermek ve ardından Redis'in bu komutları sırayla yürütmesine izin vermektir.
Bir işlemde, tümü başarıyla yürütüldü veya hiçbiri
Multi komutu redis'e işlemi tanıtmaya hazırlanmasını, geçici olarak saklamasını ve yürütmemesini söyler. Ardından birlikte yürütülmesi gereken komutları gönderin ve son olarak işlemi tamamlayın ve komutları sırayla yeniden çalıştır
Yürütme komutunu çalıştırmadan önce herhangi bir nedenle redis bağlantısı kesilirse, Redis işlem kuyruğunu temizleyecektir.
Soru 2:
Bazen, banka havaleleri, banka kartı 1'den banka kartı 2'ye para transferi gibi işlemlerle birlikte başarılı olması gereken bazı eylemleri işlememiz gerekmez, hepsi birlikte başarılı olmalıdır, banka kartı 1'den para düşüldükten sonra söyleyemeyiz , Banka kartı 2 hesabına girilmedi, örneğin, her iki işlemin de tamamlanması gerekiyor. Bunu birlikte yapmamız gereken zamanlar da vardır, ancak aynı zamanda bir adımın sonuçlarına göre bir sonraki adıma geçmemiz gerekir.
WATCH komutu
izle, işlemdeki başka bir komut. Bir veya daha fazla anahtarı izleyin Anahtarlardan biri değiştirildiğinde veya silindiğinde, sonraki işlemler yürütmenin sonuna kadar yürütülmeyecektir.
Anahtar1'i saat boyunca izleyin ve ardından anahtar1'i değiştirin, böylece işlemdeki set komutu yürütülmez
Senaryo 2: Sınırlı süreli etkinlikler, önbelleğe alma, doğrulama kodunu geçersiz kılma
Gerçek geliştirmede, sınırlı süreli etkinlikler, posta kutusu sona erme süresi, doğrulama kodu sona erme süresi gibi senaryolarla sık sık karşılaşıyoruz. Bu verilerin belirli bir süre içinde geçerli olması ve süresinin dolması ve silinmesi gerekir. Bu verileri ilişkisel bir veritabanına kaydederseniz, her seferinde kontrol edin Tümünün verileri sorgulaması, zamanı karşılaştırması ve ardından verileri geçersiz kılması veya silmesi gerekir. Redis'te, sona erme süresini ayarlayabilir ve otomatik olarak silebilirsiniz.
Expire, sona erme süresini ayarlar, zaman birimi saniyedir. Başarı durumunda 1 döndür, anahtar yoksa 0
Anahtar olmadığında -2 döndürülür. Anahtar mevcutsa ancak kalan hayatta kalma süresi ayarlanmadığında -1 döndürülür.
Not: Redis 2.8'den önce, anahtar olmadığında veya anahtar kalan süreyi yaşamadığında, komut -1 döndürür.
Önbelleğe alma uygulayın
Web sitesinin yük kapasitesini sağlamak için, yüksek erişim sıklığına sahip ve karmaşık bir hesaplama veya büyük bir IO kaynak tüketimi geçirmiş bir işlemin sonucunu önbelleğe almak ve bir sona erme süresi belirlemek gerekir. Kullanıcı her ziyaret ettiğinde, önce anahtarın var olup olmadığını kontrol edin, varsa, öğeyi doğrudan alın ve geri verin, yoksa bir dizi hesaplama yapın ve sonucu önbelleğe alın, sona erme süresini ayarlayın ve kullanıcıya iade edin
sorun:
Bu tür bir önbelleğin uygulanmasında açıkça iki sorun vardır: Birincisi, önbelleğin içerikte olmasıdır.Çok sayıda önbellek kullanılırsa, Redis bellekle dolu olacaktır.Diğer yandan, Redis'in bellekle dolu olmasını önlemek için ayar geçersizdir. Zamanın anahtarı, ayar süresi çok kısaysa, önbellek isabet oranının çok düşük olmasına ve büyük miktarda içeriğin boşa harcanmasına neden olabilir.
Nasıl kullanılır:
Geliştirme aşamasında, anahtar ömrünü makul bir şekilde ayarlamak zordur, böylece Redis tarafından kullanılan maksimum belleği sınırlayabilir ve Redis'in bazı istenmeyen anahtarları belirli kurallara göre silmesine izin verebilirsiniz.
Özellikle, yapılandırma dosyasının maxmemory parametresini değiştirin
Redis, OS X altında Homebrew aracılığıyla kurulursa, yapılandırma dosyası /usr/local/etc/redis.conf dizinindedir.
Redis'in maksimum belleğini sınırladıktan sonra, bu bellek aşıldığında, maxmemory-policy'ye dayalı olacaktır.
Belirtilen parametreler gereksiz anahtarları siler. Bu parametre allkeys-lru olarak ayarlandığında, Redis belleği sınır değeri aştığında, Redis mevcut bellek boyutu sınırı karşılanana kadar veritabanında en az kullanılan anahtarı silmeye devam edecektir.