2021-08-01-高性能 Redis 实战 - 实战入门篇 - 基于 Redis 有序集合实现 Laravel 热门浏览文章排行榜功能

1.应用场景

主要用于学习Redis 有序集合【SortedSet】类型,实现排行榜功能

2.学习/操作

1.文档阅读

https://laravelacademy.org/post/22169 // 基于 Redis 有序集合实现 Laravel 热门浏览文章排行榜功能

https://blog.csdn.net/william_n/article/details/115113177 // 2021-03-23 - 高性能 Redis 实战

2.整理输出

代码实现:

GitHub:https://github.com/ningxiaofa/high-performance-redis-tutorial/releases/tag/v0.0.2

Gitee:https://github.com/ningxiaofa/high-performance-redis-tutorial/releases/tag/v0.0.2

2.1 准备模型类和数据表

1. 执行 php artisan migrate 生成数据表操作之前,需要先创建数据库

Note:

这里使用的 redis_demo

同时 .env 文件要暂时先用root用户,sail用户不具有写入权限,否则,执行 sail php artisan migrate 会出现报错

2. 成功生成数据表

2. 2 热门浏览文章排行榜功能实现

步骤:

1 维护基于文章浏览数的有序集合

2 读取有序集合元素生成排行榜

2.3 测试热门浏览文章排行榜

1 生成模型工厂生成数据和生成模拟请求文件

sail php artisan make:factory PostFactory

sail php artisan make:command MockViewPosts

2 执行模拟访问

使用了 Laravel 自带的 HTTP 客户端发起对 /posts/{post} 路由的模拟访问

sail php artisan mock:view-posts

出现如下场景,一直执行了几分钟, 还没有停下来, 通过大概看了输出内容,似乎出了问题,于是终止该进程

通过查看过程,代码,判断应是URL的问题,这里sail并没有配置虚拟主机域名,使用的是localhost,于是将 http://redis-demo.test/posts/  换成 http://localhost/posts/再次执行上述命令

此时,又出现报错 SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known (SQL: truncate table `posts`)

分析报错提示,应该是没找到mysql服务名

重新执行迁移回退和再次迁移

sail php artisan migrate:rollback

sail php artisan migrate

再次执行 

sail php artisan mock:view-posts

同样出现最初的报错,重现检查整个过程,究竟哪里出了问题,最后发现, 是路由文件, 没有引入PostController

再次执行

此时,开始正确输出 【输出的内容正是PostController控制器中show 方法return的内容】

查看数据库Posts数据表的内容和redis的数据

Redis // 同时可以看到,上节课的全站访问 PV的数据也在变化

整个过程大概需要几分钟,请耐心等待

3 浏览器中访问获取热门文章排行榜数据

http://localhost/posts/popular

又出现幺蛾子了, 居然提示404

检查了遍路由,路由没发现问题

但是就是不行, 如果将 /posts/popular 改为 /posts-popular 

或者 将show 换成 popular 都可以正常访问

如下访问结果

http://localhost/posts-popular

http://localhost/posts/1

改回后,依然不行, 初步定位是 /posts/popular 路由存在问题,而且应该有路匹配的问题,没办法正常解析到popular方法中, 但是基于Laradock环境是没有问题的,所以应该是docker sailer 存在bug~, 接下来就是查看一下问题,提一个issue,当然能解决是最好的~

具体原因:TBD

解决办法:TBD

后续补充

...

3.问题/补充

TBD

4.参考

https://laravelacademy.org/post/22169 // 基于 Redis 有序集合实现 Laravel 热门浏览文章排行榜功能

后续补充

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值