用户关注有关数据更新问题

问下这种业务怎么解决
场景:在一个微服务中使用redis来解决session不共享,所以将用户有关数据存储到redis
1、就是一个用户关注或者取消关注另一个用户
2、另一个用户每次发起一个请求都可以在redis中获取最新的粉丝数据
或者说想问问有没有在保证高效性 一致性和安全性的情况下在开发中更合适的业务流程

参考链接

数据库表设计2:用户关注粉丝_Java后端何哥的博客-CSDN博客 前言:在社交类系统中,用户与用户的好友关系的设计必不可少,那么如何设计好友的数据库至关重要,本篇文章带大家学习一下微博相关的设计方案。一、用户好友关系分类基础分析第一步,有一张用户表,表内包含用户的基本信息,比如账号、姓名、性别等信息。这里用tb_user表示用户信息表。ID 用户名1 张三2 李四3 王五4 赵六第二步,需要将用户与用户直接建立好友关系。这里有两种情况:单向好友关系、互为好友关系。- 单向好友关系就是张三在李四的好友列表中,但李四... https://blog.csdn.net/CSDN2497242041/article/details/120019047?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166729328516782395394644%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166729328516782395394644&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-120019047-null-null.nonecase&utm_term=%E7%94%A8%E6%88%B7%E5%85%B3%E6%B3%A8%E6%9C%89%E5%85%B3%E6%95%B0%E6%8D%AE%E6%9B%B4%E6%96%B0%E9%97%AE%E9%A2%98&spm=1018.2226.3001.4450

用redis的话使用其集合实现。
key为userid,
value为集合,
关注就是sadd,
取关就是rsem

希望有帮助

数据库表设计2:用户关注粉丝_Java后端何哥的博客-CSDN博客 前言:在社交类系统中,用户与用户的好友关系的设计必不可少,那么如何设计好友的数据库至关重要,本篇文章带大家学习一下微博相关的设计方案。一、用户好友关系分类基础分析第一步,有一张用户表,表内包含用户的基本信息,比如账号、姓名、性别等信息。这里用tb_user表示用户信息表。ID 用户名1 张三2 李四3 王五4 赵六第二步,需要将用户与用户直接建立好友关系。这里有两种情况:单向好友关系、互为好友关系。- 单向好友关系就是张三在李四的好友列表中,但李四... https://blog.csdn.net/CSDN2497242041/article/details/120019047?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166729328516782395394644%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166729328516782395394644&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-120019047-null-null.nonecase&utm_term=%E7%94%A8%E6%88%B7%E5%85%B3%E6%B3%A8%E6%9C%89%E5%85%B3%E6%95%B0%E6%8D%AE%E6%9B%B4%E6%96%B0%E9%97%AE%E9%A2%98&spm=1018.2226.3001.4450

个人建议:
1、关注详情数据持久化到数据库DB层面
2、查询关注详情的集合缓存到redis中,并且设定缓存失效时间(避免穿透)
3、关注总数可以考虑key为用户ID,value为数值的方式,也可以考虑key为自定义ID,value为HashMap的方式,这个可以缓存可以永不失效
4、在关注和取消关注的时候更新redis,最好使用redis的互斥锁