mysql+redis点赞功能剖析
最近在一个应用上需要用到点赞的功能,因为点赞的功能比较常用,很多人看到了大拇指就点了上去,如果单单采用mysql的方式的话可以会对数据库造成很大的压力。
我看了下网上一些博主的提供的解决方案,主要以mysql+redis配合使用居多,但太多的细节没有提到。在这里我说下我的思路。
1,使用场景分析
用户点赞在很多时候都是随手就点了,所以数据量比较高。
因为随手点的原因,有些人会点错,对于部分人来说,可能有强迫症,点错了必须取消,所以这里可能会存在二次访问。
2,流程分析
我们可以将点赞开发成一个api接口,使用传递uid,和资讯id(简写 zid)到接口。
接口程序首先查找redis里面是否存储该资讯的信息。
如果资讯不存在,
1先使用新建缓存 zid+资讯类别 redis自增1,.
2使用redis list 存入将要写入数据库的数据。max(100)
如果资讯存在
1先使用新建缓存 zid+资讯类别 redis自增1。
2使用redis list 存入将要写入数据库的数据。max(100)
3,判断该list数据是否等于100,如果等于,将list取出来赋值给放到一个新的数据里面,清空list,然后执行插入操作。
这种情况下不考虑用户是否实际点过赞,数据重复的情况可以在插入操作中通过异常捕获来获取,降低数据库的查询消耗。
mysql+redis点赞功能剖析的更多相关文章
- thinkphp redis实现文章点赞功能并同步入mysql
<?php namespace app\common\controller; use think\App; use think\facade\Cache; use think\facade\Db ...
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】
https://blog.csdn.net/linzhefeng89/article/details/78752658 基于springboot+bootstrap+mysql+redis搭建一套完整 ...
- mysql+redis+memcached
mysql+redis+memcached 数据库 数据库设计 a. 单表 b. FK(单表:一张表存储时,如果有重复出现的字段为了防止硬盘的浪费,所以做一个FK:去掉FK变成单表(这样子访问速度快了 ...
- python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解
1.python mysql redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...
- 从docker到docker-compose部署一个nginx+flask+mysql+redis应用
目的是把一个flask项目的mysql数据库.redis数据库.flask应用.nginx服务分别装到四个容器中,然后用docker-compose命令同时启动与关闭 一.安装docker Docke ...
- Redis源码剖析
Redis源码剖析和注释(一)---链表结构 Redis源码剖析和注释(二)--- 简单动态字符串 Redis源码剖析和注释(三)--- Redis 字典结构 Redis源码剖析和注释(四)--- 跳 ...
- mac开发环境爬坑记(搭建php+nginx+mysql+redis+laravel+git+phpstorm)
题外话:前几天,终于以原价一半的价格,将我那台15版mbp在bbs上卖了出去.之所以用了“终于”这个词儿,是我一直迟迟没有下定决心卖掉它,可眼瞅着再不卖掉,又要掉价,况且我的新电脑,也终于下来了. 话 ...
- mysql+redis缓存策略常见的错误
什么时候应该更新缓存 应该是从数据库读取数据后,再更新缓存,从缓存读取到数据,就不需要再重新写缓存了,一个常见的错误是,每次访问接口都更新缓存,这样的话,如果接口一直有流量,那么db中的数据,就一直没 ...
- Flask+MySQL+Redis的Docker配置
Docker配置了好多天,昨天晚上终于把碎遮项目的Docker打包完成了,后面会继续完善项目代码,把稳定版本打包后推送到DockerHub上. 网上关于Docker配置的文章很多,但大部分都是复制粘贴 ...
- 记一次使用Asp.Net Core WebApi 5.0+Dapper+Mysql+Redis+Docker的开发过程
#前言 我可能有三年没怎么碰C#了,目前的工作是在全职搞前端,最近有时间抽空看了一下Asp.net Core,Core版本号都到了5.0了,也越来越好用了,下面将记录一下这几天以来使用Asp.Net ...
随机推荐
- WPF 通过 Windows Template Studio 快速搭建项目框架和上手项目
本文对新手友好.在咱开始一个新项目的时候,可以利用 Windows Template Studio 快速搭建整个项目的框架.搭建出来的框架比较现代化,适合想要快速开发一个项目的大佬使用,也适合小白入门 ...
- Navicat Premium 16永久激活
链接: https://pan.baidu.com/s/1wG0IGWOpgF1tmQRxcsvkBw 提取码: gtmk
- 《最新出炉》系列入门篇-Python+Playwright自动化测试-43-分页测试
1.简介 分页测试,这种一般都是公共的方法系统中都写好了,这种一般出现是数据展示比较多的时候,会采取分页的方法,而且比较固定,一般是没有问题的,因此它非常适合自动化测试,但是如何使用playwrigh ...
- LLaMA 3 源码解读-大语言模型5
本来不是很想写这一篇,因为网上的文章真的烂大街了,我写的真的很有可能没别人写得好.但是想了想,创建这个博客就是想通过对外输出知识的方式来提高自身水平,而不是说我每篇都能写得有多好多好然后吸引别人来看. ...
- 【源码研读】MLIR Dialect 分层设计
以「疑问 - 求解」的形式来组织调研,此处记录整个过程. 1. MLIR 中的 Dialect 是「分层」设计的么? 先问是不是,再谈为什么.从 LLVM 社区 可以看出,至少在做 Codegen 时 ...
- JOISC2018 题解
\(\text{By DaiRuiChen007}\) Contest Link A. Construction of Highway Problem Link 题目大意 给 \(n\) 个点,初始每 ...
- 设置MySQL数据库的远程连接权限
解决方案 在服务器上登录数据库,然后执行如下授权SQL语句.该授权SQL语句的含义为root用户可用任何IP地址登录数据库,操作任何数据库中的任何对象. GRANT ALL PRIVILEGES ...
- python之Faker库如果构造用户信息测试数据
代码链接1:https://blog.csdn.net/qq_38484679/article/details/115244711 补充代码链接0:https://blog.csdn.net/weix ...
- CentOS搭建Jellyfin影音服务器
一. 安装Jellyfin 之前介绍过Docker安装jellyfin,但Docker安装方式存在一些限制,于是一起学习一下用RPM包在CentOS 7下安装方法. 先安装需要的依赖: yum ins ...
- 异构数据源同步之数据同步 → datax 再改造,开始触及源码
开心一刻 其实追女生,没那么复杂 只要你花心思,花时间,陪她聊天,带她吃好吃的,耍好玩的,买好看的 慢慢你就会发现什么叫做 打水漂 不说了,我要去陪她看电影了 前情回顾 异构数据源同步之数据同步 → ...