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

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

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

[复制链接]

3113

主题

2720

回帖

2万

积分

管理员

积分
29218
QQ
发表于 3 天前 | 显示全部楼层 |阅读模式
实现多库(或多实例)该如何配置?虽然不推荐,但如果你出于公司规范、旧项目迁移或团队硬性要求5 [% c/ q: x2 Y9 \
,必须将 PV 统计放到另一个 Redis 库(如 db1)甚至另一个独立的 Redis 服务器上,以下是基于 Django(通过 django-redis 插件)在 settings.py 中的标准配置方法:
3 s. s" r% |3 E  t- u1. 在 settings.py 中配置多缓存实例在 CACHES 配置项中,将默认的库作为 default,并新建一个名为 pv_stats(或其他自定义名称)的配置:pythonCACHES = {
# ]+ X( @. g' a: x* G    # 1. 现有的验证码和默认缓存(使用 db0)
2 P$ C. }  |! q$ U5 G3 i8 C# ~    "default": {7 `2 y: h' w  ^/ F% E' L8 W# A
        "BACKEND": "django_redis.cache.RedisCache",
! Q- I$ o+ l- {/ g/ ?; \        "LOCATION": "redis://127.0.0.1:6379/0", # 指定 0 号库2 o9 K2 m# L. a! t2 V) O7 h2 |
        "OPTIONS": {, T  q8 f  ^; o
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
) _7 F/ t& x8 G' u" O+ Z3 m        }
6 A. U: n3 d$ Z# y0 T9 O& C    },
! }& q  V# x* s+ t' i" T1 w    # 2. 新增的今日访问量缓存(使用 db1)
8 F8 N1 S" x% t* x$ ]1 A    "pv_stats": {5 r/ w0 c" ^, `# J1 ]6 Q$ b
        "BACKEND": "django_redis.cache.RedisCache",
, V# V" d9 h+ D/ ~! @# N        "LOCATION": "redis://127.0.0.1:6379/1", # 修改库号为 1
( n' x2 y* x0 u/ s) x  x        "OPTIONS": {" }+ Z; n" |3 N  f2 }$ ~+ m
            "CLIENT_CLASS": "django_redis.client.DefaultClient",# M' I8 l& m% E. X* y4 G8 j" }! @" X
        }5 B" K6 U5 X9 o1 m) F$ t4 `& X( q
    }& \: S( W6 \, n9 M# h
}* Q8 I6 O5 \8 Y# n: x; S% W
请谨慎使用此类代码。2. 在业务代码中调用指定的连接当需要操作验证码时,使用默认的缓存;需要操作访问量时,通过 caches['pv_stats'] 显式指定:pythonfrom django.core.cache import caches0 n6 p1 s) x$ ]5 k% S5 p# J
import datetime( d/ i% J0 g$ v$ b  j

5 r/ u/ g6 n  b. ]8 E# 1. 操作验证码(默认走 default 也就是 db0), i* Q+ |5 x5 S$ ~5 u% `  [/ [; }
default_cache = caches['default']8 q1 f- S/ k5 \) ~! E
default_cache.set("auth:code:13800000000", "123456", timeout=300)
# d  @; u% d  J. ~2 B' \' y" s3 v! Z
# 2. 操作今日访问量(显式指定 pv_stats 也就是 db1)# }% g7 \1 C" Y8 J
pv_cache = caches['pv_stats']( @4 O2 a4 `' C) z
today_str = datetime.date.today().strftime('%Y-%m-%d')
8 H1 Y3 h/ D% H& }: Y2 j' v& ypv_key = f"site:daily_pv:{today_str}". S' R5 @' F# M% Y2 v. }' E. j

6 C; J. p* e' }. b# 每次访问时自增 1% M1 d5 q9 I4 M+ T  `6 c0 i
pv_cache.incr(pv_key, delta=1)
; R6 N3 G$ P- J# 如果是当天第一次访问,可能需要初始化并设置一个略大于24小时的过期时间(例如30小时),防止死 Key 堆积
/ R* o9 y* l, v% o! _% n请谨慎使用此类代码。💡 最佳实践建议如果项目还在开发初期,建议保持单一 default(db0)配置。直接在同一个库中并存这两套 Key:验证码:auth:verification:code:138xxxx今日 PV:site:daily_pv:2026-06-15这样既降低了代码维护成本,也为未来的架构横向扩展留出了空间。
/ D0 U' ~( A, Z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2026-6-19 02:14 , Processed in 0.012921 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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