{易陆发现论坛}{openstack}{ceph}

 找回密码
 注册
查看: 58|回复: 0

实现多库(或多实例)该如何配置python django的配置

[复制链接]

3113

主题

2720

回帖

2万

积分

管理员

积分
29218
QQ
发表于 3 天前 | 显示全部楼层 |阅读模式
实现多库(或多实例)该如何配置?虽然不推荐,但如果你出于公司规范、旧项目迁移或团队硬性要求
4 L) ~, l" g" n4 D( {,必须将 PV 统计放到另一个 Redis 库(如 db1)甚至另一个独立的 Redis 服务器上,以下是基于 Django(通过 django-redis 插件)在 settings.py 中的标准配置方法:
3 ]! N+ t' a* O9 |7 R; @, v1. 在 settings.py 中配置多缓存实例在 CACHES 配置项中,将默认的库作为 default,并新建一个名为 pv_stats(或其他自定义名称)的配置:pythonCACHES = {
* u4 A% ], L) p8 i3 c; c    # 1. 现有的验证码和默认缓存(使用 db0)- r2 U7 _3 t; g5 V) E6 x$ a' I
    "default": {
8 a( ]2 C0 u# N$ s# F        "BACKEND": "django_redis.cache.RedisCache",
. `) H0 L5 K; S  Y+ b        "LOCATION": "redis://127.0.0.1:6379/0", # 指定 0 号库
; T5 d! o1 n; G" v        "OPTIONS": {
9 Z, X! s; b; {$ \8 I' `0 [! Z# m7 R            "CLIENT_CLASS": "django_redis.client.DefaultClient",# r! r* J- V& J9 A- C
        }& _& o7 S2 s9 r8 t
    },
0 X. _) c. [/ e: s8 j* o3 M9 l! {    # 2. 新增的今日访问量缓存(使用 db1)
: q4 }$ M  `& R7 p  c6 L7 q    "pv_stats": {5 C0 E+ N" u8 W( F' @( F
        "BACKEND": "django_redis.cache.RedisCache",
" m9 J* l' r0 n0 x  T4 e! A        "LOCATION": "redis://127.0.0.1:6379/1", # 修改库号为 1
  l2 ^& A' {  k5 _  }        "OPTIONS": {
' C, p$ j, \1 _, Q& T9 s            "CLIENT_CLASS": "django_redis.client.DefaultClient",& |, b# v5 K* d0 Q# @% S
        }2 A9 @$ S; B% V6 A, _; W
    }
2 Q9 Y- y0 d+ t; P9 W7 p}- s0 H& e6 N4 z+ {- _# Z& P
请谨慎使用此类代码。2. 在业务代码中调用指定的连接当需要操作验证码时,使用默认的缓存;需要操作访问量时,通过 caches['pv_stats'] 显式指定:pythonfrom django.core.cache import caches
& T; p* d# p9 G, O$ gimport datetime
3 D* W' H2 P2 ?
& ?7 R* H  M9 P2 t* R# 1. 操作验证码(默认走 default 也就是 db0)5 D: n) _* F. J0 d7 f& z
default_cache = caches['default']  z7 f! c2 W9 k, O$ W1 c/ B4 l
default_cache.set("auth:code:13800000000", "123456", timeout=300)  E' \6 ~' e8 T7 _$ B0 _; N" P
$ x' e/ B0 S2 Y0 }* e' Z* J+ `+ H
# 2. 操作今日访问量(显式指定 pv_stats 也就是 db1)
- x( j! f1 |# E8 Y7 mpv_cache = caches['pv_stats']
9 }( V4 Z6 `$ [$ m8 Ztoday_str = datetime.date.today().strftime('%Y-%m-%d')( E+ B' W3 B, `3 u
pv_key = f"site:daily_pv:{today_str}"( t& U% H' P2 ?

3 V$ T! A. G# E6 K- b# 每次访问时自增 1
6 j( b* M, g( N% U" Q9 Xpv_cache.incr(pv_key, delta=1)
) D; s1 N2 I, }# s# 如果是当天第一次访问,可能需要初始化并设置一个略大于24小时的过期时间(例如30小时),防止死 Key 堆积' p5 l* ^/ z0 @
请谨慎使用此类代码。💡 最佳实践建议如果项目还在开发初期,建议保持单一 default(db0)配置。直接在同一个库中并存这两套 Key:验证码:auth:verification:code:138xxxx今日 PV:site:daily_pv:2026-06-15这样既降低了代码维护成本,也为未来的架构横向扩展留出了空间。
4 ^4 h; J; Y. H  G! E  M9 \$ X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

北京云银创陇科技有限公司开发,运维,云计算,一体化业务

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-19 03:24 , Processed in 0.011068 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表