Rumah >pembangunan bahagian belakang >Tutorial Python >Pengaturcaraan pelayan Python: caching cekap menggunakan django-redis

Pengaturcaraan pelayan Python: caching cekap menggunakan django-redis

WBOY
WBOYasal
2023-06-19 09:40:431113semak imbas

Dalam aplikasi web moden, pengurusan cache yang cekap adalah penting untuk meningkatkan prestasi dan kebolehpercayaan. Memandangkan bilangan pengguna Internet terus meningkat, keperluan untuk prestasi pelayan dan skalabiliti juga semakin tinggi dan lebih tinggi. Untuk memenuhi keperluan ini, pembangun perlu menggunakan mekanisme caching untuk mengurangkan beban pelayan dan meningkatkan kelajuan tindak balas dan kebolehskalaan.

Python ialah bahasa pengaturcaraan popular yang digunakan secara meluas dalam pengaturcaraan sebelah pelayan. Untuk mencapai caching yang cekap, komuniti Python telah membangunkan pelbagai rangka kerja caching, termasuk Django-redis. Django-redis ialah bahagian belakang cache Django berdasarkan pelayan cache Redis, yang menyediakan pengurusan cache yang cekap, berskala dan boleh disesuaikan.

Artikel ini akan memperkenalkan cara menggunakan Django-redis untuk melaksanakan caching yang cekap dan meningkatkan prestasi serta kebolehpercayaan semasa membangunkan aplikasi web. Kami akan meneroka ciri utama, pemasangan dan konfigurasi Django-redis, dan memperkenalkan beberapa petua dan teknik caching praktikal.

Ciri utama Django-redis

Django-redis ialah pakej perisian Python sumber terbuka yang menyediakan bahagian belakang caching Django yang cekap dan disepadukan rapat dengan rangka kerja Django. Berikut ialah beberapa ciri utama Django-redis:

  1. Berdasarkan Redis: Django-redis menggunakan Redis sebagai pelayan cache Redis ialah sistem storan nilai kunci yang sangat pantas, yang digunakan secara meluas dalam cache dan pangkalan data , prestasi dan kebolehskalaan adalah sangat kuat.
  2. Mudah digunakan: Django-redis menyediakan API yang mudah digunakan yang memudahkan pengurusan cache. Pembangun Django boleh menggunakan API cache Django secara langsung tanpa mengubah kod mereka.
  3. Skala tinggi: Redis boleh digunakan dalam satu pelayan atau dalam persekitaran teragih dengan banyak pelayan. Django-redis menyediakan sokongan gugusan Redis yang mudah dikonfigurasikan, menjadikannya mudah untuk mengembangkan kapasiti dan prestasi cache pelayan.
  4. Keselamatan: Django-redis menyokong pengesahan pelayan Redis dan penghantaran SSL, memastikan keselamatan dan integriti data.
  5. Sesuai untuk pelbagai aplikasi: Django-redis boleh digunakan untuk pelbagai aplikasi Python, termasuk aplikasi web Django, aplikasi web Flask dan aplikasi web Tornado.

Memasang dan mengkonfigurasi Django-redis

Untuk menggunakan Django-redis, kita perlu memasang Redis dan klien Python Redis. Pada Ubuntu Linux, anda boleh memasang klien Redis dan Python Redis dengan arahan berikut:

sudo apt-get install redis-server
sudo apt-get install python3-redis

Selepas memasang klien Redis dan Python Redis, kami boleh memasang Django-redis dengan arahan berikut:

pip install django-redis

Selepas pemasangan selesai, kita perlu menambah Django-redis pada item konfigurasi INSTALLED_APPS aplikasi Django:

INSTALLED_APPS = [
    # ...
    'django_redis',
    # ...
]

Selain itu, kita perlu mengkonfigurasi Django-redis sebagai cache dalam fail settings.py bagi aplikasi Django Backend:

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://localhost:6379/0',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}

Dalam konfigurasi ini, kami menggunakan klien Redis lalai untuk menyambung ke pelayan Redis tempatan, menggunakan pangkalan data lalai 0 dan mendayakan bahagian belakang cache Django.

Cache menggunakan Django-redis

Setelah kami mengkonfigurasi Django-redis, kami boleh terus menggunakan API cache Django untuk menggunakan cache. Berikut ialah beberapa contoh penggunaan cache yang biasa digunakan:

  1. Caching hasil fungsi dan panggilan kaedah:
from django.core.cache import cache

def expensive_function():
    # Some expensive task here...
    return result

result = cache.get('expensive_result')
if result is None:
    result = expensive_function()
    cache.set('expensive_result', result, timeout=3600)

# Use the result...

Dalam contoh ini, kami menggunakan cache.get() kaedah untuk menyemak Sama ada item cache "expensive_result" telah dicache. Jika cache tidak wujud, panggil kaedah expensive_function() untuk mengira hasilnya, dan gunakan kaedah cache.set() untuk menyimpan hasil dalam cache, tetapkan tempoh sah kepada 1 jam.

  1. Cache hasil pertanyaan pangkalan data:
from django.db import models
from django.core.cache import cache

class MyModel(models.Model):
    # Model fields here...

    @classmethod
    def expensive_query(cls, param1, param2):
        cache_key = f"my_model_expensive_query_{param1}_{param2}"
        result = cache.get(cache_key)
        if result is None:
            result = cls.objects.filter(field1=param1, field2=param2).values_list('id', 'field3')
            cache.set(cache_key, result, timeout=3600)
        return result

# Use the cached result...
result = MyModel.expensive_query(param1_value, param2_value)

Dalam contoh ini, kami menambah kaedah kelas query_mahal pada MyModel, yang akan mendapat penapis daripada cache Redis sebagai Keputusan pertanyaan param1 dan param2. Jika cache tidak wujud, pertanyaan pangkalan data dilaksanakan dan hasilnya disimpan dalam cache Redis dengan tempoh sah selama 1 jam. Kami boleh mendapatkan hasil pertanyaan ini pada bila-bila masa menggunakan parameter cached_result.

Kesimpulan

Dalam aplikasi web moden, pengurusan cache yang cekap adalah penting untuk meningkatkan prestasi dan kebolehpercayaan. Berbanding dengan rangka kerja caching Python yang lain, Django-redis menyediakan cara yang sangat fleksibel dan berkuasa untuk mengurus cache, menyokong pelayan Redis yang sangat berskala, dan disepadukan rapat ke dalam rangka kerja Django. Apabila membangunkan aplikasi web, menggunakan Django-redis meningkatkan prestasi dan kebolehpercayaan, serta menggalakkan kebolehskalaan.

Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: caching cekap menggunakan django-redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn