计数在业务上的特点:
数据量巨大
访问量大,对于性能的要求高
对于可用性、数字的准确性要求高
支撑高并发的计数系统要如何设计
数据库单表存储->分库分表
如何降低计数系统的存储成本
对原生 Redis 做一些改造,采用新的数据结构和数据类型来存储计数数据。我在改造时,主要涉及了两点:
一是原生的 Redis 在存储 Key 时是按照字符串类型来存储的,比如一个 8 字节的 Long 类型的数据,需要 8(sdshdr 数据结构长度)+ 19(8 字节数字的长度)+1(’\0’)=28 个字节,如果我们使用 Long 类型来存储就只需要 8 个字节,会节省 20 个字节的空间;
二是去除了原生 Redis 中多余的指针,如果要存储一个 KV 信息就只需要 8(weibo_id)+4(转发数)=12 个字节,相比之前有很大的改进。
此文章为6月Day12学习笔记,内容来源于极客时间《高并发系统设计 40 问》