直接在数据库里生成唯一随机值
Generate unique random values directly in the database
这是导读,不是翻译。先用 1 分钟拿到这篇的核心,值得的话再去读 英文原文 →
核心观点
登录 cookie、兑换码之类的随机字符串最终都要存进数据库,西弗斯干脆让数据库来生成,并确保不与已有值重复。他还发现函数可以直接充当字段默认值。
要点
- 用安全的随机源生成字符串,撞车就循环重试
- 把函数设为字段默认值,插入一行就拿到唯一码
"You can call functions as default values directly in table definitions." —— Derek Sivers,查看原文 →
对你意味着什么
做优惠券码、邀请码时,这能省掉应用层“生成、查重、保存”的多次往返。但高并发下仍要靠唯一约束兜底,码也要足够长,防止被暴力猜中。
同主题推荐
- 为什么你的网站该有一个 /now 页面 —— 一页写清「我最近在忙什么」,也是拒绝的底气
- 用互联网,而不只是用平台 —— 平台来来去去,你的网站和联系方式才长久
- 用了两年 Rails,我为什么回到 PHP —— 新语言显得更好,往往只是因为你变强了