# 缓存释放

## 缓存释放概述

free操作提供了强制驱逐数据的选项，用来手动释放缓存空间。

### 通过命令行释放缓存空间

用法: `bin/alluxio job free [flags]`

* 提交一个free任务:

```shell
$ {ALLUXIO_HOME}/bin/alluxio job free --path s3://bucket/path --submit
```

* 查看一个free任务的进度:

```shell
$ {ALLUXIO_HOME}/bin/alluxio job free --path s3://alluxio/path --progress
Progress for Free path file 's3://alluxio/path':
  Job Id: b21ce9fb-f332-4d39-8bb4-554f9a4fa601
  Job Submitted: Fri Feb 02 21:28:56 CST 2024
  Job path: s3://alluxio/path
  Job State: SUCCEEDED, finished at Fri Feb 02 21:29:01 CST 2024
  Free Info : totalFile:4 totalByte:3072.00KB
  Free Files Failed: 0
  Free Bytes Failed: 0B
  Free Files Succeeded: 4
  Free Bytes Succeeded: 3072.00KB
```

* 停止并中断一个正在运行的free任务:

  停止后，没有释放的文件依然会留在缓存中

```shell
$ {ALLUXIO_HOME}/bin/alluxio job free --path s3://alluxio/path --stop
```

```shell
参数描述：
--path [all] ufs路径
--batch-size [submit] 每秒每个worker释放文件的速度
--force [submit] 即使某些worker离线也触发释放
--verbose [progress] 输出free任务的详细信息
--format string [progress] 输出格式，TEXT或JSON（默认 "TEXT"）
```

### 通过REST API释放缓存空间

* 提交一个free任务:

```shell
curl -H "Content-Type: application/json" -v -X POST http://coordinator_host:19999/api/v1/master/submit_job/free -d '{
	"path": "s3://alluxio/path",
	"options": {
	"batchSize": "200"
	}
}'
```

* 查看一个free任务的进度:

```shell
curl -H "Content-Type: application/json" -v -X GET http://coordinator_host:19999/api/v1/master/progress_job/free -d '{
	"path": "s3://alluxio/path",
	"format": "JSON",
	"verbose": "true"
}'
```

* 停止并中断一个正在运行的free任务:

  停止后，没有释放的文件依然会留在缓存中

```shell
curl -H "Content-Type: application/json" -v -X POST http://coordinator_host:19999/api/v1/master/stop_job/free -d '{
	"path": "s3://alluxio/path"
}'
```

* 查询free任务列表：

```shell
curl http://ip:1999/api/v1/master/list_job?job-type=FREE[&job-state=[RUNNING|VERIFYING|STOPPED|SUCCEEDED|FAILED|ALL]]
```
