Caching tidak perlu lagi sulit. Dengan hanya beberapa baris kode Cache Omoide akan langsung membawa layanan Python Anda ke tingkat berikutnya!
Perpustakaan yang Dirilis : PYPI
Kode Sumber : GitHub
Tutorial №1 : Blog atau medium saya
Ini adalah solusi cache dalam memori yang kuat, sangat merdu dan mudah diintegrasikan yang ditulis dalam ular python murni, tanpa ketergantungan.
Ini dirancang untuk menjadi cache level metode, membungkus metode kelas tunggal, menggunakan argumen panggilan metode sebagai kunci cache dan menyimpan nilai pengembaliannya.
Dapat disesuaikan agar sesuai dengan kasus penggunaan spesifik Anda, menyediakan berbagai opsi kedaluwarsa dan refresh.
Sangat ramah pengguna, super mudah diintegrasikan dengan dekorator sederhana (yaitu anotasi, bagi mereka yang berasal dari java), tidak perlu menambahkan logika rumit ke dalam kode Anda, cukup gunakan @omoide_cache() di atas metode apa pun dalam layanan Anda. Ini akan menghasilkan cache secara otomatis untuk metode Anda dengan pengaturan default. Anda dapat menyesuaikan pengaturan ini lebih lanjut melalui parameter dekorator.
Peringatan yang Adil - Proyek ini berada pada tahap paling awal dari siklus hidupnya, akan ada banyak perbaikan dan perbaikan bug di masa depan. Semua saran dan laporan bug sangat diterima!
pip install omoide-cachegit clone https://github.com/jpleorx/omoide-cache.git
cd omoide-cache
pip install --editable . import time
from omoide_cache import omoide_cache
# A class where cache was added to a simulated long running method
class ExampleService :
@ omoide_cache ()
def time_consuming_method ( self , x : int ) -> int :
time . sleep ( 2.0 )
return x * x
service = ExampleService ()
# The first call will execute real logic and store the result in cache
service . time_consuming_method ( 1 )
# The second call will get results from cache
service . time_consuming_method ( 1 )Di sini kami menambahkan cache yang akan menjatuhkan barang yang paling tidak sering diakses ketika cache menjadi terlalu besar.
import time
from omoide_cache import omoide_cache , ExpireMode
class ExampleService :
@ omoide_cache ( max_allowed_size = 10 , size_expire_mode = ExpireMode . ACCESS_COUNT_BASED )
def time_consuming_method ( self , x : int ) -> int :
time . sleep ( 2.0 )
return x * x Di sini cache akan secara otomatis menghapus item yang terakhir diakses lebih dari 2 menit yang lalu.
import time
from omoide_cache import omoide_cache
class ExampleService :
@ omoide_cache ( expire_by_access_duration_s = 120 )
def time_consuming_method ( self , x : int ) -> int :
time . sleep ( 2.0 )
return x * xAtau kami dapat menghapus item yang dihitung lebih dari 2 menit yang lalu.
import time
from omoide_cache import omoide_cache
class ExampleService :
@ omoide_cache ( expire_by_computed_duration_s = 120 )
def time_consuming_method ( self , x : int ) -> int :
time . sleep ( 2.0 )
return x * x Di sini cache akan menyegarkan item secara tidak sinkron yang dihitung lebih dari 2 menit yang lalu. Upaya untuk menyegarkan akan dilakukan setiap 10 detik.
import time
from omoide_cache import omoide_cache , RefreshMode
class ExampleService :
@ omoide_cache ( refresh_duration_s = 120 , refresh_period_s = 10 , refresh_mode = RefreshMode . INDEPENDENT )
def time_consuming_method ( self , x : int ) -> int :
time . sleep ( 2.0 )
return x * x@omoide_cache() , tetapi bukan @omoide_cache . Sejujurnya saya tidak tahu mengapa ada perilaku aneh di dekorator ini, akan melakukan yang terbaik untuk memperbaikinya di pembaruan mendatang.Jika Anda ingin memeriksa pekerjaan saya yang lain atau hubungi saya: