一般数据库缓存分为四种:
1、Key/Value单个对象缓存,技术不难,Memcached、Squid均能实现。
2、列表缓存,就像论坛里帖子的列表、SNS中的Feed信息,要求实时更新。
3、记录条数的缓存,比如一个论坛板块里有多少个帖子,这样才方便实现分页。
4、复杂一点的group,sum,count查询,比如一个论坛里按点击数排名的最HOT的帖子列表。
TCSQL主要用于解决上页提到的第2、3类应用,即带条件的列表页、列表页记录数的实时缓存。
TCSQL在金山逍遥网的典型应用:
游戏论坛:原版Discuz!论坛使用的MySQL内存表存放Session,在线5万人的时候,大量的并发update操作导致内存表锁死。后改用TCSQL,轻松解决了这个问题。从MySQL改为TCSQL,迁移成本也非常低。
SNS社区:Feed信息采用从MySQL同步到TCSQL的方式,利用TCSQL来解决好友动态的查询压力。
用户行为分析:需要按UID、通行证、昵称、时间等条件查询基础用户信息表,采用TCSQL来存储超过2亿条数据,每次页面访问将有一次select查询。