Redis, önbelleğe almayı uygular, hangi fikirleri bilmelisiniz!

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.

"Çelik düz erkek stilinden" kurtulun! Kızların sevdiği yüksek değerli TicWatch C2 deneyimi
önceki
Konfor daha da ileri gidiyor, test sürüşü Dongfeng Citroen'in üçüncü nesil C5'i
Sonraki
RNG Bayan Takım Yarışması, Ming netizenleri en çok şaşırttı ve en utanç verici Karsa
Zhejiang Biyolojik Seçme Sınavı Soruları? Zhejiang Eğitim Sınav Enstitüsü yanıt verdi
QQ Super Member Hotel'de kalmak nasıl bir deneyimdir?
Bu ayrıcalıklı refah dalgası sadece gıdıklayıcıdır! CONVERSE ADDICT 2017 sonbahar yeni rengi çok dikkat çekici
"Qin Ming: Yaşam ve Ölümün Fısıldayan" filmi Ching Ming Festivali'ndeki dosyaları değiştiriyor, gerçek geç kalacak ama asla yok olmayacak
Güç performansı insanları mutlu ediyor, Roewe i6 manuel şanzımanı test edin
IG Baolan canlı öğretim! Jin'in büyük hamlesi nasıl engellenir! RNG'yi öğrendiniz mi?
Yüksek kullanılabilirlik mimarisi-MySQL ana-bağımlı çoğaltma yapılandırması
"Thunder Shazan" ı izleyin! Merhaba aile! Dinamik koltuklar ve üç taraflı surround yanan DC evren
Jaguar'ın yeni XE'si yeni 2.0T güçle donatılmıştır veya bu yıl içinde listelenecektir.
"The Four Heroes of Kung Fu: Brave the Underground" bugün yayınlandı
Yaşam tarzı değişiklikleri Lincoln MKZ H hibrit versiyonunu test ediyor
To Top