项目当中 签到功能 +多级缓存+介绍一下点赞功能

签到是怎么做的?

刚开始想用数据库做来着,后来发现用数据库数据量太大,就找解决方案,想到了用bitMap 位图。

bitMap 位图是什么  ?

我们采用的是radis 里的bitMap结构  他本质是字符串  最大512mb

是使用01 来存储的一种方式

为什么?

节省空间  我们采用的是 一个人一个月 的签到记录放进一个单独的key里面

最多也就31bit  签到这个业务 只有签到和未签到 两张状态  所有才用 bitmap

什么是多级缓存?

多级缓存就是  本地缓存+radis缓存形成的多级缓存

流程是 : 先访问本地缓存 没有就访问radis缓存 在没有 就访问 数据库

好处点是什么?

相对应radis来说 响应速度更快  并且没有网络带宽消耗 

缺点是什么 ?

由于是本地缓存  所以在分布式环境下  很难同步 

项目中有没有用到  ??

有啊  

是分类数据 

为什么是分类数据 ?

因为分类数据 不经常变化 数据量不能太大 一般百万级别

你们是用什么框架 做的?

咖啡因  性能遥遥领先 经过Spring洗礼 容错性也好

介绍一下点赞功能?

点赞是一个独立 通用模块   原因是我们这个系统 有好几个地方都用到 点赞  所以 我呢就想着 把他设计独立一些   其次 点赞是一个高频接口  所有要保证这个接口能够应对高并发  还有数据安全能得到保证  

 所有用到了radis相关存储数据  

set 用来存储点赞记录 

zet用来存储点赞次数 

为什么要用到这两个结构?

set存储点赞记录  是利用 set天然去重性  所有value 是用户id

使用zset 原因 是 我们采用了合并写思路  原因是 点赞功能是一个比较简单操作数据库过程 

所有就先把这个数据存储在radis 中  在通过定时任务去修改  数据库

最后由于点赞  数量的这个值是存在各个微服务里 ,又由于我的点赞 是一个独立的微服务 ,所以我采用mq来做异步通知 的方式来降低两个模块之间的耦合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub Copilot+ESP开发实战-串口

上篇文章讲了GitHub Copilot在应用中可能遇到的问题,接下来小启就简单介绍下GitHub Copilot在ESP32开发中C语言实现串口功能,感兴趣的可以看看。 一、向Copilot提问: 1. ESP32用C语言实现串口初始化; 2.配置uart为1&#xff0c…

【Thread 线程】线程的方法与状态

SueWakeup 个人中心:SueWakeup 系列专栏:学习Java 个性签名:保留赤子之心也许是种幸运吧 本文封面由 凯楠📷 友情赞助播出! 目录 一个线程的生命周期 线程终止的原因 线程的方法 Thread 类的静态方法 1. 设置线程…

59、服务攻防——中间件安全CVE复现IISApacheTomcatNginx

文章目录 中间件——IIS漏洞中间件——Nginx漏洞中间件——Apache中间件——Tomcat 中间件:IIS、Apache、Nginx、Tomcat、Docker、Weblogic、JBoss、WebSphere、Jenkinsphp框架:Laravel、Thinkphppythonl框架:Flaskjs框架:jQueryj…

为什么要减少Http的请求以及如何减少Http请求

为什么要减少Http的请求 减少 HTTP 请求的数量是优化网页性能的一个重要策略,原因有以下几点: 1.延迟:每个 HTTP 请求都会有一定的网络延迟。即使数据量很小,请求和响应的往返时间也可能相当长,特别是在网络条件不好…

王道c语言-链表分为两半,逆置后一半,与前一半轮流合并

王道c语言-链表分为两半,逆置后一半,与前一半轮流合并 设线性表 L ( a 1 , a 2 , a 3 , ⋯ , a n − 2 , a n − 1 , a n ) L(a_1,a2,a3,\cdots,a_{n-2},a_{n-1},a_{n}) L(a1​,a2,a3,⋯,an−2​,an−1​,an​) 采用带头结点的单链表保存,…

【Unity】从0到1的横版2d制作笔记-DAY1

写在前面: 感谢旻子提供的Unity2d课程捏,红豆泥阿里嘎多 创建项目 测试Visual Studio的使用 右键选择【create】,右键创建C# Script,待文件创建完毕后双击查看能否正确跳转。 正确跳转的结果是能看见代码中注释标注有:…

