网络云盘项目——Redis部署MySQL部署MySQL表设计

Posted 董哥的黑板报

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络云盘项目——Redis部署MySQL部署MySQL表设计相关的知识,希望对你有一定的参考价值。

一、本文目的

源码下载方式

  • 本文配置整个项目中的Redis与mysql,并且对MySQL中的数据表进行设计。

二、Redis部署

Redis的安装

hiredis库的安装

Redis的配置文件

  • 把上面的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的安装

数据库和表创建

  • 第一步:将上面的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库的安装

  • 到此,MySQL部署完成,后面会用到cloud_disk数据库和相关的表。

四、MySQL表设计

  • 可以看到在cloud_disk数据库有5张表,这5张表是我们项目在运行过程中需要使用的。

用户信息表(user_info)

  • 这个表格用来存储每个用户的信息,一行代表一个用户。
  • 例如,当注册新用户的时候就会向这个表中插入一条数据。
字段名意义类型是否允许为空值默认值备注
id序号bigint自动递增,主键
user_name用户名称varchar(32)''
nick_name用户昵称varchar(32)''
phone手机号码varchar(16)''
email邮箱varchar(64)''
password密码varchar(32)''保存md5后的加密值
create_time用户创建时间TIMESTAMPCURRENT_TIMES TAMP

文件信息表(file_info)

  • 因为我们的文件都存储在FastDFS中,这个表格用来存储FastDFS中所有文件的信息,一行代表一个文件。
  • 备注:
    • file_id:代表这个文件在FastDFS中的路径。
    • url:代表我们可以通过nginx以哪个URL访问到这个文件。
    • count:因为我们的网盘项目有文件共享的功能,因此如果一个文件被多个用户下载,那么这个文件的count数量就会增加。
字段名意义类型是否允许为空值默认值备注
id序号bigint自动递增,主键
md5文件md5varchar(256)''
file_id文件idvarchar(256)''格式例如:/group1/M00/00/00/xxx.png
url文件urlvarchar(512)''格式例如: 192.168.1.2:80/group1/M00/00/0 0/xxx.png
size文件大小bigint0以字节为单位
type文件类型varchar(32)''png、zip、mp4......
count文件引用计数int0默认为1,每增加一个用户拥有此文件,此计数器就会加1

用户文件列表(user_file_list)

  • 这个每一行也代表一个文件,但是与file_info表不同,这个表每一行的文件都会指出其拥有者是谁。
  • 备注:
    • shared_status:因为我们得Qt客户端有一个文件共享功能,因此这个标志表示此用户的这个文件是否被共享出来。
    • pv:如果这个文件是被共享出去的,那么所有用户都可以下载这个文件,如果这个共享文件被下载1次,这个字段就相应的加1。
字段名意义类型是否允许为空值默认值备注
id序号int自动递增,主键
user文件所属用户varchar(32)
md5文件md5varchar(256)
file_name文件名字varchar(128)''
shared_status共享状态int00表示没有共享;1表示共享
pv文件下载量int0默认值为0;每下载一次,这个数量就加1
create_time文件创建时间timestampCURRENT_TIMES TAMP

用户文件数量表(user_file_count)

  • 这个表比较简单,用来统计每个用户有多少个文件数量,一行代表一个用户。
  • 例如,当Qt客户端第一次登陆的时候,其就会先发送一个HTTP请求来查询自己拥有多少个文件,然后再显示出来。
字段名意义类型是否允许为空值默认值备注
id序号int自动递增,主键
user文件所属用户varchar(128)

因为我们有一个共享文件的功能,所以我们的服务端也有一个“共享用户”角色,xxx_share_xxx_file_xxx_list_xxx_c ount_xxx表示共享用户

count此用户拥有的文件数量int0

共享文件列表(share_file_list)

  • 因为Qt客户端可以共享文件,所以每当共享自己的文件之后,就会把自己共享的文件信息添加到这个表中。
  • 备注:
    • shared_status:因为我们得Qt客户端有一个文件共享功能,因此这个标志表示此用户的这个文件是否被共享出来。
    • pv:如果这个文件是被共享出去的,那么所有用户都可以下载这个文件,如果这个共享文件被下载1次,这个字段就相应的加1。
字段名意义类型是否允许为空值默认值备注
id序号int自动递增,主键
user文件所属用户varchar(32)
md5文件md5varchar(256)
pv文件下载量int默认值为1;每下载一次,这个数量就加1
file_name文件名字varchar(128)
create_time文件共享时间timestampCURRENT_TIMES TAMP

以上是关于网络云盘项目——Redis部署MySQL部署MySQL表设计的主要内容,如果未能解决你的问题,请参考以下文章

网络云盘项目——服务端部署客户端部署演示运行效果

网络云盘项目——总体介绍附源码链接

网络云盘项目——Nginx配置(配置Nginx访问FastCGIFastDFS)

网络云盘项目——HTTP接口介绍功能介绍服务端/客户端代码解析

macOS10.12部署sonarqube5.6.3 + mysql5.7.17

Ubuntu 16.04下Docker部署SpringBoot、Mysql、Redis、Nginx和Vue