签到是怎么做的?
刚开始想用数据库做来着,后来发现用数据库数据量太大,就找解决方案,想到了用bitMap 位图。
bitMap 位图是什么 ?
我们采用的是radis 里的bitMap结构 他本质是字符串 最大512mb
是使用01 来存储的一种方式
为什么?
节省空间 我们采用的是 一个人一个月 的签到记录放进一个单独的key里面
最多也就31bit 签到这个业务 只有签到和未签到 两张状态 所有才用 bitmap
什么是多级缓存?
多级缓存就是 本地缓存+radis缓存形成的多级缓存
流程是 : 先访问本地缓存 没有就访问radis缓存 在没有 就访问 数据库
好处点是什么?
相对应radis来说 响应速度更快 并且没有网络带宽消耗
缺点是什么 ?
由于是本地缓存 所以在分布式环境下 很难同步
项目中有没有用到 ??
有啊
是分类数据
为什么是分类数据 ?
因为分类数据 不经常变化 数据量不能太大 一般百万级别
你们是用什么框架 做的?
咖啡因 性能遥遥领先 经过Spring洗礼 容错性也好
介绍一下点赞功能?
点赞是一个独立 通用模块 原因是我们这个系统 有好几个地方都用到 点赞 所以 我呢就想着 把他设计独立一些 其次 点赞是一个高频接口 所有要保证这个接口能够应对高并发 还有数据安全能得到保证
所有用到了radis相关存储数据
set 用来存储点赞记录
zet用来存储点赞次数
为什么要用到这两个结构?
set存储点赞记录 是利用 set天然去重性 所有value 是用户id
使用zset 原因 是 我们采用了合并写思路 原因是 点赞功能是一个比较简单操作数据库过程
所有就先把这个数据存储在radis 中 在通过定时任务去修改 数据库
最后由于点赞 数量的这个值是存在各个微服务里 ,又由于我的点赞 是一个独立的微服务 ,所以我采用mq来做异步通知 的方式来降低两个模块之间的耦合
标签:缓存,签到,数据库,多级,radis,点赞 From: https://blog.csdn.net/eeeeeeeeei/article/details/136855117