当前位置: 首页 > 网络应用技术

Next.js使用Redis来实现每周的访问统计信息,喜欢,作者排名和其他功能?

时间:2023-03-07 00:45:25 网络应用技术

  最近,我已经完成了大三的最终设计,并且我独立地完成了博客社区。主要技术堆栈是:

  前端:next.js + mobx + ts + antd;

  背景管理系统:vue3.0 + pinia + ts + elementui

  后端:Next.js + TS + Alibaba Cloud OSS Storage + REDIS

  在开发过程中,我遇到了很多坑,我将总结一下在开发过程中通过文章启动的坑和一些小体验。

  因为我发现Next.js是一个完整的堆栈框架,所以可以在其API路径下写入接口代码。该文章排名和作者排名的实施。在下面,我将使用Next.js分享我的经验和遭遇,以操作Redis以操作Redis.go到PIT?

  1.在网站上阅读统计数据

  该图是为了计算过去一周用户访问该网站的卷数据的更改。

  这张照片是为了显示用户的总读数(6次),以及今天新添加的阅读量(2次)

  PS:样式有点丑陋,并且UI尚未得到优化。

  2.赞美排名,作者排名

  显示流行文章和作者的排名

  技术选择:如果我们使用数据库,则无法搜索数据库的完整表。如何获得排名,如果有10,000名作者,您将获得10,000茶来获得排名。Essenceandredis为真实的时间统计排名提供有序的数组。将数组设置为统计访问量和其他数据(设置是一个不可用的数组,因此您可以避免使用多个用户访问量的记录)

  因此,如何在Next.js中使用redis非常简单,但是夜晚的信息很少(哭泣)

  步骤1:如果您没有REDIS,请参阅本文下载https://blog.csdn.net/qq_217185333/article/details/121045511文件

  我在Internet上检查了很长时间,但没有看到使用REDIS的一些使用。。评估

  源代码链接:https://github.com/vercel/next.js/tree/canary/canary/examples/with-redis

  在文件夹的LIB目录中创建一个新的redis.ts文件夹

  获取!它将仅使用,以下三种情况用于在Next.js中使用redis。

  在页面/api/addview.ts上有一个案例(本网站的总访问和每日访问量)

  需求:用户在当今用户的主页时记录一次访问数量,但是一天中的用户访问了很多次。该网站被认为是一次采访。

  以上是我使用eChart线图获得的7天访问量

  以及总访问者和今天的访问量(您可以看到网站的总访问为6,今天的访问为2)

  PS:样式有点丑陋,并且UI尚未得到优化。

  因此,我必须记录用户访问的总数和每日用户访问量

  我们以Redis的名义使用了20220512,如何生成20220512的时间戳

  在Utils工具类中定义

  实现源代码(页/api/addview.ts)

  最好查看Redis上的Redis操作的某些功能。

  附加新秀教程的链接:https://www.runoob.com/redis/redis-sets.html

  这是我返回的异常信息

  你可以看到

  以上是redis的可视化接口

  百度网络磁盘链接:https://pan.baidu.com/s/15xvrpct8mkp2ut8pobht3g

  如果我们想获取这些用户浏览的信息(过去七天内的增长次数,总用户的看法,今天的新增长)

  1.获取网站的总用户视图并立即添加

  获取过去一周每天用户观点的数据更改

  首先,我们必须获得20220506、201220507、20120508、20220509、20220510、20220511、20220512、20220512、20220512

  因为我想获得7天,所以我们必须检查七张桌子,我太多了,我只是想到了这种承诺。

  将数据和工作日期传递到前端主要是为了使显示前端折叠图的X轴。切片(4)操作以获取后续0512

  它们是文章排名和作者排名

  以下实现了简单的排名(通过Redis随附的有序数组实现)

  首先:预先了解REDIS的有序集(排序集)|runoob.com

  值是本文的相关信息,并且有分数。此分数是有序数组订单的关键。我们可以直接调用API以获取此有序组中每个字段的分数排名

  每次用户喜欢这篇文章时,我们都必须在Redis中的文章分数中添加一个

  ARCECLEDATA是上面图片上方的Article_id和Article_tital的组合对象。这边走

  获得排名

  同样,用户排名,实现方法:

  在每个用户称为发布文章接口中,执行以下操作:

  获取用户排名数据(前五名):

  原始:https://juejin.cn/post/7097150195426656270