MySQL软删除与唯一索引
问题
软删除(is_deleted字段)+ 唯一索引的经典坑:
当使用软删除时,已删除的记录仍占唯一索引,导致无法重新创建相同数据。
解决方案
- 联合唯一索引:将is_deleted加入唯一索引
(field, is_deleted) - 逻辑删除时间戳:用deleted_at替代is_deleted,唯一索引包含deleted_at
- 归档表:删除记录移到归档表
Redis SDS
Redis的Simple Dynamic String相比C字符串:
- O(1)获取长度
- 杜绝缓冲区溢出
- 减少内存重分配次数
- 二进制安全