PHP - Redis / Memcachedb / mongodb veya sayacı depolamak için diğer kalıcı depolama

4 Cevap php

Sayaç ile, sayfa görüntüleme sayısı, indirme, vb oy sayısı Temelde, çok 'kritik' değil veri olabilir.

Bu bilgileri saklamak için 'en iyi' yolu nedir? Mysql iyi bir seçenek değildir. Siz ne kullanıyorsunuz?

4 Cevap

Ben Redis ile gideceğini düşünüyorum çünkü:

  • Antirediz (onun takma adı) gerçekten aktif gelişmekte Redis. Edilir (Benim github pano baktığınızda her zaman o bazı yeni kodu taahhüt edilmiştir). VMware şimdi Redis gelişmekte olan fulltime teşekkürler
  • Redis sonunda kalıcı yani performans (ilk sadece hızlı bellek kullanır) kickass olduğunu.
  • Redis İhtiyacınız olan bir atom increment operasyon var.
  • Redis bir çok iyi bir PHP kütüphaneleri vardır. Orada bir C extension olarak yazılır bir de bu yüzden gerçekten iyi bir performansa sahiptir. Redis website ayrıca bu uzantıları kapalı bir bakış vardır. Bazı (bir litle ama daha yavaş, ancak yapılandırmak için kolay çalıştırmak) saf PHP kodu vardır.

Upserts ile MongoDB için bu harika.

: Eğer gibi bir şey saklıyorsanız

{ "url" : "www.example.com", "pageviews" : 0 }

Eğer atomik atomik işlem $ inc ile gerçekten hızlı bir sayfa gösterimi artırmak:

db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})

Eğer upserts kullanıyorsanız, bir belge bunu güncellemeden önce var olup olmadığını kontrol etmek zorunda değilsiniz. Örneğin, derseniz:

db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})

o (1 set sayfa gösterimi ile) yoksa url www.example.com ile belge oluşturulur ya, eğer var, sayfa görüntüleme sayısı artırılır. Bu koleksiyon ön-doldurma hakkında endişelenmenize gerek yok demektir.

1990'ların ünlü manzara sayaçları numarasını saklamak için basit bir dosya kullanılır. Ihtiyacınız hepsi sadece tek bir sayı saklamak için ise, bir şey yeterince iyi.

Ben APC veya memcached iyi seçimlerdir söyleyebilirim.