Pengaturcaraan pelayan Python: caching cekap menggunakan django-redis

WBOY
Lepaskan: 2023-06-19 09:40:43
asal
1066 orang telah melayarinya

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
Salin selepas log masuk

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

pip install django-redis
Salin selepas log masuk

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

INSTALLED_APPS = [
    # ...
    'django_redis',
    # ...
]
Salin selepas log masuk

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',
        }
    }
}
Salin selepas log masuk

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...
Salin selepas log masuk

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)
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan