高并发系统学习 Day12 计数系统设计

136 阅读1分钟
计数在业务上的特点:
    数据量巨大
    访问量大,对于性能的要求高
    对于可用性、数字的准确性要求高

支撑高并发的计数系统要如何设计
    数据库单表存储->分库分表

如何降低计数系统的存储成本
    对原生 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 问》