一、本文目的

  • 本项目分为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) ''
email 邮箱 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表设计相关推荐

  1. 网络云盘项目——FastDFS集群部署

    一.本文目的 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部 ...

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

    一.前言 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部署. ...

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

    一.本文目的 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部 ...

  4. 网络云盘项目——Nginx配置(配置Nginx访问FastCGI、FastDFS)

    一.本文目的 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部 ...

  5. Jsp+javaBean+mysql的网络云盘

    Jsp+javaBean+mysql的网络云盘 一文件上传:利用jspSmartUpload.jar shangchuan.jsp <%@ page contentType="text ...

  6. 【PYTHON】【socket】简易网络云盘(练习项目)【开源】

     开源项目 网络云盘 ----------------------------------------------------------------------------------------- ...

  7. 视频教程-C++微服务架构及安全云盘项目实训-C/C++

    C++微服务架构及安全云盘项目实训 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿真,计算机视觉,嵌入式图像处理,云安全审 ...

  8. 基于Java+hadoop网络云盘上传下载系统设计与实现

    目 录 网络云盘上传下载系统摘要----------------------------------5 The Network Cloud Disk`s Upload and DownloadAbst ...

  9. 联想私有云盘成功中标布丁酒店浙江股份有限公司云盘项目

    近日,联想私有云盘成功中标布丁酒店浙江股份有限公司云盘项目,联想私有云盘将为其提供安全.协同且高效的一站式数据统一管理平台. 项目背景及需求 布丁酒店隶属杭州住友酒店管理有限公司,为中国第一家时尚且概 ...

最新文章

  1. python打开word并在前台显示_Python自动化办公之Word,全网最全看这一篇就够了
  2. 客户端码农学习ML —— Numpy基本用法
  3. linux mysql定时增量备份_Mysql 日常备份和增量备份脚本(Linux)
  4. Heredoc和Nowdoc
  5. Python入门--文件的读写,相对路径,绝对路径
  6. 我对python的理解_python高级函数以及我对python的理解
  7. Java中常见的几种异常
  8. 牛顿三次插值 matlab,matlab 牛顿插值法 三次样条插值法[行业二类]
  9. Sina weibo新浪微博 API返回信息详解
  10. java throw 和catch_Java catch与throw同时使用的操作
  11. NLP工具——NLTK 安装及使用
  12. (附源码)springboot社区养老医疗服务平台 毕业设计 041148
  13. 详解Flutter中各种Binding
  14. 【官方】BootCDN-稳定、快速、免费的前端开源项目 CDN 加速服务
  15. Web3能否撕裂国内 VC 的共识?
  16. 2021年中国电子商务行业投融资现状及未来发展趋势分析[图]
  17. N2语法汇总(190条)
  18. 打鼹鼠————牛客OJ
  19. USB限流IC,限流开关保护芯片
  20. python读取odb_如何使用python脚本更新Abaqus odb文件的节点值?

热门文章

  1. C语言:if语句的嵌套
  2. 财经新闻数据scrapy实战(东方财富网)
  3. Navicat使用快速入门教程
  4. stm32编程语言学习
  5. vue+ele启用停用
  6. 基于SSM的汽车租赁后台管理系统【完整项目源码】
  7. angularjs创建自定义过滤器时欧元符号乱码
  8. 【PCBA方案开发设计】电动打气泵产品方案
  9. 弗朗西斯科·罗曼·阿拉尔孔·苏亚雷斯!!伊斯科!!
  10. VUE 点击图片直接进行页面跳转