代码改变世界

关于项目总结一下

  xlw  阅读(194)  评论(0编辑  收藏  举报

 最近在做两很多事情,总结一下

1、MySQL使用需要注意的地方
1) 存储引擎选择InnoDB,在高并发下读写有很好的表现
2) 数据合理分表分区,均衡各数据库服务器的负载
3) 适当作数据的冗余,便于在cache失效时的快速恢复

2、Redis使用需要注意的地方
1) 合理规划cache
将访问量高的热点数据统计出来、分类缓存。
对微博来说,主要有三种形式的缓存:IDs,content,page。
IDs包括各种关系的ID列表,如用户的粉丝、关注的对象、发表的新鲜事等,这些可以缓存在Redis的set或list结构中;
content包括各ID的具体信息及内容,如新鲜事的正文、用户的详细信息等,这些可以缓存在Redis的string或hash结构中;
page包括一些热点页面的部分内容或全部内容缓存,如名人主页等,这些可以缓存在Redis的string结构中。
根据以上缓存类型以及缓存的大小和过期时间,就可以规划出不同缓存如何存放、如何使用才能更高效地利用缓存的方式。
2) 缓存的压缩
在高访问量和高并发下,每一个字节的减少都是巨大的节省。
根据以上缓存类型的分析,我们可以对string结构的内容做压缩存储,如新鲜事的正文以及page cache等。

3、数据实时性与一致性
1) 实时性
在发表微博时,如果采用的是推送给粉丝的方式,为了保证快速响应,可以使用消息队列,先发表,再在后台推送。如果粉丝比较多,还可以将粉丝按照是否在线分组,通过不同队列发送。
2) 一致性
一致性主要是针对缓存与数据库中的数据不一致而言。
对于重要的数据,我们可以采取先写数据库再写缓存的方式来保证,而对于不太重要但对响应速度要求很高的数据可以采取先写缓存然后通过消息队列再写入数据库的方式。当然,需要做好错误日志记录以及能根据日志恢复数据。

 

 

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示