Önbelleğe alınmış bazı verileri almak için neredeyse her Django görünümünde sorguladığım bir Redis sunucum var. Bazı stackoverflow soruları üzerinde biraz okuma yaptım ve her bir web isteği için r = redis.StrictRedis(host='localhost', port=6379, db=0)
üzerinden yeni bir Redis bağlantısı yapmanın kötü olduğunu ve bağlantı havuzu kullanmam gerektiğini öğrendim.Django & Redis: Bağlantı havuzlamasını nasıl düzgün kullanırım?
# Redis Settings
import redis
REDIS_CONN_POOL_1 = redis.ConnectionPool(host='localhost', port=6379, db=0)
: Bu genel değişken gibi olduğu gibi
settings.py
yılında
yüzden herhangi Django görünümünde kolayca indirebiliriz: Burada
Django bağlantı havuzu için ben ile geldi yaklaşımdır bazıviews.py
:
from django.conf import settings
REDIS_CONN_POOL_1 = settings.REDIS_POOL_1
r = redis.Redis(connection_pool=REDIS_CONN_POOL_1)
r.get("foobar") # Whatever operation
Yani, sorum şu: Bu Django bağlantı havuzu yapmak doğru yolu mu? Benzer bir senaryoyu yaşayanlar için kullandığınız daha iyi yaklaşımlar var mı? Bu muhtemelen her isteğimde yeni bir bağlantıyı açmak ve kapatmak için eski yaklaşımımdan daha iyidir.
DÜZENLEME: Bu stackoverflow question numaralı telefondan her istekte yeni bir bağlantı açmanın neden yanlış olduğunu anladım.
. "Django.core.cache import cache'den" ile işlemler gerçekleştirirken birden çok DB'nin nasıl belirtileceği veya DB'ler arasında nasıl geçiş yapacağına dair herhangi bir fikriniz var mı? Django redis önbellek dokümanlarını okuduğumdan, yalnızca tek bir DB belirtebiliriz. – user1757703
Peki DB sayısı redis 12 ile sınırlıdır. Anahtar öneklerini kullanmak çok daha kolay olur. Çok fazla sorun yaşamadan onlara ulaşmak için kendi yardımcı yöntemlerinizi bile yazabilirsiniz. Bu arada neden çoğul DB'lere ihtiyacınız var? – martincpt
Birden çok DB'ye ihtiyacım var çünkü veriyi, veri türüne göre birden çok DB'ye organize ediyorum. – user1757703