mysql - 查询成本 - 优化器

查询成本 我们之前老说MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模糊的,其实在MySQL中一条查询语句的执行成本是由下边这两个方面组成的&…

低代码开发与数据可视化

随着数字化转型的深入发展,软件开发在各行各业中的重要性日益凸显。近年来,低代码开发与数据可视化技术的兴起,为软件开发带来了革命性的变革。本文将深入探讨低代码开发与数据可视化的概念、优势以及应用场景,旨在帮助读者更好地…

分布式搜索引擎elasticsearch专栏二

上一篇的传送门: 分布式搜索引擎elasticsearch专栏一-CSDN博客 这一篇博文主要讲解elasticsearch的数据搜索功能。下面会分别使用DSL和RestClient实现搜索。 1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsea…

[PwnThyBytes 2019]Baby_SQL

[PwnThyBytes 2019]Baby_SQL 查看源码发现 下载源码,首先观察index.php 首先进入index.php,会执行session_start();启动session这里通过foreach将所有的环境变量的值都遍历了一遍,并且都使用了addslashes()进行转义,然后就定义了…

cuda从入门到精通(六)共享内存和循环分块实现CUDA矩阵乘

本文系转载,出处:https://mp.weixin.qq.com/s/1w1WFPoUEvVECsurqmvJDw 在CUDA编程中,共享内存和循环分块(loop tiling)是两种常见的优化策略,它们可以帮助我们提高矩阵乘法的性能。 共享内存(Sh…

GO语言:函数、方法、面向对象

本文分享函数的定义、特性、defer陷阱、异常处理、单元测试、基准测试等以及方法和接口相关内容 1 函数 函数的定义 func 函数名(参数列表) (返回值列表) { // 函数体(实现函数功能的代码) } 匿名函数的定义就是没有函数名,可以当做一个函…

使用华为云HECS服务器+nodejs开启web服务

简介: 在华为云HECS服务器上使用nodejs开启一个web服务。 目录 1.开通华为云服务器 2.远程登录 2.1 使用华为官方的网页工具登录 ​编辑 2.2 使用MobaXterm登录 3 安装node 3.1 下载 2. 配置环境变量 4. 安装express模块 5.开启外网访问 1.开通华为云服务器 这…

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试)

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试) ​​ ​​ 数据源系统:MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方…

ASPICE规范之系统追溯矩阵

系统追溯矩阵的需求来自 ISO26262 举例在描述系统追溯矩阵时:客户需求->系统需求;系统需求->客户需求;系统需求->软件需求;系统需求->硬件需求

【LabVIEW FPGA入门】使用FPGA实现串行同步接口(SSI)

SSI(串行同步接口)是连接绝对位置传感器和控制器的广泛应用的串行接口。SSI利用控制器发出一个时钟脉冲序列,初始化传感器的门限输出。 传感器不断更新位置数据,并传送到移位寄存器中。在每一个时钟脉冲序列之间&#xff…

条件随机场(CRF)笔记

Filed, Random Field, Conditional Random Field 场(field)是一个关于位置的函数。这个概念来自物理学,一个典例是引力场:一个有质量的物体 A 会对其它有质量的物体产生引力,可用一个函数来描述在各位置受到来自 A 的…

在Ubuntu20.04(原为cuda12.0, gcc9.几版本和g++9.几版本)下先安装cuda9.0后再配置gcc-5环境

因为自己对Linux相关操作不是很熟悉,所以因为之前的代码报错之后决定要安cuda9.0,于是先安装了cuda9.0。里面用到的一些链接,链接文件夹时直接去copy它的路径,就不那么容易错了。 今天运行程序之后发现gcc环境不太匹配cuda9.0&am…

Python 第三方库 | python-dotenv

1. 简介 在一些项目中,处于安全性的要求,一般不将密码,key等放入到配置文件中。然而这些代码又是上传在 git等平台上。为了方便管理。一般采用系统变量的方式来实现。从而实现配置和代码分开。 2. 安装 pip install python-dotenv 3. 使用…

FX-数组的使用

1一维数组 1.1一维数组的创建和初始化 1.1.1数组的创建 //代码1 int arr1[10]; char arr2[10]; float arr3[1]; double arr4[20]; //代码2 //用宏定义的方式 #define X 3 int arr5[X]; //代码3 //错误使用 int count 10; int arr6[count];//数组时候可以正常创建&#xff1…