# config

port 6391

tcp-backlog 511

timeout 0

tcp-keepalive 300

supervised no

pidfile /var/run/redis_6391.pid

loglevel notice

logfile ""

databases 16

always-show-logo yes


save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

## The filename where to dump the DB
dbfilename dump.rdb

dir "/data"

################################# REPLICATION #################################

## Master-Replica replication. Use replicaof to make a Redis instance a copy of
masterauth 123456

# 带注解版config

## 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.
##
## Notice 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 the network interfaces available on the server.
## It is possible to listen to just one or multiple selected interfaces using
## the "bind" configuration directive, followed by one or more IP addresses.
##
## Examples:
##
## bind 192.168.1.100 10.0.0.1
## bind 127.0.0.1 ::1
##
## ~~~ 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 into
## the IPv4 loopback interface address (this means Redis will be able to
## accept connections only from clients running into the same computer it
## is running).
##
## IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
## JUST COMMENT THE FOLLOWING LINE.
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


## 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 no

## 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 6391

## TCP listen() backlog.
##
## In high requests-per-second environments you need an high backlog in order
## to avoid slow clients connections 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 /tmp/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) Take the connection alive from the point of view of network
##    equipment in the middle.
##
## 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

################################# 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.
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
##   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
##   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 liveness pings back to your supervisor.
supervised no

## 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.
pidfile /var/run/redis_6391.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

## Set the number of databases. The default database is DB 0, you can select
## a different one on a per-connection basis using SELECT <dbid> 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. 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 yes

################################ SNAPSHOTTING  ################################
##
## Save the DB on disk:
##
##   save <seconds> <changes>
##
##   Will save the DB if both the given number of seconds and the given
##   number of write operations against the DB occurred.
##
##   In the example below the behaviour will be to save:
##   after 900 sec (15 min) if at least 1 key changed
##   after 300 sec (5 min) if at least 10 keys changed
##   after 60 sec if at least 10000 keys changed
##
##   Note: you can disable saving completely by commenting out all "save" lines.
##
##   It is also possible to remove all the previously configured save
##   points by adding a save directive with a single empty string argument
##   like in the following example:
##
##   save ""

save 900 1
save 300 10
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?
## For default that's set to 'yes' 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

## The filename where to dump the DB
dbfilename dump.rdb

## 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 "/data"

################################# 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 <masterip> <masterport>

## 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 123456

## 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:
## 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 yes

## 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
## active-defrag-cycle-min 5

## Maximal effort for defrag in CPU percentage
## active-defrag-cycle-max 75

## Maximum number of set/hash/zset/list fields that will be processed from
## the main dictionary scan
## active-defrag-max-scan-fields 1000

# redis.sh

redis-server  /config/nodes-${PORT}.conf

# yml

version: "3"
services:
    network_mode: host ## 使用host模式
    privileged: true ## 拥有容器内命令执行的权限
    volumes:
      - /usr/local/src/docker/redis-cluster/config:/config ##配置文件目录映射到宿主机
    entrypoint: ## 设置服务默认的启动程序
      - /bin/bash
      - redis.sh
  redis-master2:
    image: redis:5.0
    working_dir: /config
    container_name: node2
    environment:
      - PORT=6392
    ports:
      - 6392:6392
      - 16392:16392
    stdin_open: true
    network_mode: host
    tty: true
    privileged: true
    volumes:
      - /usr/local/src/docker/redis-cluster/config:/config
    entrypoint:
      - /bin/bash
      - redis.sh
  redis-master3:
    image: redis:5.0
    container_name: node3
    working_dir: /config
    environment:
      - PORT=6393
    ports:
      - 6393:6393
      - 16393:16393
    stdin_open: true
    network_mode: host
    tty: true
    privileged: true
    volumes:
      - /usr/local/src/docker/redis-cluster/config:/config
    entrypoint:
      - /bin/bash
      - redis.sh

# 集群的创建

redis-cli --cluster add-node 192.168.163.132:6382 192.168.163.132:6379 --cluster-slave --cluster-master-id 117457eab5071954faab5e81c3170600d5192270

最后编辑时间: 12/21/2020, 8:56:16 PM