一、背景
之前京东组里有同事使用二进制优化支付密码打标性能(大促 QPS 数百万),节省内存资源。
随说:存二进制报文小,传输快,反序列化快(之前存 JSON 对象),节省缓存。
目前公司遇到个套餐打标,也通过二进制实现简单高效得解决掉了。
随说:目前倒不是要求性能,只是这么设计扩展性好,操作简单。
知识点:二进制、与运算
二、设计
打标,无非就是识别某个东西是不是包含某些属性。
那么有什么好的办法能做到通用与高效?
如果固定映射,扩展性不好,查询逻辑费劲,存储成本偏高。
目前相对较好的方案是通过二进制位来做标记,再结合与运算,快速找出数据。
随说:Java MySQL 均支持与运算
套餐 | VIP1 | VIP2 | VIP3 | 标记值 |
---|---|---|---|---|
A | 1 | 1 | 1 | 7 |
B | 1 | 1 | 0 | 6 |
C | 1 | 0 | 0 | 4 |
如上表所示,相应套餐的购买资格标记。