From 33d4ce89025af3b4576375f75e58af2135866380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=91=9E=E6=96=8C?= Date: Tue, 28 May 2024 22:15:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0MeterSphere=20(#1478)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/metersphere/3.0.0-beta/data.yml | 10 + .../metersphere/3.0.0-beta/docker-compose.yml | 22 + .../mount/conf/kafka/config/server.properties | 34 + .../mount/conf/metersphere.properties | 14 + .../3.0.0-beta/mount/conf/mysql/my.cnf | 35 + .../3.0.0-beta/mount/conf/redis/redis.conf | 2051 +++++++++++++++++ .../3.0.0-beta/mount/conf/redisson.yml | 6 + .../3.0.0-beta/mount/data/.gitkeep | 0 .../3.0.0-beta/mount/logs/.gitkeep | 0 apps/metersphere/3.0.0-beta/scripts/init.sh | 4 + apps/metersphere/README.md | 10 + apps/metersphere/data.yml | 20 + apps/metersphere/logo.png | Bin 0 -> 106910 bytes 13 files changed, 2206 insertions(+) create mode 100644 apps/metersphere/3.0.0-beta/data.yml create mode 100644 apps/metersphere/3.0.0-beta/docker-compose.yml create mode 100755 apps/metersphere/3.0.0-beta/mount/conf/kafka/config/server.properties create mode 100755 apps/metersphere/3.0.0-beta/mount/conf/metersphere.properties create mode 100755 apps/metersphere/3.0.0-beta/mount/conf/mysql/my.cnf create mode 100755 apps/metersphere/3.0.0-beta/mount/conf/redis/redis.conf create mode 100755 apps/metersphere/3.0.0-beta/mount/conf/redisson.yml create mode 100644 apps/metersphere/3.0.0-beta/mount/data/.gitkeep create mode 100644 apps/metersphere/3.0.0-beta/mount/logs/.gitkeep create mode 100644 apps/metersphere/3.0.0-beta/scripts/init.sh create mode 100644 apps/metersphere/README.md create mode 100644 apps/metersphere/data.yml create mode 100644 apps/metersphere/logo.png diff --git a/apps/metersphere/3.0.0-beta/data.yml b/apps/metersphere/3.0.0-beta/data.yml new file mode 100644 index 00000000..fb2a0f46 --- /dev/null +++ b/apps/metersphere/3.0.0-beta/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: 8081 + envKey: PANEL_APP_PORT_HTTP + labelEn: Web Port + labelZh: Web 端口 + required: true + rule: paramPort + type: number + diff --git a/apps/metersphere/3.0.0-beta/docker-compose.yml b/apps/metersphere/3.0.0-beta/docker-compose.yml new file mode 100644 index 00000000..f97dc523 --- /dev/null +++ b/apps/metersphere/3.0.0-beta/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3' +services: + metersphere: + image: metersphere/metersphere-ce-allinone:v3.0.0-beta + container_name: ${CONTAINER_NAME} + privileged: true + restart: always + labels: + createdBy: "Apps" + environment: + JAVA_MAX_HEAP_RATIO: 15 + ports: + - ${PANEL_APP_PORT_HTTP}:8081 + volumes: + - ./mount/logs:/opt/metersphere/logs + - ./mount/data:/opt/metersphere/data + - ./mount/conf:/opt/metersphere/conf + networks: + - 1panel-network +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/metersphere/3.0.0-beta/mount/conf/kafka/config/server.properties b/apps/metersphere/3.0.0-beta/mount/conf/kafka/config/server.properties new file mode 100755 index 00000000..ea389260 --- /dev/null +++ b/apps/metersphere/3.0.0-beta/mount/conf/kafka/config/server.properties @@ -0,0 +1,34 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# Set properties not provided in the file input +controller.quorum.voters=1@127.0.0.1:29093 +listeners=CONTROLLER://:29093,PLAINTEXT_HOST://:9092,PLAINTEXT://:19092 +node.id=1 +advertised.listeners=PLAINTEXT_HOST://127.0.0.1:9092,PLAINTEXT://broker:19092 +controller.listener.names=CONTROLLER +group.initial.rebalance.delay.ms=0 +inter.broker.listener.name=PLAINTEXT +listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT +log.dirs=/tmp/kraft-combined-logs +offsets.topic.replication.factor=1 +process.roles=broker,controller +transaction.state.log.min.isr=1 +transaction.state.log.replication.factor=1 +log.retention.ms=60000 +max.request.size=524288000 +message.max.bytes=524288000 +replica.fetch.max.bytes=524288000 +fetch.message.max_bytes=524288000 +partition.fetch.bytes=524288000 diff --git a/apps/metersphere/3.0.0-beta/mount/conf/metersphere.properties b/apps/metersphere/3.0.0-beta/mount/conf/metersphere.properties new file mode 100755 index 00000000..89e284e3 --- /dev/null +++ b/apps/metersphere/3.0.0-beta/mount/conf/metersphere.properties @@ -0,0 +1,14 @@ +logger.sql.level=info +management.endpoints.enabled-by-default=false +springdoc.api-docs.groups.enabled=true +spring.freemarker.check-template-location=false +spring.groovy.template.check-template-location=false + +spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&sessionVariables=sql_mode=%27STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION%27 +spring.datasource.username=root +spring.datasource.password=111111 +kafka.bootstrapServers=127.0.0.1:9092 +spring.session.timeout=30d +minio.endpoint=http://127.0.0.1:9000 +minio.accessKey=minioadmin +minio.secretKey=minioadmin \ No newline at end of file diff --git a/apps/metersphere/3.0.0-beta/mount/conf/mysql/my.cnf b/apps/metersphere/3.0.0-beta/mount/conf/mysql/my.cnf new file mode 100755 index 00000000..5616a980 --- /dev/null +++ b/apps/metersphere/3.0.0-beta/mount/conf/mysql/my.cnf @@ -0,0 +1,35 @@ +[mysqld] +datadir=/opt/metersphere/data/mysql + +default-storage-engine=INNODB +character_set_server=utf8mb4 +lower_case_table_names=1 +performance_schema=off +table_open_cache=128 +transaction_isolation=READ-COMMITTED +max_connections=1000 +max_connect_errors=6000 +max_allowed_packet=64M +innodb_file_per_table=1 +innodb_buffer_pool_size=256M +innodb_lock_wait_timeout=1800 + +server-id=1 +log-bin=mysql-bin +expire_logs_days = 2 +binlog_format=mixed + +character-set-client-handshake = FALSE +character-set-server=utf8mb4 +collation-server=utf8mb4_general_ci +init_connect='SET default_collation_for_utf8mb4=utf8mb4_general_ci' + +sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION + +skip-name-resolve + +[mysql] +default-character-set=utf8mb4 + +[mysql.server] +default-character-set=utf8mb4 \ No newline at end of file diff --git a/apps/metersphere/3.0.0-beta/mount/conf/redis/redis.conf b/apps/metersphere/3.0.0-beta/mount/conf/redis/redis.conf new file mode 100755 index 00000000..2744c68c --- /dev/null +++ b/apps/metersphere/3.0.0-beta/mount/conf/redis/redis.conf @@ -0,0 +1,2051 @@ +# Redis configuration file example. +# +# Note that in order to read the configuration file, Redis must be +# started with the file path as first argument: +# +# ./redis-server /path/to/redis.conf + +# Note on units: when memory size is needed, it is possible to specify +# it in the usual form of 1k 5GB 4M and so forth: +# +# 1k => 1000 bytes +# 1kb => 1024 bytes +# 1m => 1000000 bytes +# 1mb => 1024*1024 bytes +# 1g => 1000000000 bytes +# 1gb => 1024*1024*1024 bytes +# +# units are case insensitive so 1GB 1Gb 1gB are all the same. + +################################## INCLUDES ################################### + +# Include one or more other config files here. This is useful if you +# have a standard template that goes to all Redis servers but also need +# to customize a few per-server settings. Include files can include +# other files, so use this wisely. +# +# Note that option "include" won't be rewritten by command "CONFIG REWRITE" +# from admin or Redis Sentinel. Since Redis always uses the last processed +# line as value of a configuration directive, you'd better put includes +# at the beginning of this file to avoid overwriting config change at runtime. +# +# If instead you are interested in using includes to override configuration +# options, it is better to use include as the last line. +# +# include /path/to/local.conf +# include /path/to/other.conf + +################################## MODULES ##################################### + +# Load modules at startup. If the server is not able to load modules +# it will abort. It is possible to use multiple loadmodule directives. +# +# loadmodule /path/to/my_module.so +# loadmodule /path/to/other_module.so + +################################## NETWORK ##################################### + +# By default, if no "bind" configuration directive is specified, Redis listens +# for connections from all available network interfaces on the host machine. +# It is possible to listen to just one or multiple selected interfaces using +# the "bind" configuration directive, followed by one or more IP addresses. +# Each address can be prefixed by "-", which means that redis will not fail to +# start if the address is not available. Being not available only refers to +# addresses that does not correspond to any network interfece. Addresses that +# are already in use will always fail, and unsupported protocols will always BE +# silently skipped. +# +# Examples: +# +# bind 192.168.1.100 10.0.0.1 # listens on two specific IPv4 addresses +# bind 127.0.0.1 ::1 # listens on loopback IPv4 and IPv6 +# bind * -::* # like the default, all available interfaces +# +# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the +# internet, binding to all the interfaces is dangerous and will expose the +# instance to everybody on the internet. So by default we uncomment the +# following bind directive, that will force Redis to listen only on the +# IPv4 and IPv6 (if available) loopback interface addresses (this means Redis +# will only be able to accept client connections from the same host that it is +# running on). +# +# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES +# JUST COMMENT OUT THE FOLLOWING LINE. +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +bind 0.0.0.0 + +# Protected mode is a layer of security protection, in order to avoid that +# Redis instances left open on the internet are accessed and exploited. +# +# When protected mode is on and if: +# +# 1) The server is not binding explicitly to a set of addresses using the +# "bind" directive. +# 2) No password is configured. +# +# The server only accepts connections from clients connecting from the +# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain +# sockets. +# +# By default protected mode is enabled. You should disable it only if +# you are sure you want clients from other hosts to connect to Redis +# even if no authentication is configured, nor a specific set of interfaces +# are explicitly listed using the "bind" directive. +protected-mode yes + +# Accept connections on the specified port, default is 6379 (IANA #815344). +# If port 0 is specified Redis will not listen on a TCP socket. +port 6379 + +# TCP listen() backlog. +# +# In high requests-per-second environments you need a high backlog in order +# to avoid slow clients connection issues. Note that the Linux kernel +# will silently truncate it to the value of /proc/sys/net/core/somaxconn so +# make sure to raise both the value of somaxconn and tcp_max_syn_backlog +# in order to get the desired effect. +tcp-backlog 511 + +# Unix socket. +# +# Specify the path for the Unix socket that will be used to listen for +# incoming connections. There is no default, so Redis will not listen +# on a unix socket when not specified. +# +# unixsocket /run/redis.sock +# unixsocketperm 700 + +# Close the connection after a client is idle for N seconds (0 to disable) +timeout 0 + +# TCP keepalive. +# +# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence +# of communication. This is useful for two reasons: +# +# 1) Detect dead peers. +# 2) Force network equipment in the middle to consider the connection to be +# alive. +# +# On Linux, the specified value (in seconds) is the period used to send ACKs. +# Note that to close the connection the double of the time is needed. +# On other kernels the period depends on the kernel configuration. +# +# A reasonable value for this option is 300 seconds, which is the new +# Redis default starting with Redis 3.2.1. +tcp-keepalive 300 + +################################# TLS/SSL ##################################### + +# By default, TLS/SSL is disabled. To enable it, the "tls-port" configuration +# directive can be used to define TLS-listening ports. To enable TLS on the +# default port, use: +# +# port 0 +# tls-port 6379 + +# Configure a X.509 certificate and private key to use for authenticating the +# server to connected clients, masters or cluster peers. These files should be +# PEM formatted. +# +# tls-cert-file redis.crt +# tls-key-file redis.key +# +# If the key file is encrypted using a passphrase, it can be included here +# as well. +# +# tls-key-file-pass secret + +# Normally Redis uses the same certificate for both server functions (accepting +# connections) and client functions (replicating from a master, establishing +# cluster bus connections, etc.). +# +# Sometimes certificates are issued with attributes that designate them as +# client-only or server-only certificates. In that case it may be desired to use +# different certificates for incoming (server) and outgoing (client) +# connections. To do that, use the following directives: +# +# tls-client-cert-file client.crt +# tls-client-key-file client.key +# +# If the key file is encrypted using a passphrase, it can be included here +# as well. +# +# tls-client-key-file-pass secret + +# Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange: +# +# tls-dh-params-file redis.dh + +# Configure a CA certificate(s) bundle or directory to authenticate TLS/SSL +# clients and peers. Redis requires an explicit configuration of at least one +# of these, and will not implicitly use the system wide configuration. +# +# tls-ca-cert-file ca.crt +# tls-ca-cert-dir /etc/ssl/certs + +# By default, clients (including replica servers) on a TLS port are required +# to authenticate using valid client side certificates. +# +# If "no" is specified, client certificates are not required and not accepted. +# If "optional" is specified, client certificates are accepted and must be +# valid if provided, but are not required. +# +# tls-auth-clients no +# tls-auth-clients optional + +# By default, a Redis replica does not attempt to establish a TLS connection +# with its master. +# +# Use the following directive to enable TLS on replication links. +# +# tls-replication yes + +# By default, the Redis Cluster bus uses a plain TCP connection. To enable +# TLS for the bus protocol, use the following directive: +# +# tls-cluster yes + +# By default, only TLSv1.2 and TLSv1.3 are enabled and it is highly recommended +# that older formally deprecated versions are kept disabled to reduce the attack surface. +# You can explicitly specify TLS versions to support. +# Allowed values are case insensitive and include "TLSv1", "TLSv1.1", "TLSv1.2", +# "TLSv1.3" (OpenSSL >= 1.1.1) or any combination. +# To enable only TLSv1.2 and TLSv1.3, use: +# +# tls-protocols "TLSv1.2 TLSv1.3" + +# Configure allowed ciphers. See the ciphers(1ssl) manpage for more information +# about the syntax of this string. +# +# Note: this configuration applies only to <= TLSv1.2. +# +# tls-ciphers DEFAULT:!MEDIUM + +# Configure allowed TLSv1.3 ciphersuites. See the ciphers(1ssl) manpage for more +# information about the syntax of this string, and specifically for TLSv1.3 +# ciphersuites. +# +# tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256 + +# When choosing a cipher, use the server's preference instead of the client +# preference. By default, the server follows the client's preference. +# +# tls-prefer-server-ciphers yes + +# By default, TLS session caching is enabled to allow faster and less expensive +# reconnections by clients that support it. Use the following directive to disable +# caching. +# +# tls-session-caching no + +# Change the default number of TLS sessions cached. A zero value sets the cache +# to unlimited size. The default size is 20480. +# +# tls-session-cache-size 5000 + +# Change the default timeout of cached TLS sessions. The default timeout is 300 +# seconds. +# +# tls-session-cache-timeout 60 + +################################# GENERAL ##################################### + +# By default Redis does not run as a daemon. Use 'yes' if you need it. +# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. +# When Redis is supervised by upstart or systemd, this parameter has no impact. +daemonize no + +# If you run Redis from upstart or systemd, Redis can interact with your +# supervision tree. Options: +# supervised no - no supervision interaction +# supervised upstart - signal upstart by putting Redis into SIGSTOP mode +# requires "expect stop" in your upstart job config +# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET +# on startup, and updating Redis status on a regular +# basis. +# supervised auto - detect upstart or systemd method based on +# UPSTART_JOB or NOTIFY_SOCKET environment variables +# Note: these supervision methods only signal "process is ready." +# They do not enable continuous pings back to your supervisor. +# +# The default is "no". To run under upstart/systemd, you can simply uncomment +# the line below: +# +# supervised auto + +# If a pid file is specified, Redis writes it where specified at startup +# and removes it at exit. +# +# When the server runs non daemonized, no pid file is created if none is +# specified in the configuration. When the server is daemonized, the pid file +# is used even if not specified, defaulting to "/var/run/redis.pid". +# +# Creating a pid file is best effort: if Redis is not able to create it +# nothing bad happens, the server will start and run normally. +# +# Note that on modern Linux systems "/run/redis.pid" is more conforming +# and should be used instead. +pidfile /var/run/redis_6379.pid + +# Specify the server verbosity level. +# This can be one of: +# debug (a lot of information, useful for development/testing) +# verbose (many rarely useful info, but not a mess like the debug level) +# notice (moderately verbose, what you want in production probably) +# warning (only very important / critical messages are logged) +loglevel notice + +# Specify the log file name. Also the empty string can be used to force +# Redis to log on the standard output. Note that if you use standard +# output for logging but daemonize, logs will be sent to /dev/null +logfile "" + +# To enable logging to the system logger, just set 'syslog-enabled' to yes, +# and optionally update the other syslog parameters to suit your needs. +# syslog-enabled no + +# Specify the syslog identity. +# syslog-ident redis + +# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. +# syslog-facility local0 + +# To disable the built in crash log, which will possibly produce cleaner core +# dumps when they are needed, uncomment the following: +# +# crash-log-enabled no + +# To disable the fast memory check that's run as part of the crash log, which +# will possibly let redis terminate sooner, uncomment the following: +# +# crash-memcheck-enabled no + +# Set the number of databases. The default database is DB 0, you can select +# a different one on a per-connection basis using SELECT where +# dbid is a number between 0 and 'databases'-1 +databases 16 + +# By default Redis shows an ASCII art logo only when started to log to the +# standard output and if the standard output is a TTY and syslog logging is +# disabled. Basically this means that normally a logo is displayed only in +# interactive sessions. +# +# However it is possible to force the pre-4.0 behavior and always show a +# ASCII art logo in startup logs by setting the following option to yes. +always-show-logo no + +# By default, Redis modifies the process title (as seen in 'top' and 'ps') to +# provide some runtime information. It is possible to disable this and leave +# the process name as executed by setting the following to no. +set-proc-title yes + +# When changing the process title, Redis uses the following template to construct +# the modified title. +# +# Template variables are specified in curly brackets. The following variables are +# supported: +# +# {title} Name of process as executed if parent, or type of child process. +# {listen-addr} Bind address or '*' followed by TCP or TLS port listening on, or +# Unix socket if only that's available. +# {server-mode} Special mode, i.e. "[sentinel]" or "[cluster]". +# {port} TCP port listening on, or 0. +# {tls-port} TLS port listening on, or 0. +# {unixsocket} Unix domain socket listening on, or "". +# {config-file} Name of configuration file used. +# +proc-title-template "{title} {listen-addr} {server-mode}" + +################################ SNAPSHOTTING ################################ + +# Save the DB to disk. +# +# save +# +# Redis will save the DB if both the given number of seconds and the given +# number of write operations against the DB occurred. +# +# Snapshotting can be completely disabled with a single empty string argument +# as in following example: +# +# save "" +# +# Unless specified otherwise, by default Redis will save the DB: +# * After 3600 seconds (an hour) if at least 1 key changed +# * After 300 seconds (5 minutes) if at least 100 keys changed +# * After 60 seconds if at least 10000 keys changed +# +# You can set these explicitly by uncommenting the three following lines. +# +# save 3600 1 +# save 300 100 +# save 60 10000 + +# By default Redis will stop accepting writes if RDB snapshots are enabled +# (at least one save point) and the latest background save failed. +# This will make the user aware (in a hard way) that data is not persisting +# on disk properly, otherwise chances are that no one will notice and some +# disaster will happen. +# +# If the background saving process will start working again Redis will +# automatically allow writes again. +# +# However if you have setup your proper monitoring of the Redis server +# and persistence, you may want to disable this feature so that Redis will +# continue to work as usual even if there are problems with disk, +# permissions, and so forth. +stop-writes-on-bgsave-error yes + +# Compress string objects using LZF when dump .rdb databases? +# By default compression is enabled as it's almost always a win. +# If you want to save some CPU in the saving child set it to 'no' but +# the dataset will likely be bigger if you have compressible values or keys. +rdbcompression yes + +# Since version 5 of RDB a CRC64 checksum is placed at the end of the file. +# This makes the format more resistant to corruption but there is a performance +# hit to pay (around 10%) when saving and loading RDB files, so you can disable it +# for maximum performances. +# +# RDB files created with checksum disabled have a checksum of zero that will +# tell the loading code to skip the check. +rdbchecksum yes + +# Enables or disables full sanitation checks for ziplist and listpack etc when +# loading an RDB or RESTORE payload. This reduces the chances of a assertion or +# crash later on while processing commands. +# Options: +# no - Never perform full sanitation +# yes - Always perform full sanitation +# clients - Perform full sanitation only for user connections. +# Excludes: RDB files, RESTORE commands received from the master +# connection, and client connections which have the +# skip-sanitize-payload ACL flag. +# The default should be 'clients' but since it currently affects cluster +# resharding via MIGRATE, it is temporarily set to 'no' by default. +# +# sanitize-dump-payload no + +# The filename where to dump the DB +dbfilename dump.rdb + +# Remove RDB files used by replication in instances without persistence +# enabled. By default this option is disabled, however there are environments +# where for regulations or other security concerns, RDB files persisted on +# disk by masters in order to feed replicas, or stored on disk by replicas +# in order to load them for the initial synchronization, should be deleted +# ASAP. Note that this option ONLY WORKS in instances that have both AOF +# and RDB persistence disabled, otherwise is completely ignored. +# +# An alternative (and sometimes better) way to obtain the same effect is +# to use diskless replication on both master and replicas instances. However +# in the case of replicas, diskless is not always an option. +rdb-del-sync-files no + +# The working directory. +# +# The DB will be written inside this directory, with the filename specified +# above using the 'dbfilename' configuration directive. +# +# The Append Only File will also be created inside this directory. +# +# Note that you must specify a directory here, not a file name. +dir /opt/metersphere/data/redis + +################################# REPLICATION ################################# + +# Master-Replica replication. Use replicaof to make a Redis instance a copy of +# another Redis server. A few things to understand ASAP about Redis replication. +# +# +------------------+ +---------------+ +# | Master | ---> | Replica | +# | (receive writes) | | (exact copy) | +# +------------------+ +---------------+ +# +# 1) Redis replication is asynchronous, but you can configure a master to +# stop accepting writes if it appears to be not connected with at least +# a given number of replicas. +# 2) Redis replicas are able to perform a partial resynchronization with the +# master if the replication link is lost for a relatively small amount of +# time. You may want to configure the replication backlog size (see the next +# sections of this file) with a sensible value depending on your needs. +# 3) Replication is automatic and does not need user intervention. After a +# network partition replicas automatically try to reconnect to masters +# and resynchronize with them. +# +# replicaof + +# If the master is password protected (using the "requirepass" configuration +# directive below) it is possible to tell the replica to authenticate before +# starting the replication synchronization process, otherwise the master will +# refuse the replica request. +# +# masterauth +# +# However this is not enough if you are using Redis ACLs (for Redis version +# 6 or greater), and the default user is not capable of running the PSYNC +# command and/or other commands needed for replication. In this case it's +# better to configure a special user to use with replication, and specify the +# masteruser configuration as such: +# +# masteruser +# +# When masteruser is specified, the replica will authenticate against its +# master using the new AUTH form: AUTH . + +# When a replica loses its connection with the master, or when the replication +# is still in progress, the replica can act in two different ways: +# +# 1) if replica-serve-stale-data is set to 'yes' (the default) the replica will +# still reply to client requests, possibly with out of date data, or the +# data set may just be empty if this is the first synchronization. +# +# 2) If replica-serve-stale-data is set to 'no' the replica will reply with +# an error "SYNC with master in progress" to all commands except: +# INFO, REPLICAOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE, +# UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST, +# HOST and LATENCY. +# +replica-serve-stale-data yes + +# You can configure a replica instance to accept writes or not. Writing against +# a replica instance may be useful to store some ephemeral data (because data +# written on a replica will be easily deleted after resync with the master) but +# may also cause problems if clients are writing to it because of a +# misconfiguration. +# +# Since Redis 2.6 by default replicas are read-only. +# +# Note: read only replicas are not designed to be exposed to untrusted clients +# on the internet. It's just a protection layer against misuse of the instance. +# Still a read only replica exports by default all the administrative commands +# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve +# security of read only replicas using 'rename-command' to shadow all the +# administrative / dangerous commands. +replica-read-only yes + +# Replication SYNC strategy: disk or socket. +# +# New replicas and reconnecting replicas that are not able to continue the +# replication process just receiving differences, need to do what is called a +# "full synchronization". An RDB file is transmitted from the master to the +# replicas. +# +# The transmission can happen in two different ways: +# +# 1) Disk-backed: The Redis master creates a new process that writes the RDB +# file on disk. Later the file is transferred by the parent +# process to the replicas incrementally. +# 2) Diskless: The Redis master creates a new process that directly writes the +# RDB file to replica sockets, without touching the disk at all. +# +# With disk-backed replication, while the RDB file is generated, more replicas +# can be queued and served with the RDB file as soon as the current child +# producing the RDB file finishes its work. With diskless replication instead +# once the transfer starts, new replicas arriving will be queued and a new +# transfer will start when the current one terminates. +# +# When diskless replication is used, the master waits a configurable amount of +# time (in seconds) before starting the transfer in the hope that multiple +# replicas will arrive and the transfer can be parallelized. +# +# With slow disks and fast (large bandwidth) networks, diskless replication +# works better. +repl-diskless-sync no + +# When diskless replication is enabled, it is possible to configure the delay +# the server waits in order to spawn the child that transfers the RDB via socket +# to the replicas. +# +# This is important since once the transfer starts, it is not possible to serve +# new replicas arriving, that will be queued for the next RDB transfer, so the +# server waits a delay in order to let more replicas arrive. +# +# The delay is specified in seconds, and by default is 5 seconds. To disable +# it entirely just set it to 0 seconds and the transfer will start ASAP. +repl-diskless-sync-delay 5 + +# ----------------------------------------------------------------------------- +# WARNING: RDB diskless load is experimental. Since in this setup the replica +# does not immediately store an RDB on disk, it may cause data loss during +# failovers. RDB diskless load + Redis modules not handling I/O reads may also +# cause Redis to abort in case of I/O errors during the initial synchronization +# stage with the master. Use only if you know what you are doing. +# ----------------------------------------------------------------------------- +# +# Replica can load the RDB it reads from the replication link directly from the +# socket, or store the RDB to a file and read that file after it was completely +# received from the master. +# +# In many cases the disk is slower than the network, and storing and loading +# the RDB file may increase replication time (and even increase the master's +# Copy on Write memory and salve buffers). +# However, parsing the RDB file directly from the socket may mean that we have +# to flush the contents of the current database before the full rdb was +# received. For this reason we have the following options: +# +# "disabled" - Don't use diskless load (store the rdb file to the disk first) +# "on-empty-db" - Use diskless load only when it is completely safe. +# "swapdb" - Keep a copy of the current db contents in RAM while parsing +# the data directly from the socket. note that this requires +# sufficient memory, if you don't have it, you risk an OOM kill. +repl-diskless-load disabled + +# Replicas send PINGs to server in a predefined interval. It's possible to +# change this interval with the repl_ping_replica_period option. The default +# value is 10 seconds. +# +# repl-ping-replica-period 10 + +# The following option sets the replication timeout for: +# +# 1) Bulk transfer I/O during SYNC, from the point of view of replica. +# 2) Master timeout from the point of view of replicas (data, pings). +# 3) Replica timeout from the point of view of masters (REPLCONF ACK pings). +# +# It is important to make sure that this value is greater than the value +# specified for repl-ping-replica-period otherwise a timeout will be detected +# every time there is low traffic between the master and the replica. The default +# value is 60 seconds. +# +# repl-timeout 60 + +# Disable TCP_NODELAY on the replica socket after SYNC? +# +# If you select "yes" Redis will use a smaller number of TCP packets and +# less bandwidth to send data to replicas. But this can add a delay for +# the data to appear on the replica side, up to 40 milliseconds with +# Linux kernels using a default configuration. +# +# If you select "no" the delay for data to appear on the replica side will +# be reduced but more bandwidth will be used for replication. +# +# By default we optimize for low latency, but in very high traffic conditions +# or when the master and replicas are many hops away, turning this to "yes" may +# be a good idea. +repl-disable-tcp-nodelay no + +# Set the replication backlog size. The backlog is a buffer that accumulates +# replica data when replicas are disconnected for some time, so that when a +# replica wants to reconnect again, often a full resync is not needed, but a +# partial resync is enough, just passing the portion of data the replica +# missed while disconnected. +# +# The bigger the replication backlog, the longer the replica can endure the +# disconnect and later be able to perform a partial resynchronization. +# +# The backlog is only allocated if there is at least one replica connected. +# +# repl-backlog-size 1mb + +# After a master has no connected replicas for some time, the backlog will be +# freed. The following option configures the amount of seconds that need to +# elapse, starting from the time the last replica disconnected, for the backlog +# buffer to be freed. +# +# Note that replicas never free the backlog for timeout, since they may be +# promoted to masters later, and should be able to correctly "partially +# resynchronize" with other replicas: hence they should always accumulate backlog. +# +# A value of 0 means to never release the backlog. +# +# repl-backlog-ttl 3600 + +# The replica priority is an integer number published by Redis in the INFO +# output. It is used by Redis Sentinel in order to select a replica to promote +# into a master if the master is no longer working correctly. +# +# A replica with a low priority number is considered better for promotion, so +# for instance if there are three replicas with priority 10, 100, 25 Sentinel +# will pick the one with priority 10, that is the lowest. +# +# However a special priority of 0 marks the replica as not able to perform the +# role of master, so a replica with priority of 0 will never be selected by +# Redis Sentinel for promotion. +# +# By default the priority is 100. +replica-priority 100 + +# ----------------------------------------------------------------------------- +# By default, Redis Sentinel includes all replicas in its reports. A replica +# can be excluded from Redis Sentinel's announcements. An unannounced replica +# will be ignored by the 'sentinel replicas ' command and won't be +# exposed to Redis Sentinel's clients. +# +# This option does not change the behavior of replica-priority. Even with +# replica-announced set to 'no', the replica can be promoted to master. To +# prevent this behavior, set replica-priority to 0. +# +# replica-announced yes + +# It is possible for a master to stop accepting writes if there are less than +# N replicas connected, having a lag less or equal than M seconds. +# +# The N replicas need to be in "online" state. +# +# The lag in seconds, that must be <= the specified value, is calculated from +# the last ping received from the replica, that is usually sent every second. +# +# This option does not GUARANTEE that N replicas will accept the write, but +# will limit the window of exposure for lost writes in case not enough replicas +# are available, to the specified number of seconds. +# +# For example to require at least 3 replicas with a lag <= 10 seconds use: +# +# min-replicas-to-write 3 +# min-replicas-max-lag 10 +# +# Setting one or the other to 0 disables the feature. +# +# By default min-replicas-to-write is set to 0 (feature disabled) and +# min-replicas-max-lag is set to 10. + +# A Redis master is able to list the address and port of the attached +# replicas in different ways. For example the "INFO replication" section +# offers this information, which is used, among other tools, by +# Redis Sentinel in order to discover replica instances. +# Another place where this info is available is in the output of the +# "ROLE" command of a master. +# +# The listed IP address and port normally reported by a replica is +# obtained in the following way: +# +# IP: The address is auto detected by checking the peer address +# of the socket used by the replica to connect with the master. +# +# Port: The port is communicated by the replica during the replication +# handshake, and is normally the port that the replica is using to +# listen for connections. +# +# However when port forwarding or Network Address Translation (NAT) is +# used, the replica may actually be reachable via different IP and port +# pairs. The following two options can be used by a replica in order to +# report to its master a specific set of IP and port, so that both INFO +# and ROLE will report those values. +# +# There is no need to use both the options if you need to override just +# the port or the IP address. +# +# replica-announce-ip 5.5.5.5 +# replica-announce-port 1234 + +############################### KEYS TRACKING ################################# + +# Redis implements server assisted support for client side caching of values. +# This is implemented using an invalidation table that remembers, using +# a radix key indexed by key name, what clients have which keys. In turn +# this is used in order to send invalidation messages to clients. Please +# check this page to understand more about the feature: +# +# https://redis.io/topics/client-side-caching +# +# When tracking is enabled for a client, all the read only queries are assumed +# to be cached: this will force Redis to store information in the invalidation +# table. When keys are modified, such information is flushed away, and +# invalidation messages are sent to the clients. However if the workload is +# heavily dominated by reads, Redis could use more and more memory in order +# to track the keys fetched by many clients. +# +# For this reason it is possible to configure a maximum fill value for the +# invalidation table. By default it is set to 1M of keys, and once this limit +# is reached, Redis will start to evict keys in the invalidation table +# even if they were not modified, just to reclaim memory: this will in turn +# force the clients to invalidate the cached values. Basically the table +# maximum size is a trade off between the memory you want to spend server +# side to track information about who cached what, and the ability of clients +# to retain cached objects in memory. +# +# If you set the value to 0, it means there are no limits, and Redis will +# retain as many keys as needed in the invalidation table. +# In the "stats" INFO section, you can find information about the number of +# keys in the invalidation table at every given moment. +# +# Note: when key tracking is used in broadcasting mode, no memory is used +# in the server side so this setting is useless. +# +# tracking-table-max-keys 1000000 + +################################## SECURITY ################################### + +# Warning: since Redis is pretty fast, an outside user can try up to +# 1 million passwords per second against a modern box. This means that you +# should use very strong passwords, otherwise they will be very easy to break. +# Note that because the password is really a shared secret between the client +# and the server, and should not be memorized by any human, the password +# can be easily a long string from /dev/urandom or whatever, so by using a +# long and unguessable password no brute force attack will be possible. + +# Redis ACL users are defined in the following format: +# +# user ... acl rules ... +# +# For example: +# +# user worker +@list +@connection ~jobs:* on >ffa9203c493aa99 +# +# The special username "default" is used for new connections. If this user +# has the "nopass" rule, then new connections will be immediately authenticated +# as the "default" user without the need of any password provided via the +# AUTH command. Otherwise if the "default" user is not flagged with "nopass" +# the connections will start in not authenticated state, and will require +# AUTH (or the HELLO command AUTH option) in order to be authenticated and +# start to work. +# +# The ACL rules that describe what a user can do are the following: +# +# on Enable the user: it is possible to authenticate as this user. +# off Disable the user: it's no longer possible to authenticate +# with this user, however the already authenticated connections +# will still work. +# skip-sanitize-payload RESTORE dump-payload sanitation is skipped. +# sanitize-payload RESTORE dump-payload is sanitized (default). +# + Allow the execution of that command +# - Disallow the execution of that command +# +@ Allow the execution of all the commands in such category +# with valid categories are like @admin, @set, @sortedset, ... +# and so forth, see the full list in the server.c file where +# the Redis command table is described and defined. +# The special category @all means all the commands, but currently +# present in the server, and that will be loaded in the future +# via modules. +# +|subcommand Allow a specific subcommand of an otherwise +# disabled command. Note that this form is not +# allowed as negative like -DEBUG|SEGFAULT, but +# only additive starting with "+". +# allcommands Alias for +@all. Note that it implies the ability to execute +# all the future commands loaded via the modules system. +# nocommands Alias for -@all. +# ~ Add a pattern of keys that can be mentioned as part of +# commands. For instance ~* allows all the keys. The pattern +# is a glob-style pattern like the one of KEYS. +# It is possible to specify multiple patterns. +# allkeys Alias for ~* +# resetkeys Flush the list of allowed keys patterns. +# & Add a glob-style pattern of Pub/Sub channels that can be +# accessed by the user. It is possible to specify multiple channel +# patterns. +# allchannels Alias for &* +# resetchannels Flush the list of allowed channel patterns. +# > Add this password to the list of valid password for the user. +# For example >mypass will add "mypass" to the list. +# This directive clears the "nopass" flag (see later). +# < Remove this password from the list of valid passwords. +# nopass All the set passwords of the user are removed, and the user +# is flagged as requiring no password: it means that every +# password will work against this user. If this directive is +# used for the default user, every new connection will be +# immediately authenticated with the default user without +# any explicit AUTH command required. Note that the "resetpass" +# directive will clear this condition. +# resetpass Flush the list of allowed passwords. Moreover removes the +# "nopass" status. After "resetpass" the user has no associated +# passwords and there is no way to authenticate without adding +# some password (or setting it as "nopass" later). +# reset Performs the following actions: resetpass, resetkeys, off, +# -@all. The user returns to the same state it has immediately +# after its creation. +# +# ACL rules can be specified in any order: for instance you can start with +# passwords, then flags, or key patterns. However note that the additive +# and subtractive rules will CHANGE MEANING depending on the ordering. +# For instance see the following example: +# +# user alice on +@all -DEBUG ~* >somepassword +# +# This will allow "alice" to use all the commands with the exception of the +# DEBUG command, since +@all added all the commands to the set of the commands +# alice can use, and later DEBUG was removed. However if we invert the order +# of two ACL rules the result will be different: +# +# user alice on -DEBUG +@all ~* >somepassword +# +# Now DEBUG was removed when alice had yet no commands in the set of allowed +# commands, later all the commands are added, so the user will be able to +# execute everything. +# +# Basically ACL rules are processed left-to-right. +# +# For more information about ACL configuration please refer to +# the Redis web site at https://redis.io/topics/acl + +# ACL LOG +# +# The ACL Log tracks failed commands and authentication events associated +# with ACLs. The ACL Log is useful to troubleshoot failed commands blocked +# by ACLs. The ACL Log is stored in memory. You can reclaim memory with +# ACL LOG RESET. Define the maximum entry length of the ACL Log below. +acllog-max-len 128 + +# Using an external ACL file +# +# Instead of configuring users here in this file, it is possible to use +# a stand-alone file just listing users. The two methods cannot be mixed: +# if you configure users here and at the same time you activate the external +# ACL file, the server will refuse to start. +# +# The format of the external ACL user file is exactly the same as the +# format that is used inside redis.conf to describe users. +# +# aclfile /etc/redis/users.acl + +# IMPORTANT NOTE: starting with Redis 6 "requirepass" is just a compatibility +# layer on top of the new ACL system. The option effect will be just setting +# the password for the default user. Clients will still authenticate using +# AUTH as usually, or more explicitly with AUTH default +# if they follow the new protocol: both will work. +# +# The requirepass is not compatable with aclfile option and the ACL LOAD +# command, these will cause requirepass to be ignored. +# +# requirepass foobared + +# New users are initialized with restrictive permissions by default, via the +# equivalent of this ACL rule 'off resetkeys -@all'. Starting with Redis 6.2, it +# is possible to manage access to Pub/Sub channels with ACL rules as well. The +# default Pub/Sub channels permission if new users is controlled by the +# acl-pubsub-default configuration directive, which accepts one of these values: +# +# allchannels: grants access to all Pub/Sub channels +# resetchannels: revokes access to all Pub/Sub channels +# +# To ensure backward compatibility while upgrading Redis 6.0, acl-pubsub-default +# defaults to the 'allchannels' permission. +# +# Future compatibility note: it is very likely that in a future version of Redis +# the directive's default of 'allchannels' will be changed to 'resetchannels' in +# order to provide better out-of-the-box Pub/Sub security. Therefore, it is +# recommended that you explicitly define Pub/Sub permissions for all users +# rather then rely on implicit default values. Once you've set explicit +# Pub/Sub for all existing users, you should uncomment the following line. +# +# acl-pubsub-default resetchannels + +# Command renaming (DEPRECATED). +# +# ------------------------------------------------------------------------ +# WARNING: avoid using this option if possible. Instead use ACLs to remove +# commands from the default user, and put them only in some admin user you +# create for administrative purposes. +# ------------------------------------------------------------------------ +# +# It is possible to change the name of dangerous commands in a shared +# environment. For instance the CONFIG command may be renamed into something +# hard to guess so that it will still be available for internal-use tools +# but not available for general clients. +# +# Example: +# +# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 +# +# It is also possible to completely kill a command by renaming it into +# an empty string: +# +# rename-command CONFIG "" +# +# Please note that changing the name of commands that are logged into the +# AOF file or transmitted to replicas may cause problems. + +################################### CLIENTS #################################### + +# Set the max number of connected clients at the same time. By default +# this limit is set to 10000 clients, however if the Redis server is not +# able to configure the process file limit to allow for the specified limit +# the max number of allowed clients is set to the current file limit +# minus 32 (as Redis reserves a few file descriptors for internal uses). +# +# Once the limit is reached Redis will close all the new connections sending +# an error 'max number of clients reached'. +# +# IMPORTANT: When Redis Cluster is used, the max number of connections is also +# shared with the cluster bus: every node in the cluster will use two +# connections, one incoming and another outgoing. It is important to size the +# limit accordingly in case of very large clusters. +# +# maxclients 10000 + +############################## MEMORY MANAGEMENT ################################ + +# Set a memory usage limit to the specified amount of bytes. +# When the memory limit is reached Redis will try to remove keys +# according to the eviction policy selected (see maxmemory-policy). +# +# If Redis can't remove keys according to the policy, or if the policy is +# set to 'noeviction', Redis will start to reply with errors to commands +# that would use more memory, like SET, LPUSH, and so on, and will continue +# to reply to read-only commands like GET. +# +# This option is usually useful when using Redis as an LRU or LFU cache, or to +# set a hard memory limit for an instance (using the 'noeviction' policy). +# +# WARNING: If you have replicas attached to an instance with maxmemory on, +# the size of the output buffers needed to feed the replicas are subtracted +# from the used memory count, so that network problems / resyncs will +# not trigger a loop where keys are evicted, and in turn the output +# buffer of replicas is full with DELs of keys evicted triggering the deletion +# of more keys, and so forth until the database is completely emptied. +# +# In short... if you have replicas attached it is suggested that you set a lower +# limit for maxmemory so that there is some free RAM on the system for replica +# output buffers (but this is not needed if the policy is 'noeviction'). +# +maxmemory 1G + +# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory +# is reached. You can select one from the following behaviors: +# +# volatile-lru -> Evict using approximated LRU, only keys with an expire set. +# allkeys-lru -> Evict any key using approximated LRU. +# volatile-lfu -> Evict using approximated LFU, only keys with an expire set. +# allkeys-lfu -> Evict any key using approximated LFU. +# volatile-random -> Remove a random key having an expire set. +# allkeys-random -> Remove a random key, any key. +# volatile-ttl -> Remove the key with the nearest expire time (minor TTL) +# noeviction -> Don't evict anything, just return an error on write operations. +# +# LRU means Least Recently Used +# LFU means Least Frequently Used +# +# Both LRU, LFU and volatile-ttl are implemented using approximated +# randomized algorithms. +# +# Note: with any of the above policies, when there are no suitable keys for +# eviction, Redis will return an error on write operations that require +# more memory. These are usually commands that create new keys, add data or +# modify existing keys. A few examples are: SET, INCR, HSET, LPUSH, SUNIONSTORE, +# SORT (due to the STORE argument), and EXEC (if the transaction includes any +# command that requires memory). +# +# The default is: +# +maxmemory-policy allkeys-lru + +# LRU, LFU and minimal TTL algorithms are not precise algorithms but approximated +# algorithms (in order to save memory), so you can tune it for speed or +# accuracy. By default Redis will check five keys and pick the one that was +# used least recently, you can change the sample size using the following +# configuration directive. +# +# The default of 5 produces good enough results. 10 Approximates very closely +# true LRU but costs more CPU. 3 is faster but not very accurate. +# +# maxmemory-samples 5 + +# Eviction processing is designed to function well with the default setting. +# If there is an unusually large amount of write traffic, this value may need to +# be increased. Decreasing this value may reduce latency at the risk of +# eviction processing effectiveness +# 0 = minimum latency, 10 = default, 100 = process without regard to latency +# +# maxmemory-eviction-tenacity 10 + +# Starting from Redis 5, by default a replica will ignore its maxmemory setting +# (unless it is promoted to master after a failover or manually). It means +# that the eviction of keys will be just handled by the master, sending the +# DEL commands to the replica as keys evict in the master side. +# +# This behavior ensures that masters and replicas stay consistent, and is usually +# what you want, however if your replica is writable, or you want the replica +# to have a different memory setting, and you are sure all the writes performed +# to the replica are idempotent, then you may change this default (but be sure +# to understand what you are doing). +# +# Note that since the replica by default does not evict, it may end using more +# memory than the one set via maxmemory (there are certain buffers that may +# be larger on the replica, or data structures may sometimes take more memory +# and so forth). So make sure you monitor your replicas and make sure they +# have enough memory to never hit a real out-of-memory condition before the +# master hits the configured maxmemory setting. +# +# replica-ignore-maxmemory yes + +# Redis reclaims expired keys in two ways: upon access when those keys are +# found to be expired, and also in background, in what is called the +# "active expire key". The key space is slowly and interactively scanned +# looking for expired keys to reclaim, so that it is possible to free memory +# of keys that are expired and will never be accessed again in a short time. +# +# The default effort of the expire cycle will try to avoid having more than +# ten percent of expired keys still in memory, and will try to avoid consuming +# more than 25% of total memory and to add latency to the system. However +# it is possible to increase the expire "effort" that is normally set to +# "1", to a greater value, up to the value "10". At its maximum value the +# system will use more CPU, longer cycles (and technically may introduce +# more latency), and will tolerate less already expired keys still present +# in the system. It's a tradeoff between memory, CPU and latency. +# +# active-expire-effort 1 + +############################# LAZY FREEING #################################### + +# Redis has two primitives to delete keys. One is called DEL and is a blocking +# deletion of the object. It means that the server stops processing new commands +# in order to reclaim all the memory associated with an object in a synchronous +# way. If the key deleted is associated with a small object, the time needed +# in order to execute the DEL command is very small and comparable to most other +# O(1) or O(log_N) commands in Redis. However if the key is associated with an +# aggregated value containing millions of elements, the server can block for +# a long time (even seconds) in order to complete the operation. +# +# For the above reasons Redis also offers non blocking deletion primitives +# such as UNLINK (non blocking DEL) and the ASYNC option of FLUSHALL and +# FLUSHDB commands, in order to reclaim memory in background. Those commands +# are executed in constant time. Another thread will incrementally free the +# object in the background as fast as possible. +# +# DEL, UNLINK and ASYNC option of FLUSHALL and FLUSHDB are user-controlled. +# It's up to the design of the application to understand when it is a good +# idea to use one or the other. However the Redis server sometimes has to +# delete keys or flush the whole database as a side effect of other operations. +# Specifically Redis deletes objects independently of a user call in the +# following scenarios: +# +# 1) On eviction, because of the maxmemory and maxmemory policy configurations, +# in order to make room for new data, without going over the specified +# memory limit. +# 2) Because of expire: when a key with an associated time to live (see the +# EXPIRE command) must be deleted from memory. +# 3) Because of a side effect of a command that stores data on a key that may +# already exist. For example the RENAME command may delete the old key +# content when it is replaced with another one. Similarly SUNIONSTORE +# or SORT with STORE option may delete existing keys. The SET command +# itself removes any old content of the specified key in order to replace +# it with the specified string. +# 4) During replication, when a replica performs a full resynchronization with +# its master, the content of the whole database is removed in order to +# load the RDB file just transferred. +# +# In all the above cases the default is to delete objects in a blocking way, +# like if DEL was called. However you can configure each case specifically +# in order to instead release memory in a non-blocking way like if UNLINK +# was called, using the following configuration directives. + +lazyfree-lazy-eviction no +lazyfree-lazy-expire no +lazyfree-lazy-server-del no +replica-lazy-flush no + +# It is also possible, for the case when to replace the user code DEL calls +# with UNLINK calls is not easy, to modify the default behavior of the DEL +# command to act exactly like UNLINK, using the following configuration +# directive: + +lazyfree-lazy-user-del no + +# FLUSHDB, FLUSHALL, and SCRIPT FLUSH support both asynchronous and synchronous +# deletion, which can be controlled by passing the [SYNC|ASYNC] flags into the +# commands. When neither flag is passed, this directive will be used to determine +# if the data should be deleted asynchronously. + +lazyfree-lazy-user-flush no + +################################ THREADED I/O ################################# + +# Redis is mostly single threaded, however there are certain threaded +# operations such as UNLINK, slow I/O accesses and other things that are +# performed on side threads. +# +# Now it is also possible to handle Redis clients socket reads and writes +# in different I/O threads. Since especially writing is so slow, normally +# Redis users use pipelining in order to speed up the Redis performances per +# core, and spawn multiple instances in order to scale more. Using I/O +# threads it is possible to easily speedup two times Redis without resorting +# to pipelining nor sharding of the instance. +# +# By default threading is disabled, we suggest enabling it only in machines +# that have at least 4 or more cores, leaving at least one spare core. +# Using more than 8 threads is unlikely to help much. We also recommend using +# threaded I/O only if you actually have performance problems, with Redis +# instances being able to use a quite big percentage of CPU time, otherwise +# there is no point in using this feature. +# +# So for instance if you have a four cores boxes, try to use 2 or 3 I/O +# threads, if you have a 8 cores, try to use 6 threads. In order to +# enable I/O threads use the following configuration directive: +# +# io-threads 4 +# +# Setting io-threads to 1 will just use the main thread as usual. +# When I/O threads are enabled, we only use threads for writes, that is +# to thread the write(2) syscall and transfer the client buffers to the +# socket. However it is also possible to enable threading of reads and +# protocol parsing using the following configuration directive, by setting +# it to yes: +# +# io-threads-do-reads no +# +# Usually threading reads doesn't help much. +# +# NOTE 1: This configuration directive cannot be changed at runtime via +# CONFIG SET. Aso this feature currently does not work when SSL is +# enabled. +# +# NOTE 2: If you want to test the Redis speedup using redis-benchmark, make +# sure you also run the benchmark itself in threaded mode, using the +# --threads option to match the number of Redis threads, otherwise you'll not +# be able to notice the improvements. + +############################ KERNEL OOM CONTROL ############################## + +# On Linux, it is possible to hint the kernel OOM killer on what processes +# should be killed first when out of memory. +# +# Enabling this feature makes Redis actively control the oom_score_adj value +# for all its processes, depending on their role. The default scores will +# attempt to have background child processes killed before all others, and +# replicas killed before masters. +# +# Redis supports three options: +# +# no: Don't make changes to oom-score-adj (default). +# yes: Alias to "relative" see below. +# absolute: Values in oom-score-adj-values are written as is to the kernel. +# relative: Values are used relative to the initial value of oom_score_adj when +# the server starts and are then clamped to a range of -1000 to 1000. +# Because typically the initial value is 0, they will often match the +# absolute values. +oom-score-adj no + +# When oom-score-adj is used, this directive controls the specific values used +# for master, replica and background child processes. Values range -2000 to +# 2000 (higher means more likely to be killed). +# +# Unprivileged processes (not root, and without CAP_SYS_RESOURCE capabilities) +# can freely increase their value, but not decrease it below its initial +# settings. This means that setting oom-score-adj to "relative" and setting the +# oom-score-adj-values to positive values will always succeed. +oom-score-adj-values 0 200 800 + + +#################### KERNEL transparent hugepage CONTROL ###################### + +# Usually the kernel Transparent Huge Pages control is set to "madvise" or +# or "never" by default (/sys/kernel/mm/transparent_hugepage/enabled), in which +# case this config has no effect. On systems in which it is set to "always", +# redis will attempt to disable it specifically for the redis process in order +# to avoid latency problems specifically with fork(2) and CoW. +# If for some reason you prefer to keep it enabled, you can set this config to +# "no" and the kernel global to "always". + +disable-thp yes + +############################## APPEND ONLY MODE ############################### + +# By default Redis asynchronously dumps the dataset on disk. This mode is +# good enough in many applications, but an issue with the Redis process or +# a power outage may result into a few minutes of writes lost (depending on +# the configured save points). +# +# The Append Only File is an alternative persistence mode that provides +# much better durability. For instance using the default data fsync policy +# (see later in the config file) Redis can lose just one second of writes in a +# dramatic event like a server power outage, or a single write if something +# wrong with the Redis process itself happens, but the operating system is +# still running correctly. +# +# AOF and RDB persistence can be enabled at the same time without problems. +# If the AOF is enabled on startup Redis will load the AOF, that is the file +# with the better durability guarantees. +# +# Please check https://redis.io/topics/persistence for more information. + +appendonly no + +# The name of the append only file (default: "appendonly.aof") + +appendfilename "appendonly.aof" + +# The fsync() call tells the Operating System to actually write data on disk +# instead of waiting for more data in the output buffer. Some OS will really flush +# data on disk, some other OS will just try to do it ASAP. +# +# Redis supports three different modes: +# +# no: don't fsync, just let the OS flush the data when it wants. Faster. +# always: fsync after every write to the append only log. Slow, Safest. +# everysec: fsync only one time every second. Compromise. +# +# The default is "everysec", as that's usually the right compromise between +# speed and data safety. It's up to you to understand if you can relax this to +# "no" that will let the operating system flush the output buffer when +# it wants, for better performances (but if you can live with the idea of +# some data loss consider the default persistence mode that's snapshotting), +# or on the contrary, use "always" that's very slow but a bit safer than +# everysec. +# +# More details please check the following article: +# http://antirez.com/post/redis-persistence-demystified.html +# +# If unsure, use "everysec". + +# appendfsync always +appendfsync everysec +# appendfsync no + +# When the AOF fsync policy is set to always or everysec, and a background +# saving process (a background save or AOF log background rewriting) is +# performing a lot of I/O against the disk, in some Linux configurations +# Redis may block too long on the fsync() call. Note that there is no fix for +# this currently, as even performing fsync in a different thread will block +# our synchronous write(2) call. +# +# In order to mitigate this problem it's possible to use the following option +# that will prevent fsync() from being called in the main process while a +# BGSAVE or BGREWRITEAOF is in progress. +# +# This means that while another child is saving, the durability of Redis is +# the same as "appendfsync none". In practical terms, this means that it is +# possible to lose up to 30 seconds of log in the worst scenario (with the +# default Linux settings). +# +# If you have latency problems turn this to "yes". Otherwise leave it as +# "no" that is the safest pick from the point of view of durability. + +no-appendfsync-on-rewrite no + +# Automatic rewrite of the append only file. +# Redis is able to automatically rewrite the log file implicitly calling +# BGREWRITEAOF when the AOF log size grows by the specified percentage. +# +# This is how it works: Redis remembers the size of the AOF file after the +# latest rewrite (if no rewrite has happened since the restart, the size of +# the AOF at startup is used). +# +# This base size is compared to the current size. If the current size is +# bigger than the specified percentage, the rewrite is triggered. Also +# you need to specify a minimal size for the AOF file to be rewritten, this +# is useful to avoid rewriting the AOF file even if the percentage increase +# is reached but it is still pretty small. +# +# Specify a percentage of zero in order to disable the automatic AOF +# rewrite feature. + +auto-aof-rewrite-percentage 100 +auto-aof-rewrite-min-size 64mb + +# An AOF file may be found to be truncated at the end during the Redis +# startup process, when the AOF data gets loaded back into memory. +# This may happen when the system where Redis is running +# crashes, especially when an ext4 filesystem is mounted without the +# data=ordered option (however this can't happen when Redis itself +# crashes or aborts but the operating system still works correctly). +# +# Redis can either exit with an error when this happens, or load as much +# data as possible (the default now) and start if the AOF file is found +# to be truncated at the end. The following option controls this behavior. +# +# If aof-load-truncated is set to yes, a truncated AOF file is loaded and +# the Redis server starts emitting a log to inform the user of the event. +# Otherwise if the option is set to no, the server aborts with an error +# and refuses to start. When the option is set to no, the user requires +# to fix the AOF file using the "redis-check-aof" utility before to restart +# the server. +# +# Note that if the AOF file will be found to be corrupted in the middle +# the server will still exit with an error. This option only applies when +# Redis will try to read more data from the AOF file but not enough bytes +# will be found. +aof-load-truncated yes + +# When rewriting the AOF file, Redis is able to use an RDB preamble in the +# AOF file for faster rewrites and recoveries. When this option is turned +# on the rewritten AOF file is composed of two different stanzas: +# +# [RDB file][AOF tail] +# +# When loading, Redis recognizes that the AOF file starts with the "REDIS" +# string and loads the prefixed RDB file, then continues loading the AOF +# tail. +aof-use-rdb-preamble yes + +################################ LUA SCRIPTING ############################### + +# Max execution time of a Lua script in milliseconds. +# +# If the maximum execution time is reached Redis will log that a script is +# still in execution after the maximum allowed time and will start to +# reply to queries with an error. +# +# When a long running script exceeds the maximum execution time only the +# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be +# used to stop a script that did not yet call any write commands. The second +# is the only way to shut down the server in the case a write command was +# already issued by the script but the user doesn't want to wait for the natural +# termination of the script. +# +# Set it to 0 or a negative value for unlimited execution without warnings. +lua-time-limit 5000 + +################################ REDIS CLUSTER ############################### + +# Normal Redis instances can't be part of a Redis Cluster; only nodes that are +# started as cluster nodes can. In order to start a Redis instance as a +# cluster node enable the cluster support uncommenting the following: +# +# cluster-enabled yes + +# Every cluster node has a cluster configuration file. This file is not +# intended to be edited by hand. It is created and updated by Redis nodes. +# Every Redis Cluster node requires a different cluster configuration file. +# Make sure that instances running in the same system do not have +# overlapping cluster configuration file names. +# +# cluster-config-file nodes-6379.conf + +# Cluster node timeout is the amount of milliseconds a node must be unreachable +# for it to be considered in failure state. +# Most other internal time limits are a multiple of the node timeout. +# +# cluster-node-timeout 15000 + +# A replica of a failing master will avoid to start a failover if its data +# looks too old. +# +# There is no simple way for a replica to actually have an exact measure of +# its "data age", so the following two checks are performed: +# +# 1) If there are multiple replicas able to failover, they exchange messages +# in order to try to give an advantage to the replica with the best +# replication offset (more data from the master processed). +# Replicas will try to get their rank by offset, and apply to the start +# of the failover a delay proportional to their rank. +# +# 2) Every single replica computes the time of the last interaction with +# its master. This can be the last ping or command received (if the master +# is still in the "connected" state), or the time that elapsed since the +# disconnection with the master (if the replication link is currently down). +# If the last interaction is too old, the replica will not try to failover +# at all. +# +# The point "2" can be tuned by user. Specifically a replica will not perform +# the failover if, since the last interaction with the master, the time +# elapsed is greater than: +# +# (node-timeout * cluster-replica-validity-factor) + repl-ping-replica-period +# +# So for example if node-timeout is 30 seconds, and the cluster-replica-validity-factor +# is 10, and assuming a default repl-ping-replica-period of 10 seconds, the +# replica will not try to failover if it was not able to talk with the master +# for longer than 310 seconds. +# +# A large cluster-replica-validity-factor may allow replicas with too old data to failover +# a master, while a too small value may prevent the cluster from being able to +# elect a replica at all. +# +# For maximum availability, it is possible to set the cluster-replica-validity-factor +# to a value of 0, which means, that replicas will always try to failover the +# master regardless of the last time they interacted with the master. +# (However they'll always try to apply a delay proportional to their +# offset rank). +# +# Zero is the only value able to guarantee that when all the partitions heal +# the cluster will always be able to continue. +# +# cluster-replica-validity-factor 10 + +# Cluster replicas are able to migrate to orphaned masters, that are masters +# that are left without working replicas. This improves the cluster ability +# to resist to failures as otherwise an orphaned master can't be failed over +# in case of failure if it has no working replicas. +# +# Replicas migrate to orphaned masters only if there are still at least a +# given number of other working replicas for their old master. This number +# is the "migration barrier". A migration barrier of 1 means that a replica +# will migrate only if there is at least 1 other working replica for its master +# and so forth. It usually reflects the number of replicas you want for every +# master in your cluster. +# +# Default is 1 (replicas migrate only if their masters remain with at least +# one replica). To disable migration just set it to a very large value or +# set cluster-allow-replica-migration to 'no'. +# A value of 0 can be set but is useful only for debugging and dangerous +# in production. +# +# cluster-migration-barrier 1 + +# Turning off this option allows to use less automatic cluster configuration. +# It both disables migration to orphaned masters and migration from masters +# that became empty. +# +# Default is 'yes' (allow automatic migrations). +# +# cluster-allow-replica-migration yes + +# By default Redis Cluster nodes stop accepting queries if they detect there +# is at least a hash slot uncovered (no available node is serving it). +# This way if the cluster is partially down (for example a range of hash slots +# are no longer covered) all the cluster becomes, eventually, unavailable. +# It automatically returns available as soon as all the slots are covered again. +# +# However sometimes you want the subset of the cluster which is working, +# to continue to accept queries for the part of the key space that is still +# covered. In order to do so, just set the cluster-require-full-coverage +# option to no. +# +# cluster-require-full-coverage yes + +# This option, when set to yes, prevents replicas from trying to failover its +# master during master failures. However the replica can still perform a +# manual failover, if forced to do so. +# +# This is useful in different scenarios, especially in the case of multiple +# data center operations, where we want one side to never be promoted if not +# in the case of a total DC failure. +# +# cluster-replica-no-failover no + +# This option, when set to yes, allows nodes to serve read traffic while the +# the cluster is in a down state, as long as it believes it owns the slots. +# +# This is useful for two cases. The first case is for when an application +# doesn't require consistency of data during node failures or network partitions. +# One example of this is a cache, where as long as the node has the data it +# should be able to serve it. +# +# The second use case is for configurations that don't meet the recommended +# three shards but want to enable cluster mode and scale later. A +# master outage in a 1 or 2 shard configuration causes a read/write outage to the +# entire cluster without this option set, with it set there is only a write outage. +# Without a quorum of masters, slot ownership will not change automatically. +# +# cluster-allow-reads-when-down no + +# In order to setup your cluster make sure to read the documentation +# available at https://redis.io web site. + +########################## CLUSTER DOCKER/NAT support ######################## + +# In certain deployments, Redis Cluster nodes address discovery fails, because +# addresses are NAT-ted or because ports are forwarded (the typical case is +# Docker and other containers). +# +# In order to make Redis Cluster working in such environments, a static +# configuration where each node knows its public address is needed. The +# following four options are used for this scope, and are: +# +# * cluster-announce-ip +# * cluster-announce-port +# * cluster-announce-tls-port +# * cluster-announce-bus-port +# +# Each instructs the node about its address, client ports (for connections +# without and with TLS) and cluster message bus port. The information is then +# published in the header of the bus packets so that other nodes will be able to +# correctly map the address of the node publishing the information. +# +# If cluster-tls is set to yes and cluster-announce-tls-port is omitted or set +# to zero, then cluster-announce-port refers to the TLS port. Note also that +# cluster-announce-tls-port has no effect if cluster-tls is set to no. +# +# If the above options are not used, the normal Redis Cluster auto-detection +# will be used instead. +# +# Note that when remapped, the bus port may not be at the fixed offset of +# clients port + 10000, so you can specify any port and bus-port depending +# on how they get remapped. If the bus-port is not set, a fixed offset of +# 10000 will be used as usual. +# +# Example: +# +# cluster-announce-ip 10.1.1.5 +# cluster-announce-tls-port 6379 +# cluster-announce-port 0 +# cluster-announce-bus-port 6380 + +################################## SLOW LOG ################################### + +# The Redis Slow Log is a system to log queries that exceeded a specified +# execution time. The execution time does not include the I/O operations +# like talking with the client, sending the reply and so forth, +# but just the time needed to actually execute the command (this is the only +# stage of command execution where the thread is blocked and can not serve +# other requests in the meantime). +# +# You can configure the slow log with two parameters: one tells Redis +# what is the execution time, in microseconds, to exceed in order for the +# command to get logged, and the other parameter is the length of the +# slow log. When a new command is logged the oldest one is removed from the +# queue of logged commands. + +# The following time is expressed in microseconds, so 1000000 is equivalent +# to one second. Note that a negative number disables the slow log, while +# a value of zero forces the logging of every command. +slowlog-log-slower-than 10000 + +# There is no limit to this length. Just be aware that it will consume memory. +# You can reclaim memory used by the slow log with SLOWLOG RESET. +slowlog-max-len 128 + +################################ LATENCY MONITOR ############################## + +# The Redis latency monitoring subsystem samples different operations +# at runtime in order to collect data related to possible sources of +# latency of a Redis instance. +# +# Via the LATENCY command this information is available to the user that can +# print graphs and obtain reports. +# +# The system only logs operations that were performed in a time equal or +# greater than the amount of milliseconds specified via the +# latency-monitor-threshold configuration directive. When its value is set +# to zero, the latency monitor is turned off. +# +# By default latency monitoring is disabled since it is mostly not needed +# if you don't have latency issues, and collecting data has a performance +# impact, that while very small, can be measured under big load. Latency +# monitoring can easily be enabled at runtime using the command +# "CONFIG SET latency-monitor-threshold " if needed. +latency-monitor-threshold 0 + +############################# EVENT NOTIFICATION ############################## + +# Redis can notify Pub/Sub clients about events happening in the key space. +# This feature is documented at https://redis.io/topics/notifications +# +# For instance if keyspace events notification is enabled, and a client +# performs a DEL operation on key "foo" stored in the Database 0, two +# messages will be published via Pub/Sub: +# +# PUBLISH __keyspace@0__:foo del +# PUBLISH __keyevent@0__:del foo +# +# It is possible to select the events that Redis will notify among a set +# of classes. Every class is identified by a single character: +# +# K Keyspace events, published with __keyspace@__ prefix. +# E Keyevent events, published with __keyevent@__ prefix. +# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ... +# $ String commands +# l List commands +# s Set commands +# h Hash commands +# z Sorted set commands +# x Expired events (events generated every time a key expires) +# e Evicted events (events generated when a key is evicted for maxmemory) +# t Stream commands +# d Module key type events +# m Key-miss events (Note: It is not included in the 'A' class) +# A Alias for g$lshzxetd, so that the "AKE" string means all the events +# (Except key-miss events which are excluded from 'A' due to their +# unique nature). +# +# The "notify-keyspace-events" takes as argument a string that is composed +# of zero or multiple characters. The empty string means that notifications +# are disabled. +# +# Example: to enable list and generic events, from the point of view of the +# event name, use: +# +# notify-keyspace-events Elg +# +# Example 2: to get the stream of the expired keys subscribing to channel +# name __keyevent@0__:expired use: +# +# notify-keyspace-events Ex +# +# By default all notifications are disabled because most users don't need +# this feature and the feature has some overhead. Note that if you don't +# specify at least one of K or E, no events will be delivered. +notify-keyspace-events "" + +############################### GOPHER SERVER ################################# + +# Redis contains an implementation of the Gopher protocol, as specified in +# the RFC 1436 (https://www.ietf.org/rfc/rfc1436.txt). +# +# The Gopher protocol was very popular in the late '90s. It is an alternative +# to the web, and the implementation both server and client side is so simple +# that the Redis server has just 100 lines of code in order to implement this +# support. +# +# What do you do with Gopher nowadays? Well Gopher never *really* died, and +# lately there is a movement in order for the Gopher more hierarchical content +# composed of just plain text documents to be resurrected. Some want a simpler +# internet, others believe that the mainstream internet became too much +# controlled, and it's cool to create an alternative space for people that +# want a bit of fresh air. +# +# Anyway for the 10nth birthday of the Redis, we gave it the Gopher protocol +# as a gift. +# +# --- HOW IT WORKS? --- +# +# The Redis Gopher support uses the inline protocol of Redis, and specifically +# two kind of inline requests that were anyway illegal: an empty request +# or any request that starts with "/" (there are no Redis commands starting +# with such a slash). Normal RESP2/RESP3 requests are completely out of the +# path of the Gopher protocol implementation and are served as usual as well. +# +# If you open a connection to Redis when Gopher is enabled and send it +# a string like "/foo", if there is a key named "/foo" it is served via the +# Gopher protocol. +# +# In order to create a real Gopher "hole" (the name of a Gopher site in Gopher +# talking), you likely need a script like the following: +# +# https://github.com/antirez/gopher2redis +# +# --- SECURITY WARNING --- +# +# If you plan to put Redis on the internet in a publicly accessible address +# to server Gopher pages MAKE SURE TO SET A PASSWORD to the instance. +# Once a password is set: +# +# 1. The Gopher server (when enabled, not by default) will still serve +# content via Gopher. +# 2. However other commands cannot be called before the client will +# authenticate. +# +# So use the 'requirepass' option to protect your instance. +# +# Note that Gopher is not currently supported when 'io-threads-do-reads' +# is enabled. +# +# To enable Gopher support, uncomment the following line and set the option +# from no (the default) to yes. +# +# gopher-enabled no + +############################### ADVANCED CONFIG ############################### + +# Hashes are encoded using a memory efficient data structure when they have a +# small number of entries, and the biggest entry does not exceed a given +# threshold. These thresholds can be configured using the following directives. +hash-max-ziplist-entries 512 +hash-max-ziplist-value 64 + +# Lists are also encoded in a special way to save a lot of space. +# The number of entries allowed per internal list node can be specified +# as a fixed maximum size or a maximum number of elements. +# For a fixed maximum size, use -5 through -1, meaning: +# -5: max size: 64 Kb <-- not recommended for normal workloads +# -4: max size: 32 Kb <-- not recommended +# -3: max size: 16 Kb <-- probably not recommended +# -2: max size: 8 Kb <-- good +# -1: max size: 4 Kb <-- good +# Positive numbers mean store up to _exactly_ that number of elements +# per list node. +# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size), +# but if your use case is unique, adjust the settings as necessary. +list-max-ziplist-size -2 + +# Lists may also be compressed. +# Compress depth is the number of quicklist ziplist nodes from *each* side of +# the list to *exclude* from compression. The head and tail of the list +# are always uncompressed for fast push/pop operations. Settings are: +# 0: disable all list compression +# 1: depth 1 means "don't start compressing until after 1 node into the list, +# going from either the head or tail" +# So: [head]->node->node->...->node->[tail] +# [head], [tail] will always be uncompressed; inner nodes will compress. +# 2: [head]->[next]->node->node->...->node->[prev]->[tail] +# 2 here means: don't compress head or head->next or tail->prev or tail, +# but compress all nodes between them. +# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail] +# etc. +list-compress-depth 0 + +# Sets have a special encoding in just one case: when a set is composed +# of just strings that happen to be integers in radix 10 in the range +# of 64 bit signed integers. +# The following configuration setting sets the limit in the size of the +# set in order to use this special memory saving encoding. +set-max-intset-entries 512 + +# Similarly to hashes and lists, sorted sets are also specially encoded in +# order to save a lot of space. This encoding is only used when the length and +# elements of a sorted set are below the following limits: +zset-max-ziplist-entries 128 +zset-max-ziplist-value 64 + +# HyperLogLog sparse representation bytes limit. The limit includes the +# 16 bytes header. When an HyperLogLog using the sparse representation crosses +# this limit, it is converted into the dense representation. +# +# A value greater than 16000 is totally useless, since at that point the +# dense representation is more memory efficient. +# +# The suggested value is ~ 3000 in order to have the benefits of +# the space efficient encoding without slowing down too much PFADD, +# which is O(N) with the sparse encoding. The value can be raised to +# ~ 10000 when CPU is not a concern, but space is, and the data set is +# composed of many HyperLogLogs with cardinality in the 0 - 15000 range. +hll-sparse-max-bytes 3000 + +# Streams macro node max size / items. The stream data structure is a radix +# tree of big nodes that encode multiple items inside. Using this configuration +# it is possible to configure how big a single node can be in bytes, and the +# maximum number of items it may contain before switching to a new node when +# appending new stream entries. If any of the following settings are set to +# zero, the limit is ignored, so for instance it is possible to set just a +# max entries limit by setting max-bytes to 0 and max-entries to the desired +# value. +stream-node-max-bytes 4096 +stream-node-max-entries 100 + +# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in +# order to help rehashing the main Redis hash table (the one mapping top-level +# keys to values). The hash table implementation Redis uses (see dict.c) +# performs a lazy rehashing: the more operation you run into a hash table +# that is rehashing, the more rehashing "steps" are performed, so if the +# server is idle the rehashing is never complete and some more memory is used +# by the hash table. +# +# The default is to use this millisecond 10 times every second in order to +# actively rehash the main dictionaries, freeing memory when possible. +# +# If unsure: +# use "activerehashing no" if you have hard latency requirements and it is +# not a good thing in your environment that Redis can reply from time to time +# to queries with 2 milliseconds delay. +# +# use "activerehashing yes" if you don't have such hard requirements but +# want to free memory asap when possible. +activerehashing yes + +# The client output buffer limits can be used to force disconnection of clients +# that are not reading data from the server fast enough for some reason (a +# common reason is that a Pub/Sub client can't consume messages as fast as the +# publisher can produce them). +# +# The limit can be set differently for the three different classes of clients: +# +# normal -> normal clients including MONITOR clients +# replica -> replica clients +# pubsub -> clients subscribed to at least one pubsub channel or pattern +# +# The syntax of every client-output-buffer-limit directive is the following: +# +# client-output-buffer-limit +# +# A client is immediately disconnected once the hard limit is reached, or if +# the soft limit is reached and remains reached for the specified number of +# seconds (continuously). +# So for instance if the hard limit is 32 megabytes and the soft limit is +# 16 megabytes / 10 seconds, the client will get disconnected immediately +# if the size of the output buffers reach 32 megabytes, but will also get +# disconnected if the client reaches 16 megabytes and continuously overcomes +# the limit for 10 seconds. +# +# By default normal clients are not limited because they don't receive data +# without asking (in a push way), but just after a request, so only +# asynchronous clients may create a scenario where data is requested faster +# than it can read. +# +# Instead there is a default limit for pubsub and replica clients, since +# subscribers and replicas receive data in a push fashion. +# +# Both the hard or the soft limit can be disabled by setting them to zero. +client-output-buffer-limit normal 0 0 0 +client-output-buffer-limit replica 256mb 64mb 60 +client-output-buffer-limit pubsub 32mb 8mb 60 + +# Client query buffers accumulate new commands. They are limited to a fixed +# amount by default in order to avoid that a protocol desynchronization (for +# instance due to a bug in the client) will lead to unbound memory usage in +# the query buffer. However you can configure it here if you have very special +# needs, such us huge multi/exec requests or alike. +# +# client-query-buffer-limit 1gb + +# In the Redis protocol, bulk requests, that are, elements representing single +# strings, are normally limited to 512 mb. However you can change this limit +# here, but must be 1mb or greater +# +# proto-max-bulk-len 512mb + +# Redis calls an internal function to perform many background tasks, like +# closing connections of clients in timeout, purging expired keys that are +# never requested, and so forth. +# +# Not all tasks are performed with the same frequency, but Redis checks for +# tasks to perform according to the specified "hz" value. +# +# By default "hz" is set to 10. Raising the value will use more CPU when +# Redis is idle, but at the same time will make Redis more responsive when +# there are many keys expiring at the same time, and timeouts may be +# handled with more precision. +# +# The range is between 1 and 500, however a value over 100 is usually not +# a good idea. Most users should use the default of 10 and raise this up to +# 100 only in environments where very low latency is required. +hz 10 + +# Normally it is useful to have an HZ value which is proportional to the +# number of clients connected. This is useful in order, for instance, to +# avoid too many clients are processed for each background task invocation +# in order to avoid latency spikes. +# +# Since the default HZ value by default is conservatively set to 10, Redis +# offers, and enables by default, the ability to use an adaptive HZ value +# which will temporarily raise when there are many connected clients. +# +# When dynamic HZ is enabled, the actual configured HZ will be used +# as a baseline, but multiples of the configured HZ value will be actually +# used as needed once more clients are connected. In this way an idle +# instance will use very little CPU time while a busy instance will be +# more responsive. +dynamic-hz yes + +# When a child rewrites the AOF file, if the following option is enabled +# the file will be fsync-ed every 32 MB of data generated. This is useful +# in order to commit the file to the disk more incrementally and avoid +# big latency spikes. +aof-rewrite-incremental-fsync yes + +# When redis saves RDB file, if the following option is enabled +# the file will be fsync-ed every 32 MB of data generated. This is useful +# in order to commit the file to the disk more incrementally and avoid +# big latency spikes. +rdb-save-incremental-fsync yes + +# Redis LFU eviction (see maxmemory setting) can be tuned. However it is a good +# idea to start with the default settings and only change them after investigating +# how to improve the performances and how the keys LFU change over time, which +# is possible to inspect via the OBJECT FREQ command. +# +# There are two tunable parameters in the Redis LFU implementation: the +# counter logarithm factor and the counter decay time. It is important to +# understand what the two parameters mean before changing them. +# +# The LFU counter is just 8 bits per key, it's maximum value is 255, so Redis +# uses a probabilistic increment with logarithmic behavior. Given the value +# of the old counter, when a key is accessed, the counter is incremented in +# this way: +# +# 1. A random number R between 0 and 1 is extracted. +# 2. A probability P is calculated as 1/(old_value*lfu_log_factor+1). +# 3. The counter is incremented only if R < P. +# +# The default lfu-log-factor is 10. This is a table of how the frequency +# counter changes with a different number of accesses with different +# logarithmic factors: +# +# +--------+------------+------------+------------+------------+------------+ +# | factor | 100 hits | 1000 hits | 100K hits | 1M hits | 10M hits | +# +--------+------------+------------+------------+------------+------------+ +# | 0 | 104 | 255 | 255 | 255 | 255 | +# +--------+------------+------------+------------+------------+------------+ +# | 1 | 18 | 49 | 255 | 255 | 255 | +# +--------+------------+------------+------------+------------+------------+ +# | 10 | 10 | 18 | 142 | 255 | 255 | +# +--------+------------+------------+------------+------------+------------+ +# | 100 | 8 | 11 | 49 | 143 | 255 | +# +--------+------------+------------+------------+------------+------------+ +# +# NOTE: The above table was obtained by running the following commands: +# +# redis-benchmark -n 1000000 incr foo +# redis-cli object freq foo +# +# NOTE 2: The counter initial value is 5 in order to give new objects a chance +# to accumulate hits. +# +# The counter decay time is the time, in minutes, that must elapse in order +# for the key counter to be divided by two (or decremented if it has a value +# less <= 10). +# +# The default value for the lfu-decay-time is 1. A special value of 0 means to +# decay the counter every time it happens to be scanned. +# +# lfu-log-factor 10 +# lfu-decay-time 1 + +########################### ACTIVE DEFRAGMENTATION ####################### +# +# What is active defragmentation? +# ------------------------------- +# +# Active (online) defragmentation allows a Redis server to compact the +# spaces left between small allocations and deallocations of data in memory, +# thus allowing to reclaim back memory. +# +# Fragmentation is a natural process that happens with every allocator (but +# less so with Jemalloc, fortunately) and certain workloads. Normally a server +# restart is needed in order to lower the fragmentation, or at least to flush +# away all the data and create it again. However thanks to this feature +# implemented by Oran Agra for Redis 4.0 this process can happen at runtime +# in a "hot" way, while the server is running. +# +# Basically when the fragmentation is over a certain level (see the +# configuration options below) Redis will start to create new copies of the +# values in contiguous memory regions by exploiting certain specific Jemalloc +# features (in order to understand if an allocation is causing fragmentation +# and to allocate it in a better place), and at the same time, will release the +# old copies of the data. This process, repeated incrementally for all the keys +# will cause the fragmentation to drop back to normal values. +# +# Important things to understand: +# +# 1. This feature is disabled by default, and only works if you compiled Redis +# to use the copy of Jemalloc we ship with the source code of Redis. +# This is the default with Linux builds. +# +# 2. You never need to enable this feature if you don't have fragmentation +# issues. +# +# 3. Once you experience fragmentation, you can enable this feature when +# needed with the command "CONFIG SET activedefrag yes". +# +# The configuration parameters are able to fine tune the behavior of the +# defragmentation process. If you are not sure about what they mean it is +# a good idea to leave the defaults untouched. + +# Enabled active defragmentation +# activedefrag no + +# Minimum amount of fragmentation waste to start active defrag +# active-defrag-ignore-bytes 100mb + +# Minimum percentage of fragmentation to start active defrag +# active-defrag-threshold-lower 10 + +# Maximum percentage of fragmentation at which we use maximum effort +# active-defrag-threshold-upper 100 + +# Minimal effort for defrag in CPU percentage, to be used when the lower +# threshold is reached +# active-defrag-cycle-min 1 + +# Maximal effort for defrag in CPU percentage, to be used when the upper +# threshold is reached +# active-defrag-cycle-max 25 + +# Maximum number of set/hash/zset/list fields that will be processed from +# the main dictionary scan +# active-defrag-max-scan-fields 1000 + +# Jemalloc background thread for purging will be enabled by default +jemalloc-bg-thread yes + +# It is possible to pin different threads and processes of Redis to specific +# CPUs in your system, in order to maximize the performances of the server. +# This is useful both in order to pin different Redis threads in different +# CPUs, but also in order to make sure that multiple Redis instances running +# in the same host will be pinned to different CPUs. +# +# Normally you can do this using the "taskset" command, however it is also +# possible to this via Redis configuration directly, both in Linux and FreeBSD. +# +# You can pin the server/IO threads, bio threads, aof rewrite child process, and +# the bgsave child process. The syntax to specify the cpu list is the same as +# the taskset command: +# +# Set redis server/io threads to cpu affinity 0,2,4,6: +# server_cpulist 0-7:2 +# +# Set bio threads to cpu affinity 1,3: +# bio_cpulist 1,3 +# +# Set aof rewrite child process to cpu affinity 8,9,10,11: +# aof_rewrite_cpulist 8-11 +# +# Set bgsave child process to cpu affinity 1,10,11 +# bgsave_cpulist 1,10-11 + +# In some cases redis will emit warnings and even refuse to start if it detects +# that the system is in bad state, it is possible to suppress these warnings +# by setting the following config which takes a space delimited list of warnings +# to suppress +# +ignore-warnings ARM64-COW-BUG diff --git a/apps/metersphere/3.0.0-beta/mount/conf/redisson.yml b/apps/metersphere/3.0.0-beta/mount/conf/redisson.yml new file mode 100755 index 00000000..280650d9 --- /dev/null +++ b/apps/metersphere/3.0.0-beta/mount/conf/redisson.yml @@ -0,0 +1,6 @@ +singleServerConfig: + password: + address: "redis://127.0.0.1:6379" + database: 0 +threads: 4 +nettyThreads: 8 \ No newline at end of file diff --git a/apps/metersphere/3.0.0-beta/mount/data/.gitkeep b/apps/metersphere/3.0.0-beta/mount/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/metersphere/3.0.0-beta/mount/logs/.gitkeep b/apps/metersphere/3.0.0-beta/mount/logs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/metersphere/3.0.0-beta/scripts/init.sh b/apps/metersphere/3.0.0-beta/scripts/init.sh new file mode 100644 index 00000000..1a5fed6e --- /dev/null +++ b/apps/metersphere/3.0.0-beta/scripts/init.sh @@ -0,0 +1,4 @@ +#!/bin/bash + + +chmod 777 mount/logs \ No newline at end of file diff --git a/apps/metersphere/README.md b/apps/metersphere/README.md new file mode 100644 index 00000000..745a9464 --- /dev/null +++ b/apps/metersphere/README.md @@ -0,0 +1,10 @@ +# MeterSphere + +MeterSphere 是新一代的测试管理和接口测试工具,让测试工作更简单、更高效,不再成为持续交付的瓶颈。 + + + +## 主要功能: + +- 测试管理: 从测试用例管理,到测试计划执行、缺陷管理、测试报告生成,具有远超禅道和 TestLink 的使用体验; +- 接口测试: 集 Postman 的易用与 JMeter 的灵活于一体,接口定义、接口调试、接口 Mock、场景自动化、接口报告,你想要的都有。 \ No newline at end of file diff --git a/apps/metersphere/data.yml b/apps/metersphere/data.yml new file mode 100644 index 00000000..b6cca1fd --- /dev/null +++ b/apps/metersphere/data.yml @@ -0,0 +1,20 @@ +name: MeterSphere +tags: + - 实用工具 +title: MeterSphere 新一代的测试管理和接口测试工具 +type: 实用工具 +description: MeterSphere 新一代的测试管理和接口测试工具 +additionalProperties: + key: metersphere + name: MeterSphere + tags: + - Tool + shortDescZh: 新一代的测试管理和接口测试工具 + shortDescEn: Open-source Continuous Testing Platform + type: tool + crossVersionUpdate: true + limit: 1 + recommend: 9 + website: https://www.metersphere.io + github: https://github.com/metersphere/metersphere + document: https://metersphere.io/docs \ No newline at end of file diff --git a/apps/metersphere/logo.png b/apps/metersphere/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..15fb97a69325b4766cb9af2f854ded18ec3fa527 GIT binary patch literal 106910 zcmV+a{{R4qP)*-1J02+X>=MKhZzhrureS|yh<4iGoT{S zHWu)%yd_%{e}QkFr>d)6mP9qWq1#)HU%r0*S^xk500000003a_-q->F0000000000 z5(we|0000000000h#-gq0000000000Ac7zc0000000000fCz#(000000000003rzD z00000000000Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u z00000004*}hywrs00000001C@APxWk00000004jpf;a#G000000000Y2;u+$00000 z0001pAczA1000000000Wf*=k6000000001h2!c2O0000000000A_(FD0000000000 zh#-gq0000000000Ac7zc0000000000fCz#(000000000003rzD00000000000Ei%n z0{{R30000003d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u00000004*}hywrs z00000001C@APxWk00000004jpf;a#G000000000Y2;u+$000000001pAczA100000 z0000Wf*=k6000000001h2!c2O0000000000A_(FD0000000000h#-gq0000000000 zAc7zc0000000000fCz#(000000000003rzD00000000000Ei%n0{{R30000003d=O z4gdfE000000DuUBH~;_u00000001Hg;s5{u00000004*}hywrs00000001C@APxWk z00000004jpf;a#G000000000Y2;u+$000000001pAczA1000000000Wf*=k600000 z0001h2!c2O0000000000A_(FD0000000000h#-gq0000000000Ac7zc0000000000 zfCz#(000000000003rzD00000000000Ei%n0{{R30000003d=O4gdfE000000DuUB zH~;_u00000001Hg;s5{u00000004*}hywrs00000001C@APxWk00000004jpf;a#G z000000000Y2;u+$000000001pAczA1000000000Wf*=k6000000001h2!c2O00000 z00000A_(FD0000000000h#-gq0000000000Ac7zc0000000000fCz#(0000000000 z03rzD00000000000Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u00000001Hg z;s5{u00000004*}hywrs00000001C@APxWk00000004jpf;a#G000000000Y2;u+$ z000000001pAczA1000000000Wf*=k6000000001h2!c2O0000000000A_(FD00000 z00000h#-gq0000000000Ac7zc0000000000fCz#(000000000003rzD0000000000 z0Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u00000004*} zhywrs00000001C@APxWk00000004jpf;a#G000000000Y2;u+$000000001pAczA1 z000000000Wf*=k6000000001h2!c2O0000000000A_(FD0000000000h#-gq00000 z00000Ac7zc0000000000fCz#(000000000003rzD00000000000Ei%n0{{R300000 z03d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u00000004*}hywrs00000001C@ zAPxWk00000004jpf;a#G000000000Y2;u+$000000001pAczA1000000000Wf*=k6 z000000001h2!c2O0000000000A_(FD0000000000h#-gq0000000000Ac7zc00000 z00000fCz#(000000000003rzD00000000000Ei%n0{{R30000003d=O4gdfE00000 z0DuUBH~;_u00000001Hg;s5{u00000004*}hywrs00000001C@APxWk00000004jp zf;a#G000000000Y2;u+$000000001pAczA1000000000Wf*=k6000000001h2!c2O z0000000000A_(FD0000000000h#-gq0000000000Ac7zc0000000000fCz#(00000 z0000003rzD00000000000Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u00000 z001Hg;s5{u00000004*}hywrs00000001C@APxWk00000004jpf;a#G000000000Y z2;u+$000000001pAczA1000000000Wf*=k6000000001h2!c2O0000000000A_(FD z0000000000h#-gq0000000000Ac7zc0000000000fCz#(000000000003rzD00000 z000000Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u00000 z004*}hywrs00000001C@APxWk00000004jpf;a#G000000000Y2;u+$000000001p zAczA1000000000Wf*=k6000000001h2!c2O0000000000A_(FD0000000000h#-gq z0000000000Ac7zc0000000000fCz#(000000000003rzD00000000000Ei%n0{{R3 z0000003d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u00000004*}hywrs00000 z001C@APxWk00000004jpf;a#G000000000Y2;u+$000000001pAczA1000000000W zf*=k6000000001h2!c2O0000000000A_(FD0000000000h#-gq0000000000Ac7zc z0000000000fCz#(000000000003rzD00000000000Ei%n0{{R30000003d=O4gdfE z000000DuUBH~;_u00000001Hg;s5{u00000004*}hywrs00000001C@APxWk00000 z004jpf;a#G000000000Y2;u+$000000001pAczA1000000000Wf*=k6000000001h z2!c2O0000000000A_(FD0000000000h#-gq0000000000Ac7zc0000000000fCz#( z000000000003rzD00000000000Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u z00000001Hg;s5{u00000004*}hywrs00000001C@APxWk00000004jpf;a#G00000 z0000Y2;u+$000000001pAczA1000000000Wf*=k6000000001h2!c2O0000000000 zA_(FD0000000000h#-gq0000000000Ac7zc0000000000fCz#(000000000003rzD z00000000000Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u z00000004*}hywrs00000001C@APxWk00000004jpf;a#G000000000Y2;u+$00000 z0001pAczA1000000000Wf*=k6000000001h2!c2O0000000000A_(FD0000000000 zh#-gq0000000000Ac7zc0000000000fCz#(000000000003rzD00000000000Ei%n z0{{R30000003d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u00000004*}hywrs z00000001C@APxWk00000004jpf;a#G000000000Y2;u+$000000001pAczA100000 z0000Wf*=k6000000001h2!c2O0000000000A_(FD0000000000h#-gq0000000000 zAc7zc0000000000fCz#(000000000003rzD00000000000Ei%n0{{R30000003d=O z4gdfE000000DuUBH~;_u00000001Hg;s5{u00000004*}hywrs00000001C@APxWk z00000004jpf;a#G000000000Y2;u+$000000001pAczA1000000000Wf*=k600000 z0001h2!c2O0000000000A_(FD0000000000h#-gq0000000000Ac7zc0000000000 zfCz#(000000000003rzD00000000000Ei%n0{{R30000003d=O4gdfE000000DuUB zH~;_u00000001Hg;s5{u00000004*}hywrs00000001C@APxWk00000004jpf;a#G z000000000Y2;u+$000000001pAczA1000000000Wf*=k6000000001h2!c2O00000 z00000A_(FD0000000000h#-gq0000000000Ac7zc0000000000fCz#(0000000000 z03rzD00000000000Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u00000001Hg z;s5{u00000004*}hywrs00000001C@APxWk00000004jpf;a#G000000000Y2;u+$ z000000001pAczA1000000000Wf*=k6000000001h2!c2O0000000000A_(FD00000 z00000h#-gq0000000000Ac7zc0000000000fCz#(000000000003rzD0000000000 z0Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u00000004*} zhywrs00000001C@APxWk00000004jpf;a#G000000000Y2;u+$000000001pAczA1 z000000000Wf*=k6000000001h2!c2O0000000000A_(FD0000000000h#-gq00000 z00000Ac7zc0000000000fCz#(000000000003rzD00000000000Ei%n0{{R300000 z03d=O4gdfE000000DuUBH~;_u00000001Hg;s5{u00000004*}hywrs00000001C@ zAPxWk00000004jpf;a#G000000000Y2;u+$000000001pAczA1000000000Wf*=k6 z000000001h2!c2O0000000000A_(FD0000000000h#-gq0000000000Ac7zc00000 z00000fCz#(000000000003rzD00000000000Ei%n0{{R30000003d=O4gdfE00000 z0DuUBH~;_u00000001Hg;s5{u00000004*}hywrs00000001C@APxWk00000004jp zf;a#G000000000Y2;u+$000000001pAczA1000000000Wf*=k6000000001h2!c2O z0000000000A_(FD0000000000h#-gq0000000000Ac7zc0000000000fCz#(00000 z0000003rzD00000000000Ei%n0{{R30000003d=O4gdfE000000DuUBH~;_u0C;9? z)4l75od5s;0D$N9%h#`8?E(M*002CLw&@P)w5j8C{9l)KEY~;ZcXkH=0001&Y zS9T2m0001V004L#K^y=8002Bf+jIwY zTGes($RBml|D5&B`JG(_0001hhk0WQ00000;9=UPTh?h;9v{P%@n`JDp9uf}002CI z8{z-}007`8wM}KbADyF0RR91;Qj=000000a8GU19hD)3`|XAP z%8z9T<92o*00000eoPPt00000KhQSaL7n0002s8*S4al_7*Xo%m8O%MixxoEiWC000aGaR2}S05EEsZdIpc zdHv6$-dFz_)y?|meC6~20000$5C;GN004am_j{c-bsWz05pL^Pu5Zr&aGC%B008VW zK^y=8004WdZMt`52;q)H9_hLaVcaLD3jhEBz&;Yh0RR91uy@*~J19d4cN+SLmt_d! z?wmFN0002{gI&JFs)oy&(mpYc~ zoAa%$00000Ac-Ij0001h7;V#?lp%zBYd7xYa~Z<8D_a2o002M&K^y=8006VsHr-Jf zLb%`T#)Et;Lm0QS6#xJL0L+;n4gdfEfZ1xB?x0S~I^NrjC-I?<&HCp2&Q<^b001yY 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 z000000H}dL8~^|S000000031Ghywrs00000005v00&xHU000000000~K_CtQ00000 z0001hDhR{@0000000000Pz8ZF00000000000IDDm2LJ#70000006-N4;s5{u00000 z005|hKpX%700000000105QqZ+000000001>3IcHe0000000000R6!sP0000000000 zfGP;Y0RR910000008j;iH~;_u000000062W5C;GN00000002N01mXYy000000001} zf3IcHe0000000000R6!sP0000000000fGP;Y0RR9100000 z08j;iH~;_u000000062W5C;GN00000002N01mXYy000000001}f3IcHe0000000000R6!sP0000000000fGP;Y0RR910000008j;iH~;_u00000 z0062W5C;GN00000002N01mXYy000000001}f