Redis

该标签下共有 1 篇文章

Django 使用 Redis 实现全站缓存

想着提升下网站性能,开始学习折腾 Redis 缓存,记录下。 1. 安装 Redis apt update # 安装 apt install redis-server 2. Redis 参考配置 # 绑定本机(禁止外部访问) bind 127.0.0.1 ::1 # 数据库数量 databases 5 # 持久化 save 900 1 save 300 10 save 60 10000 # 密码 requirepass XXOO.OOXX # 内存限制 maxmemory 256mb # 内存满时策略:删除最少使用的缓存 maxmemory-policy allkeys-lru # 客户端配置 timeout 300 tcp-keepalive 300 3. 配置 django # settings.py # 全站缓存,必须保持在最前和最后 MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', # ... 其他中间件 ... 'django.middleware.cache.FetchFromCacheMiddleware', ] # Redis配置 CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379/1', 'OPTIONS': { 'CLIENT_CLASS': 'django_redis.client.DefaultClient', 'PASSWORD': 'XXOO.OOXX', "SOCKET_CONNECT_TIMEOUT": 5, "SOCKET_TIMEOUT": 5, } } } CACHE_MIDDLEWARE_SECONDS = 21600 CACHE_MIDDLEWARE_KEY_PREFIX = 'Codenotes:' 4. 更新清理缓存 # admin.py @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'category', 'publish_date', 'author', 'hits', 'status') # 保存时清理 def save_model(self, request, obj, form, change): obj.save() cache.clear() # 删除时清理 def delete_model(self, request, obj): obj.delete() cache.clear() # 批量删除时清理 def delete_queryset(self, request, queryset): queryset.delete() cache.clear()  

广告 【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中