网络云盘项目——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:公众号《董哥的黑板报》回复【3678】获取百度云盘链接。
- 方式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_diskcd cloud_disk/serverls
- 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://dongshao.blog.csdn.net/article/details/102638547
- 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) 否 '' 邮箱 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表设计相关推荐
- 网络云盘项目——FastDFS集群部署
一.本文目的 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部 ...
- 网络云盘项目——服务端部署、客户端部署、演示运行效果
一.前言 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部署. ...
- 网络云盘项目——HTTP接口介绍、功能介绍、服务端/客户端代码解析
一.本文目的 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部 ...
- 网络云盘项目——Nginx配置(配置Nginx访问FastCGI、FastDFS)
一.本文目的 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部 ...
- Jsp+javaBean+mysql的网络云盘
Jsp+javaBean+mysql的网络云盘 一文件上传:利用jspSmartUpload.jar shangchuan.jsp <%@ page contentType="text ...
- 【PYTHON】【socket】简易网络云盘(练习项目)【开源】
开源项目 网络云盘 ----------------------------------------------------------------------------------------- ...
- 视频教程-C++微服务架构及安全云盘项目实训-C/C++
C++微服务架构及安全云盘项目实训 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿真,计算机视觉,嵌入式图像处理,云安全审 ...
- 基于Java+hadoop网络云盘上传下载系统设计与实现
目 录 网络云盘上传下载系统摘要----------------------------------5 The Network Cloud Disk`s Upload and DownloadAbst ...
- 联想私有云盘成功中标布丁酒店浙江股份有限公司云盘项目
近日,联想私有云盘成功中标布丁酒店浙江股份有限公司云盘项目,联想私有云盘将为其提供安全.协同且高效的一站式数据统一管理平台. 项目背景及需求 布丁酒店隶属杭州住友酒店管理有限公司,为中国第一家时尚且概 ...
最新文章
- python打开word并在前台显示_Python自动化办公之Word,全网最全看这一篇就够了
- 客户端码农学习ML —— Numpy基本用法
- linux mysql定时增量备份_Mysql 日常备份和增量备份脚本(Linux)
- Heredoc和Nowdoc
- Python入门--文件的读写,相对路径,绝对路径
- 我对python的理解_python高级函数以及我对python的理解
- Java中常见的几种异常
- 牛顿三次插值 matlab,matlab 牛顿插值法 三次样条插值法[行业二类]
- Sina weibo新浪微博 API返回信息详解
- java throw 和catch_Java catch与throw同时使用的操作
- NLP工具——NLTK 安装及使用
- (附源码)springboot社区养老医疗服务平台 毕业设计 041148
- 详解Flutter中各种Binding
- 【官方】BootCDN-稳定、快速、免费的前端开源项目 CDN 加速服务
- Web3能否撕裂国内 VC 的共识?
- 2021年中国电子商务行业投融资现状及未来发展趋势分析[图]
- N2语法汇总(190条)
- 打鼹鼠————牛客OJ
- USB限流IC,限流开关保护芯片
- python读取odb_如何使用python脚本更新Abaqus odb文件的节点值?