网络云盘项目——Redis部署MySQL部署MySQL表设计
Posted 董哥的黑板报
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络云盘项目——Redis部署MySQL部署MySQL表设计相关的知识,希望对你有一定的参考价值。
一、本文目的
- 本项目分为6篇博客文章完成:
- 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393。
- 2.Redis部署、MySQL部署、MySQL表设计:本文介绍。
- 3.FastDFS集群部署:https://blog.csdn.net/qq_41453285/article/details/107874068。
- 4.Nginx配置:https://blog.csdn.net/qq_41453285/article/details/107889933。
- 5.服务端/客户端部署、演示运行效果:https://blog.csdn.net/qq_41453285/article/details/107891262。
- 6.HTTP接口介绍、功能介绍、服务端/客户端代码解析:https://blog.csdn.net/qq_41453285/article/details/107893049。
源码下载方式
- 方式1:公众号《董哥的黑板报》回复【3578】获取百度云盘链接。
- 方式2:Github开源链接https://github.com/dongyusheng/cloud-disk。
- 本文配置整个项目中的Redis与mysql,并且对MySQL中的数据表进行设计。
二、Redis部署
Redis的安装
- Redis的安装比较容易,可以参阅:Linux下安装Redis数据库_董哥的黑板报的博客-CSDN博客_linux 安装redis数据库。
- Redis的安装就不多讲了,参照链接就可以了。
hiredis库的安装
- 我们的服务端使用的C语言编写,其会在代码中操作Redis数据库。
- hiedis是C语言用来操作redis的程序库,因此需要安装这个库。
- 安装就不详细介绍了,可以参阅:C语言操作Redis(hiredis库)_董哥的黑板报的博客-CSDN博客_c语言redis。
Redis的配置文件
- 进入云盘项目的Github(GitHub - dongyusheng/cloud-disk: 网络云盘),其中server目录存储的是我们的服务端代码。
- 把上面的server目录下载下来,下载到ubuntu中(例如我们存放在叫cloud_disk的目录中),然后进入cloud_disk/server目录:
ls cloud_disk cd cloud_disk/server ls
- conf/目录中存放了服务端的所有配置文件,并且在conf/redis/目录下存放了redis的配置文件:
ls conf/ ls conf/redis
- 修改redis的配置文件:
vim conf/redis/redis.conf
- 该配置文件中主要修改的内容有:
- bind选项:注释掉这个选项,使得Redis可以远程访问。
- daemonize选项:将其设置为yes,使其以守护进程的方式运行。
- pidfile选项:设置Redis的pid文件存储位置(此处设置为我们的服务端程序的/conf/redis/目录下)。
- logfile选项:设置Redis的日志文件位置(此处设置为我们的服务端程序的/conf/redis/目录下)。
- 其他选项保持不变。
- 到现在只需要把Redis的配置文件设置好就可以了,其他的不要动了,后面编译运行服务端的时候会使用到这个配置文件来启动Redis。
三、MySQL部署
- 我们的后端程序会把文件的信息和用户的信息保存在MySQL中,因此还需要配置一下MySQL。
- 在项目开源根目录下,有一个mysqlscript目录,这个目录中有两个MySQL脚本:
- clound_disk.sql:用来创建数据库,和相关表的。
- clound_disk_clear.sql:用来删除所有表的数据(但是不删除数据库和表)。
MySQL的安装
- MySQL的安装比较容易,可以参阅:https://blog.csdn.net/qq_41453285/article/details/87361983。
- MySQL的安装就不多讲了,参照链接就可以了。
数据库和表创建
- 第一步:将上面的clund_disk.sql脚本下载到自己主机本地(随便下载到哪里)
- 第二步:登录MySQL
mysql -u root -p
- 第三步:输入下面的命令执行clund_disk.sql脚本,创建cloud_disk数据库,然后在cloud_disk数据库中创建5张表
source ./cloud_disk.sql
- 第四步:命令执行成功之后,就可以看到cloud_disk数据库创建成功,并且添加了5张表
show databases; use cloud_disk; show tables;
libmysqlclient-dev库的安装
- 我们的服务端使用的C语言编写,其会在代码中操作MySQL数据库。
- libmysqlclient-dev是C语言用来操作MySQL的程序库,因此需要安装这个库。
- 安装就不详细介绍了,可以参阅:C语言操作Redis(hiredis库)_董哥的黑板报的博客-CSDN博客_c语言redis。
- 到此,MySQL部署完成,后面会用到cloud_disk数据库和相关的表。
四、MySQL表设计
- 可以看到在cloud_disk数据库有5张表,这5张表是我们项目在运行过程中需要使用的。
用户信息表(user_info)
- 这个表格用来存储每个用户的信息,一行代表一个用户。
- 例如,当注册新用户的时候就会向这个表中插入一条数据。
字段名 意义 类型 是否允许为空值 默认值 备注 id 序号 bigint 否 无 自动递增,主键 user_name 用户名称 varchar(32) 否 '' nick_name 用户昵称 varchar(32) 否 '' phone 手机号码 varchar(16) 否 '' 邮箱 varchar(64) 否 '' password 密码 varchar(32) 是 '' 保存md5后的加密值 create_time 用户创建时间 TIMESTAMP 否 CURRENT_TIMES TAMP
文件信息表(file_info)
- 因为我们的文件都存储在FastDFS中,这个表格用来存储FastDFS中所有文件的信息,一行代表一个文件。
- 备注:
- file_id:代表这个文件在FastDFS中的路径。
- url:代表我们可以通过nginx以哪个URL访问到这个文件。
- count:因为我们的网盘项目有文件共享的功能,因此如果一个文件被多个用户下载,那么这个文件的count数量就会增加。
字段名 意义 类型 是否允许为空值 默认值 备注 id 序号 bigint 否 无 自动递增,主键 md5 文件md5 varchar(256) 否 '' file_id 文件id varchar(256) 否 '' 格式例如:/group1/M00/00/00/xxx.png url 文件url varchar(512) 否 '' 格式例如: 192.168.1.2:80/group1/M00/00/0 0/xxx.png size 文件大小 bigint 否 0 以字节为单位 type 文件类型 varchar(32) 是 '' png、zip、mp4...... count 文件引用计数 int 否 0 默认为1,每增加一个用户拥有此文件,此计数器就会加1
用户文件列表(user_file_list)
- 这个每一行也代表一个文件,但是与file_info表不同,这个表每一行的文件都会指出其拥有者是谁。
- 备注:
- shared_status:因为我们得Qt客户端有一个文件共享功能,因此这个标志表示此用户的这个文件是否被共享出来。
- pv:如果这个文件是被共享出去的,那么所有用户都可以下载这个文件,如果这个共享文件被下载1次,这个字段就相应的加1。
字段名 意义 类型 是否允许为空值 默认值 备注 id 序号 int 否 无 自动递增,主键 user 文件所属用户 varchar(32) 否 无 md5 文件md5 varchar(256) 否 无 file_name 文件名字 varchar(128) 否 '' shared_status 共享状态 int 否 0 0表示没有共享;1表示共享 pv 文件下载量 int 否 0 默认值为0;每下载一次,这个数量就加1 create_time 文件创建时间 timestamp 否 CURRENT_TIMES TAMP
用户文件数量表(user_file_count)
- 这个表比较简单,用来统计每个用户有多少个文件数量,一行代表一个用户。
- 例如,当Qt客户端第一次登陆的时候,其就会先发送一个HTTP请求来查询自己拥有多少个文件,然后再显示出来。
字段名 意义 类型 是否允许为空值 默认值 备注 id 序号 int 否 无 自动递增,主键 user 文件所属用户 varchar(128) 否 无 因为我们有一个共享文件的功能,所以我们的服务端也有一个“共享用户”角色,xxx_share_xxx_file_xxx_list_xxx_c ount_xxx表示共享用户
count 此用户拥有的文件数量 int 否 0
共享文件列表(share_file_list)
- 因为Qt客户端可以共享文件,所以每当共享自己的文件之后,就会把自己共享的文件信息添加到这个表中。
- 备注:
- shared_status:因为我们得Qt客户端有一个文件共享功能,因此这个标志表示此用户的这个文件是否被共享出来。
- pv:如果这个文件是被共享出去的,那么所有用户都可以下载这个文件,如果这个共享文件被下载1次,这个字段就相应的加1。
字段名 意义 类型 是否允许为空值 默认值 备注 id 序号 int 否 无 自动递增,主键 user 文件所属用户 varchar(32) 否 无 md5 文件md5 varchar(256) 否 无 pv 文件下载量 int 否 无 默认值为1;每下载一次,这个数量就加1 file_name 文件名字 varchar(128) 否 无 create_time 文件共享时间 timestamp 否 CURRENT_TIMES TAMP
以上是关于网络云盘项目——Redis部署MySQL部署MySQL表设计的主要内容,如果未能解决你的问题,请参考以下文章
网络云盘项目——Nginx配置(配置Nginx访问FastCGIFastDFS)
网络云盘项目——HTTP接口介绍功能介绍服务端/客户端代码解析