1
0
Fork 0
mirror of https://github.com/dragonflydb/dragonfly.git synced 2024-12-14 11:58:02 +00:00

docs: add snapshot_cron flag in README (English and zh-CN) (#1729)

docs: snapshot_cron
This commit is contained in:
Joe Zhou 2023-08-27 13:19:22 -04:00 committed by GitHub
parent 901d3fff58
commit 343b3ef800
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 51 additions and 28 deletions

View file

@ -126,7 +126,7 @@ Dragonfly 特有の議論もある:
## <a name="ロードマップとステータス"><a/>ロードマップとステータス
Dragonfly は現在、~185 個の Redis コマンドと、`cas` 以外のすべての Memcache コマンドをサポートしている。ほぼ Redis 5 API と同等ですが、Dragonfly の次のマイルストーンは基本的な機能を安定させ、レプリケーション API を実装することです。まだ実装されていないコマンドで必要なものがあれば、issue を開いてください。
Dragonfly は現在、~185 個の Redis コマンドと、`cas` 以外のすべての Memcached コマンドをサポートしている。ほぼ Redis 5 API と同等ですが、Dragonfly の次のマイルストーンは基本的な機能を安定させ、レプリケーション API を実装することです。まだ実装されていないコマンドで必要なものがあれば、issue を開いてください。
Dragonfly ネイティブのレプリケーションについては、桁違いに高速な分散ログフォーマットを設計中です。

View file

@ -13,7 +13,7 @@
## 세상에서 가장 빠른 인-메모리 스토어
Dragonfly는 현대 애플리케이션 작업을 위한 인-메모리 데이터스토어입니다.
Dragonfly는 현대 애플리케이션 작업을 위한 인-메모리 데이터스토어입니다.
Dragonfly는 Redis와 Memcached API와 완벽하게 호환되며, 이를 적용하기 위한 코드 변경을 필요로 하지 않습니다. Dragonfly는 기존 레거시 인-메모리 데이터스토어와 비교하여 25배 이상의 높은 처리량과 캐시 히트율, 낮은 꼬리 지연시간을 갖고있으며 간편한 수직 확장성을 지니고 있습니다.
@ -75,13 +75,13 @@ Memcached는 읽기 벤치마크의 지연 시간은 적었지만, 처리량도
메모리 효율을 테스트하기 위해서, 저희는 `debug populate 5000000 key 1024` 명령어를 활용하여 Dragonfly와 Redis에 ~5GB 정도의 데이터를 채운 후, `memtier` 를 통하여 업데이트 트래픽을 전송한 후, `bgsave` 명령을 통하여 스냅샷을 시작했습니다.
이 그림은 메모리 효율 측면에서 각 서버가 어떻게 동작했는지 보여줍니다.
이 그림은 메모리 효율 측면에서 각 서버가 어떻게 동작했는지 보여줍니다.
<img src="http://static.dragonflydb.io/repo-assets/bgsave-memusage.svg" width="70%" border="0"/>
Dragonfly는 유휴 상태에서 Redis보다 메모리 효율이 30% 더 좋았으며, 스냅샷 단계에서 메모리 사용량이 눈에 띄게 증가하지 않았습니다. Redis는 고점에서 Dragonfly에 비해 메모리 사용량이 약 3배 증가하였습니다.
Dragonfly는 스냅샷 단계를 몇 초안에 더 빨리 마쳤습니다.
Dragonfly는 스냅샷 단계를 몇 초안에 더 빨리 마쳤습니다.
Dragonfly의 메모리 효율에 대한 정보가 더 필요하시다면, 저희의 [Dastable 문서](/docs/dashtable.md)를 참고하시기 바랍니다.
@ -90,7 +90,7 @@ Dragonfly의 메모리 효율에 대한 정보가 더 필요하시다면, 저희
Dragonfly는 적용 가능한 Redis 인수를 지원합니다. 예를 들면, `dragonfly --requirepass=foo --bind localhost`와 같은 명령어를 사용할 수 있습니다.
Dragonfly는 현재 아래와 같은 Redis 인수들을 지원합니다 :
Dragonfly는 현재 아래와 같은 Redis 인수들을 지원합니다 :
* `port`: Redis 연결 포트 (`기본값: 6379`).
* `bind`: `localhost`를 사용하여 로컬호스트 연결만 허용하거나 공용 IP 주소를 사용하여 해당 IP 주소에 연결을 허용합니다.(즉, 외부에서도 가능)
* `requirepass`: AUTH 인증을 위한 패스워드 (`기본값: ""`).
@ -98,12 +98,12 @@ Dragonfly는 현재 아래와 같은 Redis 인수들을 지원합니다 :
* `dir`: Dragonfly Docker는 스냅샷을 위해 기본적으로 `/data` 폴더를 사용하고, CLI은 `""`을 사용합니다. Docker 옵션인 `-v` 을 통해서 호스트 폴더에 매핑할 수 있습니다.
* `dbfilename`: 저장하고 불러올 데이터베이스 파일 이름 (`기본값: dump`).
아래는 Dragonfly 전용 인수 입니다 :
아래는 Dragonfly 전용 인수 입니다 :
* `memcached_port`: Memcached 호환 API를 위한 포트 (`기본값: disabled`).
* `keys_output_limit`: `keys` 명령을 통해 반환 되는 최대 키의 수 (`기본값: 8192`). `keys` 명령은 위험하기 때문에, 너무 많은 키를 가져올 때 메모리 사용량이 급증하지 않도록 결과를 해당 인수만큼 잘라냅니다.
* `dbnum`: `select` 명령에 대해 지원되는 최대 데이터베이스 수.
* `cache_mode`: 아래의 섹션 [새로운 캐시 설계](#novel-cache-design)을 참고해주시기 바랍니다.
* `hz`: 키가 만료되었는지를 판단하는 빈도(`기본값: 100`). 낮은 빈도는 키 방출이 느려지는 대신, 유휴 상태일 때 CPU 사용량을 줄입니다.
* `hz`: 키가 만료되었는지를 판단하는 빈도(`기본값: 100`). 낮은 빈도는 키 방출이 느려지는 대신, 유휴 상태일 때 CPU 사용량을 줄입니다.
* `save_schedule`: UTC 기준으로 스냅샷을 HH:MM(24시간제) 형식으로 저장하기 위한 Glob 패턴 (`기본값: ""`).
* `primary_port_http_enabled`: `true` 인 경우 HTTP 콘솔로 메인 TCP 포트 접근을 허용합니다. (`기본값: true`).
* `admin_port`: 할당된 포트에서 관리자 콘솔 접근을 활성화합니다. (`기본값: disabled`). HTTP와 RESP 프로토콜 모두를 지원합니다.
@ -125,7 +125,7 @@ Dragonfly는 현재 아래와 같은 Redis 인수들을 지원합니다 :
## <a name="roadmap-status"><a/>로드맵과 상태
Dragonfly는 현재 ~185개의 Redis 명령어들과 `cas` 뿐만 아니라 모든 Memcache 명령어를 지원합니다. 이는 거의 Redis 5 API와 동등하며, Dragonfly의 다음 마일스톤은 기본 기능 을 안정화하고 복제 API를 구현하는 것입니다. 아직 구현되지 않은 필요한 명령가 있다면, 이슈를 오픈해주세요.
Dragonfly는 현재 ~185개의 Redis 명령어들과 `cas` 뿐만 아니라 모든 Memcached 명령어를 지원합니다. 이는 거의 Redis 5 API와 동등하며, Dragonfly의 다음 마일스톤은 기본 기능 을 안정화하고 복제 API를 구현하는 것입니다. 아직 구현되지 않은 필요한 명령가 있다면, 이슈를 오픈해주세요.
Draginfly 고유 복제기능을 위해, 저희는 몇 배 높은 속도를 지원할 수 있는 분산 로그 형식을 설계하고 있습니다.
@ -139,7 +139,7 @@ Dragonfly에 의해 현재 지원되는 명령어를 확인하기 위해서 [명
Dragonfly는 단순하고 메모리 효율적인 단일, 통합, 적응형 캐싱 알고리즘을 제공합니다.
`--cache_mode=true` 플래그를 전달하여 캐싱 모드를 활성화할 수 있습니다. 이 모드가 활성화되면, Dragonfly는 `maxmemory` 한도에 가까워질 때만, 미래에 재사용 될 가능성이 가장 낮은 항목을 방출합니다.
`--cache_mode=true` 플래그를 전달하여 캐싱 모드를 활성화할 수 있습니다. 이 모드가 활성화되면, Dragonfly는 `maxmemory` 한도에 가까워질 때만, 미래에 재사용 될 가능성이 가장 낮은 항목을 방출합니다.
### 상대적인 정확성을 가진 만료 기한
@ -167,7 +167,7 @@ Dragonfly는 2022년에 인-메모리 데이터스토어를 설계한다면 어
첫 번째 문제는 오늘날 퍼블릭 클라우드 환경에서 사용 가능한 서버를 사용하여 CPU, 메모리 및 I/O 자원을 어떻게 최대한 활용할 수 있을지였습니다. 이 문제를 해결하기 위해 저희는 [비공유 아키텍처(Shared Nothing Architecture)](https://en.wikipedia.org/wiki/Shared-nothing_architecture)를 사용했습니다. 이는 저희가 메모리 스토어의 각 스레드 사이의 키 공간을 분할할 수 있게하였습니다. 이를 통해 각 스레드들은 그들의 딕셔너리 데이터들의 조각을 관리할 수 있게 되었습니다. 저희는 이 조각들을 "샤드(shards)"라 불렀습니다. 비공유 아키텍처에 대한 스레드 및 I/O 관리를 위한 라이브러리는 [여기](https://github.com/romange/helio)에서 오픈소스로 제공됩니다.
멀티-키 작업에 대한 원자성 보장을 위해, Dragonfly의 트랜잭션 프레임워크를 개발하기 위해 저희는 최근 학계의 연구 발전을 활용했고 ["VLL: a lock manager redesign for main memory database systems”](https://www.cs.umd.edu/~abadi/papers/vldbj-vll.pdf) 논문을 채택했습니다. 비공유 아키텍처와 VLL의 선택은 우리가 뮤텍스나 스핀락을 사용하지 않고도 원자적 멀티-키 작업을 구성할 수 있게 했습니다.
이것은 저희의 PoC에 있어서 주요한 마일스톤이었고, 그 성능은 다른 상용 및 오픈소스 솔루션보다 성능이 뛰어났습니다.
이것은 저희의 PoC에 있어서 주요한 마일스톤이었고, 그 성능은 다른 상용 및 오픈소스 솔루션보다 성능이 뛰어났습니다.
두 번째 문제는 새로운 저장소를 위하여 더 효율적인 데이터 구조를 설계하는 것이었습니다. 이 목표를 달성하기 위해서 저희는 핵심 해시테이블 구조를 ["Dash: Scalable Hashing on Persistent Memory"](https://arxiv.org/pdf/2003.07302.pdf) 논문을 기반으로 작업했습니다. 이 논문은 영속적인 메모리 도메인을 중심으로 다루며, 이는 메인-메모리 저장소와 직접적인 연관관계는 없었습니다. 하지만 여전히 저희 문제를 해결하기 위해서 가장 적합했습니다. 해당 논문의 제안된 해시테이블 설계는 저희가 레디스 딕셔너리에 표현된 두 가지 특별한 특성을 유지 가능하게 해줬습니다: 데이터스토어 확장 중 증분 해싱 기능과 상태 없는 스캔 작업을 사용하여 변화하는 딕셔너리를 순회하는 능력이었습니다. 이 두 가지 속성 외에도 Dash는 CPU와 메모리 사용에서 더 효율적입니다. 저희는 다음과 같은 기능들로 더욱 혁신할 수 있었습니다:
* TTL 레코드에 대한 효율적인 만료 처리

View file

@ -106,7 +106,18 @@ There are also some Dragonfly-specific arguments:
* `dbnum`: Maximum number of supported databases for `select`.
* `cache_mode`: See the [novel cache design](#novel-cache-design) section below.
* `hz`: Key expiry evaluation frequency (`default: 100`). Lower frequency uses less CPU when idle at the expense of a slower eviction rate.
* `save_schedule`: Glob spec for the UTC to save a snapshot in HH:MM (24h time) format (`default: ""`).
* `snapshot_cron`: Cron schedule expression for automatic backup snapshots using standard cron syntax with the granularity of minutes (`default: ""`).
Here are some cron schedule expression examples below, and feel free to read more about this argument in our [documentation](https://www.dragonflydb.io/docs/managing-dragonfly/backups#the-snapshot_cron-flag).
| Cron Schedule Expression | Description |
|--------------------------|--------------------------------------------|
| `* * * * *` | At every minute |
| `*/5 * * * *` | At every 5th minute |
| `5 */2 * * *` | At minute 5 past every 2nd hour |
| `0 0 * * *` | At 00:00 (midnight) every day |
| `0 6 * * 1-5` | At 06:00 (dawn) from Monday through Friday |
* `save_schedule`: Glob spec for the UTC to save a snapshot in HH:MM (24h time) format (`default: ""`). This argument is deprecated, and `snapshot_cron` should be preferred when available.
* `primary_port_http_enabled`: Allows accessing HTTP console on main TCP port if `true` (`default: true`).
* `admin_port`: To enable admin access to the console on the assigned port (`default: disabled`). Supports both HTTP and RESP protocols.
* `admin_bind`: To bind the admin console TCP connection to a given address (`default: any`). Supports both HTTP and RESP protocols.
@ -126,7 +137,7 @@ For more options like logs management or TLS support, run `dragonfly --help`.
## <a name="roadmap-status"><a/>Roadmap and status
Dragonfly currently supports ~185 Redis commands and all Memcache commands besides `cas`. Almost on par with the Redis 5 API, Dragonfly's next milestone will be to stabilize basic functionality and implement the replication API. If there is a command you need that is not implemented yet, please open an issue.
Dragonfly currently supports ~185 Redis commands and all Memcached commands besides `cas`. Almost on par with the Redis 5 API, Dragonfly's next milestone will be to stabilize basic functionality and implement the replication API. If there is a command you need that is not implemented yet, please open an issue.
For Dragonfly-native replication, we are designing a distributed log format that will support order-of-magnitude higher speeds.

View file

@ -90,38 +90,50 @@ Dragonfly 支持 Redis 的常见参数。
目前Dragonfly 支持以下 Redis 特定参数:
* `port`Redis 连接端口,默认为 6379。
* `port`Redis 连接端口,默认为 `6379`
* `bind`:使用本地主机名仅允许本地连接,使用公共 IP 地址允许外部连接到**该 IP 地址**。
* `requirepass`AUTH 认证密码,默认为空`""`。
* `maxmemory`:限制数据库使用的最大内存(以字节为单位)。0 表示程序将自动确定其最大内存使用量。默认为 0
* `dir`默认情况下dragonfly docker 使用 `/data` 文件夹进行快照。CLI 使用的是 ""。你可以使用 `-v` docker 选项将其映射到主机文件夹。
* `dbfilename`:保存/加载数据库的文件名。默认为 "dump"
* `requirepass`AUTH 认证密码,默认为空 `""`
* `maxmemory`:限制数据库使用的最大内存(以字节为单位)。`0` 表示程序将自动确定其最大内存使用量。默认为 `0`
* `dir`默认情况下dragonfly docker 使用 `/data` 文件夹进行快照。CLI 使用的是 `""`。你可以使用 `-v` docker 选项将其映射到主机文件夹。
* `dbfilename`:保存/加载数据库的文件名。默认为 `dump`
此外,还有 Dragonfly 特定的参数选项:
* `memcached_port`:在此端口上启用 memcached 兼容的 API。默认禁用。
* `keys_output_limit`:在`keys` 命令中返回的最大键数。默认为 8192。
* `keys_output_limit`:在`keys` 命令中返回的最大键数。默认为 `8192`
`keys` 命令是危险命令。我们会截断结果以避免在获取太多key时内存溢出。
`keys` 命令是危险命令。我们会截断结果以避免在获取太多时内存溢出。
* `dbnum``select` 支持的最大数据库数。
* `cache_mode`:请参见下面的 [缓存](#全新的缓存设计) 部分。
* `hz`:键到期评估频率。默认为 100。空闲时使用较低的频率可以占用较少的 CPU资源但这会导致清理过期键的速度下降。
* `hz`:键到期评估频率。默认为 `100`。空闲时,使用较低的频率可以占用较少的 CPU资源但这会导致清理过期键的速度下降。
* `save_schedule`以UTC 时间规范保存快照,格式: HH:MM24 小时制时间)。默认为空`""`
* `snapshot_cron`:定时自动备份快照的 cron 表达式,使用标准的、精确到分钟的 cron 语法。默认为空 `""`
* `primary_port_http_enabled`:如果为 true则允许在主 TCP 端口上访问 http 控制台。默认为 true。
下面是一些 cron 表达式的示例,更多关于此参数的细节请参见[文档](https://www.dragonflydb.io/docs/managing-dragonfly/backups#the-snapshot_cron-flag)。
| Cron 表达式 | 描述 |
|---------------|----------------------------------|
| `* * * * *` | 每分钟 |
| `*/5 * * * *` | 每隔 5 分钟 (00:00, 00:05, 00:10...) |
| `5 */2 * * *` | 每隔 2 小时的第 5 分钟 |
| `0 0 * * *` | 每天的 00:00 午夜 |
| `0 6 * * 1-5` | 从星期一到星期五的每天 06:00 黎明 |
* `save_schedule`:以 UTC 时间规范保存快照,格式: HH:MM24 小时制时间)。默认为空 `""`。该参数被标记为弃用,新版本中推荐使用 `snapshot_cron` 参数替代。
* `primary_port_http_enabled`:如果为 true则允许在主 TCP 端口上访问 HTTP 控制台。默认为 `true`
* `admin_port`:如果设置,将在指定的端口上启用对控制台的管理访问。支持 HTTP 和 RESP 协议。默认禁用。
* `admin_bind`:如果设置,将管理控制台 TCP 连接绑定到给定地址。支持 HTTP 和 RESP 协议。默认为any。
* `admin_bind`:如果设置,将管理控制台 TCP 连接绑定到给定地址。支持 HTTP 和 RESP 协议。默认为 `any`
* `admin_nopass`: 如果设置,允许在不提供任何认证令牌的情况下,通过指定的端口访问管理控制台。同时支持 HTTP 和 RESP 协议。 默认为 false。
* `admin_nopass`: 如果设置,允许在不提供任何认证令牌的情况下,通过指定的端口访问管理控制台。同时支持 HTTP 和 RESP 协议。 默认为 `false`
* `cluster_mode`:支持集群模式。目前仅支持 `emulated`。默认为空`""`。
* `cluster_mode`:支持集群模式。目前仅支持 `emulated`。默认为空 `""`
* `cluster_announce_ip`:集群模式下向客户端公开的 IP。
@ -131,11 +143,11 @@ Dragonfly 支持 Redis 的常见参数。
./dragonfly-x86_64 --logtostderr --requirepass=youshallnotpass --cache_mode=true -dbnum 1 --bind localhost --port 6379 --save_schedule "*:30" --maxmemory=12gb --keys_output_limit=12288 --dbfilename dump.rdb
```
要获取更多选项如日志管理或TLS支持请运行`dragonfly --help`。
要获取更多选项如日志管理或TLS支持请运行 `dragonfly --help`
## <a name="开发路线和开发现状"><a/>开发路线和开发现状
目前Dragonfly支持约185个Redis命令以及除`cas`之外的所有memcache命令。
目前Dragonfly支持约185个Redis命令以及除 `cas` 之外的所有 Memcached 命令。
我们几乎达到了Redis 5 API的水平。我们的下一个里程碑更新将会稳定基本功能并实现复刻API。
如果您发现您需要的命令尚未实现请提出一个Issue。
@ -150,7 +162,7 @@ Dragonfly 支持 Redis 的常见参数。
### 全新的缓存设计
Dragonfly采用单一的自适应缓存算法该算法非常简单且具备高内存效率。
你可以通过使用`--cache_mode=true`参数来启用缓存模式。一旦启用了此模式Dragonfly将会删除最低概率可能被使用的内容但这只会在接近最大内存限制时发生。
你可以通过使用 `--cache_mode=true` 参数来启用缓存模式。一旦启用了此模式Dragonfly将会删除最低概率可能被使用的内容但这只会在接近最大内存限制时发生。
### 相对准确的过期期限