8.6 个人网盘功能

该功能依赖于登录功能。


文件引用计数表:

FILE_REFERENCE_COUNT_HASH

field ---> file_id

value ---> 目前该文件被多少个用户所拥有

/*------------------------------------------.
| 文件ID 引用计数  表 (HASH)                |
| Key:     FILEID_REFERENCE_COUNT_HASH      |
| field:  file_id                           |
| value:  count                             |
| redis 语句                                |
|    hset key field value                   |
|    hget key field                         |
`------------------------------------------*/
#define FILE_REFERENCE_COUNT_HASH        "FILE_REFERENCE_COUNT_HASH"

用户名-ID对应表

USER_USERID_HASH

field--->username

value--->userid

用户每次登陆或者注册都会为该用户申请一个userid存放在USER_USERID_HASH中。

/*------------------------------------------.
| 用户名 用户ID  表 (HASH)                  |
| Key:    USER_USERID_HASH                  |
| field:  username                          |
| value:  userid                            |
| redis 语句                                |
|    hset key field value                   |
|    hget key field                         |
`------------------------------------------*/
#define USER_USERID_HASH                 "USER_USERID_HASH"

用户文件列表

FILE_USER_LIST_userid

value-->file_id

每个用户都有一个FILE_USER_LIST_userid 列表,记录当前用户拥有哪些文件。 每次向该表中加入一个文件,就要修改FILE_REFERENCE_COUNT_HASH对应的file_id的引用计数加1,如果该用户删除一个文件,就应该修改FILE_REFERENCE_COUNT_HASH对应的file_id的引用计数减1.

如果该文件引用计数为0,则通过fastDFS删除该文件。

/*------------------------------------------.
| 个人用户文件列表表 (LIST)                 |
| Key:     FILE_USER_LIST_userid            |
| value:  fileid                            |
| redis 语句                                |
|    lpush key value                        |
`------------------------------------------*/
#define FILE_USER_LIST                   "FILE_USER_LIST_"

共享文件表

FILE_PUBLIC_LIST

之前已经建好的文件列表设置为公有文件列表,每个用户都可以访问 每个用户可以给自己的文件添加共享-私有属性,此表显示所有的共享属性的文件。

所有用户在共享文件表中如果选择[纳为己有],则该文件会添加到该用户的FILE_USER_LIST_userid中。


/*------------------------------------------.
| 共享用户文件列表表 (LIST)                 |
| Key:     FILE_PUBLIC_LIST                 |
| value:  fileid                            |
| redis 语句                                |
|    lpush key value                        |
`------------------------------------------*/
#define FILE_PUBLIC_LIST                   "FILE_PUBLIC_LIST"

results matching ""

    No results matching ""