网络云盘项目——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库的安装

  • 我们的服务端使用的C语言编写,其会在代码中操作MySQL数据库。
  • libmysqlclient-dev是C语言用来操作MySQL的程序库,因此需要安装这个库。
  • 安装就不详细介绍了,可以参阅:​​​​​​​https://dongshao.blog.csdn.net/article/details/102640756
  • 到此,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董哥的黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值