GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
gorm package - github.com/jinzhu/gorm - Go Packages
go语言day20实现投票功能项目包-CSDN博客
基于Redis的有序集合Sorted Sets优化排行榜功能_哔哩哔哩_bilibili
安装gorm框架
go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite
gin框架标准项目结构:
models:存放对应实体类和gorm包增删改查方法
config:mysql和redis的配置信息
cache:连接redis
dao:连接mysql
controller:控制器
router:路由,用来设置访问路径和调用对应controller方法。
配置mysql数据库:
使用宝塔配置redis服务器:
云服务器-宝塔安装-Redis_宝塔redis-CSDN博客
1)下载宝塔
宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 (bt.cn)
2)进入软件商店下载redis
3)设置redis的相关配置,这里不需要密码
4)配置端口号,重启redis
配置redis数据库:
mysql数据库字段:
活动表:activity
参赛选手表:player
用户表:user
投票详情:vote
实现一个查询业务:
redis缓存服务器主要用来实现缓解mysql数据库访问压力。这里实现一个查询所有参赛选手的业务需求,也就是控制器接收活动aid,根据aid查询并返回player表的对应aid的所有players信息。
controller层具体操作是:
定义活动名,作为键key。
先从redis数据库中查找key相应值
查找到了正确的value活动信息,从数据库中根据value中的id查询每个选手的详细信息。
如果在redis数据库中没有活动对应的value值信息,或者就没有key。去mysql数据库查询活动需要的信息:该活动aid 对应的所有参赛选手的id然后去redis数据库添加缓存信
息.
moudel层要实现查询mysql数据库:
gorm package - github.com/jinzhu/gorm - Go Packages
这里的mysql连接对象dao.Db调用的增删改查方法默认封装了事务处理,并且会根据实体类Player的TableName()方法返回值确定查询的实体类对应的表名
发送一个post请求aid=1:
查看redis数据库:
这里的值加密了,使用可视化工具连接redis数据库
使用宝塔在服务器上配置Redis_宝塔配置redis-CSDN博客(linux)