From c656c085cf327eea0e149c956e6e63b85c2b8427 Mon Sep 17 00:00:00 2001 From: YonggangWang Date: Tue, 21 Mar 2017 14:11:10 +0800 Subject: [PATCH] Use redis binary from OPEN-O Nexus to build Issue-id: OCS-174 Modify Maven Scripts to Download Redis Binary from OPEN-O Nexus for MSB Building Change-Id: Ie8088eba0845034f19585fc9e77031227b1df92e Signed-off-by: YonggangWang --- msb-core/distributions/standalone/pom.xml | 145 +-- msb-core/pom.xml | 9 +- msb-core/redis-ext/pom.xml | 171 ++-- .../resources/{ => linux}/redis/BGREWRITEAOF.sh | 8 +- .../assembly/resources/linux/redis/conf/redis.conf | 1023 ++++++++++++++++++++ .../assembly/resources/{ => linux}/redis/run.sh | 20 +- .../assembly/resources/{ => linux}/redis/stop.sh | 10 +- .../assembly/resources/redis-works/placeholder.txt | 0 .../src/assembly/resources/redis/BGREWRITEAOF.bat | 45 - .../src/assembly/resources/redis/redisService.exe | Bin 59392 -> 0 bytes .../src/assembly/resources/redis/redisService.xml | 33 - .../redis-ext/src/assembly/resources/redis/run.bat | 51 - .../src/assembly/resources/redis/stop.bat | 45 - 13 files changed, 1169 insertions(+), 391 deletions(-) rename msb-core/redis-ext/src/assembly/resources/{ => linux}/redis/BGREWRITEAOF.sh (86%) create mode 100644 msb-core/redis-ext/src/assembly/resources/linux/redis/conf/redis.conf rename msb-core/redis-ext/src/assembly/resources/{ => linux}/redis/run.sh (76%) rename msb-core/redis-ext/src/assembly/resources/{ => linux}/redis/stop.sh (86%) delete mode 100644 msb-core/redis-ext/src/assembly/resources/redis-works/placeholder.txt delete mode 100644 msb-core/redis-ext/src/assembly/resources/redis/BGREWRITEAOF.bat delete mode 100644 msb-core/redis-ext/src/assembly/resources/redis/redisService.exe delete mode 100644 msb-core/redis-ext/src/assembly/resources/redis/redisService.xml delete mode 100644 msb-core/redis-ext/src/assembly/resources/redis/run.bat delete mode 100644 msb-core/redis-ext/src/assembly/resources/redis/stop.bat diff --git a/msb-core/distributions/standalone/pom.xml b/msb-core/distributions/standalone/pom.xml index 0c97ce0..9a17d6e 100644 --- a/msb-core/distributions/standalone/pom.xml +++ b/msb-core/distributions/standalone/pom.xml @@ -47,30 +47,14 @@ zip true - - - org.openo.common-services.microservice-bus - redis - zip - win64 - ${project.version} - true - org.openo.common-services.microservice-bus - redis + redis-ext tar.gz linux64 ${project.version} true - - org.openo.common-services.microservice-bus - redis-ext - zip - ${project.version} - true - org.openo.common-services.microservice-bus @@ -156,31 +140,6 @@ true - - - - copy-msb-resources-${win64id} - prepare-package - - copy-resources - - - ${win64outputdir} - true - - - src/assembly/resource/ - false - - **/* - - - **/*.sh - - - - true - @@ -204,15 +163,10 @@ org.openo.common-services.microservice-bus - redis + redis-ext tar.gz linux64 - - org.openo.common-services.microservice-bus - redis-ext - zip - org.openo.common-services.microservice-bus openresty @@ -260,78 +214,6 @@ true - - - unpacktowin64 - - unpack - - prepare-package - - - - org.openo.common-services.microservice-bus - apiroute-standalone - zip - - - org.openo.common-services.microservice-bus - redis - zip - win64 - - - org.openo.common-services.microservice-bus - redis-ext - zip - - - org.openo.common-services.microservice-bus - openresty - zip - win64 - - - org.openo.common-services.microservice-bus - openresty-ext - zip - - - *.sh,*/*.sh,*/*/*.sh - ${win64outputdir} - false - true - true - - - - - eag-unpacktowin64 - - unpack - - prepare-package - - - - org.openo.common-services.microservice-bus - openresty - zip - win64 - - - org.openo.common-services.microservice-bus - eag-openresty-ext - zip - - - *.sh,*/*.sh,*/*/*.sh - ${win64outputdir}/eag - false - true - true - - @@ -356,23 +238,6 @@ - - prepare-eag-openresty-win - prepare-package - - run - - - - - - - - - - - - distribution package @@ -396,12 +261,6 @@ - - - - - - diff --git a/msb-core/pom.xml b/msb-core/pom.xml index 2cf5f14..4871844 100644 --- a/msb-core/pom.xml +++ b/msb-core/pom.xml @@ -30,11 +30,18 @@ 1.1.0-SNAPSHOT common-services-microservice-bus/msb-core pom + + 1.11.2.2 + 3.2.6 + linux64 + target/assembly/${classifier.linux64}/ + target/version + openresty openresty-ext eag-openresty-ext - redis + redis-ext apiroute distributions diff --git a/msb-core/redis-ext/pom.xml b/msb-core/redis-ext/pom.xml index 0d2f498..38e6e32 100644 --- a/msb-core/redis-ext/pom.xml +++ b/msb-core/redis-ext/pom.xml @@ -38,61 +38,124 @@ redis-ext - - - - maven-resources-plugin - - true - - - - copy-resources - process-resources - - copy-resources - - - ${outputdir} - - - src/assembly/resources/ - false - - **/* - - - - true - - - - + + + org.redis.centos.7 + redis + ${redis.version} + tar.gz + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + unpack-dependency-file + + unpack + + + generate-resources + + + + org.redis.centos.7 + redis + ${redis.version} + tar.gz + ${linux64outputdir} + + + **/redis-benchmark**,**/*.pdb,**/*.docx + false + true + true + + + + - - org.apache.maven.plugins - maven-antrun-plugin - - - distribution - package - - run - - - - - - - - - - - - + + com.coderplus.maven.plugins + copy-rename-maven-plugin + 1.0.1 + + + rename-redis-dir + process-resources + + rename + + + ${linux64outputdir}/redis-${redis.version} + ${linux64outputdir}/redis + + + + - - + + maven-resources-plugin + + true + + + + copy-resources + process-resources + + copy-resources + + + ${linux64outputdir} + + + src/assembly/resources/linux + false + + **/* + + + + true + + + + - + + org.apache.maven.plugins + maven-antrun-plugin + + + distribution + package + + run + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/msb-core/redis-ext/src/assembly/resources/redis/BGREWRITEAOF.sh b/msb-core/redis-ext/src/assembly/resources/linux/redis/BGREWRITEAOF.sh similarity index 86% rename from msb-core/redis-ext/src/assembly/resources/redis/BGREWRITEAOF.sh rename to msb-core/redis-ext/src/assembly/resources/linux/redis/BGREWRITEAOF.sh index d6d0b1b..e401021 100644 --- a/msb-core/redis-ext/src/assembly/resources/redis/BGREWRITEAOF.sh +++ b/msb-core/redis-ext/src/assembly/resources/linux/redis/BGREWRITEAOF.sh @@ -1,12 +1,12 @@ #!/bin/sh # -# Copyright 2016 ZTE Corporation. +# Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) # # Licensed 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 +# 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, @@ -14,10 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Author: Zhaoxing Meng -# email: meng.zhaoxing1@zte.com.cn -# - DIRNAME=`dirname $0` HOME=`cd $DIRNAME/; pwd` _REDISCLIENT="$HOME/redis-cli" diff --git a/msb-core/redis-ext/src/assembly/resources/linux/redis/conf/redis.conf b/msb-core/redis-ext/src/assembly/resources/linux/redis/conf/redis.conf new file mode 100644 index 0000000..66476ea --- /dev/null +++ b/msb-core/redis-ext/src/assembly/resources/linux/redis/conf/redis.conf @@ -0,0 +1,1023 @@ +# 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 + +################################## 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 lookback 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. +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +bind 127.0.0.1 + +# 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 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 yes + +# 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_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 "../redis-works/redis.log" + +# 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 where +# dbid is a number between 0 and 'databases'-1 +databases 16 + +################################ SNAPSHOTTING ################################ +# +# Save the DB on disk: +# +# save +# +# 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 ../redis-works + +################################# REPLICATION ################################# + +# Master-Slave replication. Use slaveof to make a Redis instance a copy of +# another Redis server. A few things to understand ASAP about Redis replication. +# +# 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 slaves. +# 2) Redis slaves 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 slaves automatically try to reconnect to masters +# and resynchronize with them. +# +# slaveof + +# If the master is password protected (using the "requirepass" configuration +# directive below) it is possible to tell the slave to authenticate before +# starting the replication synchronization process, otherwise the master will +# refuse the slave request. +# +# masterauth + +# When a slave loses its connection with the master, or when the replication +# is still in progress, the slave can act in two different ways: +# +# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave 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 slave-serve-stale-data is set to 'no' the slave will reply with +# an error "SYNC with master in progress" to all the kind of commands +# but to INFO and SLAVEOF. +# +slave-serve-stale-data yes + +# You can configure a slave instance to accept writes or not. Writing against +# a slave instance may be useful to store some ephemeral data (because data +# written on a slave 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 slaves are read-only. +# +# Note: read only slaves 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 slave 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 slaves using 'rename-command' to shadow all the +# administrative / dangerous commands. +slave-read-only yes + +# Replication SYNC strategy: disk or socket. +# +# ------------------------------------------------------- +# WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY +# ------------------------------------------------------- +# +# New slaves and reconnecting slaves 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 slaves. +# 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 slaves incrementally. +# 2) Diskless: The Redis master creates a new process that directly writes the +# RDB file to slave sockets, without touching the disk at all. +# +# With disk-backed replication, while the RDB file is generated, more slaves +# 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 slaves 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 slaves +# 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 slaves. +# +# This is important since once the transfer starts, it is not possible to serve +# new slaves arriving, that will be queued for the next RDB transfer, so the server +# waits a delay in order to let more slaves 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 + +# Slaves send PINGs to server in a predefined interval. It's possible to change +# this interval with the repl_ping_slave_period option. The default value is 10 +# seconds. +# +# repl-ping-slave-period 10 + +# The following option sets the replication timeout for: +# +# 1) Bulk transfer I/O during SYNC, from the point of view of slave. +# 2) Master timeout from the point of view of slaves (data, pings). +# 3) Slave 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-slave-period otherwise a timeout will be detected +# every time there is low traffic between the master and the slave. +# +# repl-timeout 60 + +# Disable TCP_NODELAY on the slave socket after SYNC? +# +# If you select "yes" Redis will use a smaller number of TCP packets and +# less bandwidth to send data to slaves. But this can add a delay for +# the data to appear on the slave side, up to 40 milliseconds with +# Linux kernels using a default configuration. +# +# If you select "no" the delay for data to appear on the slave 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 slaves 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 +# slave data when slaves are disconnected for some time, so that when a slave +# wants to reconnect again, often a full resync is not needed, but a partial +# resync is enough, just passing the portion of data the slave missed while +# disconnected. +# +# The bigger the replication backlog, the longer the time the slave can be +# disconnected and later be able to perform a partial resynchronization. +# +# The backlog is only allocated once there is at least a slave connected. +# +# repl-backlog-size 1mb + +# After a master has no longer connected slaves 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 slave disconnected, for +# the backlog buffer to be freed. +# +# A value of 0 means to never release the backlog. +# +# repl-backlog-ttl 3600 + +# The slave priority is an integer number published by Redis in the INFO output. +# It is used by Redis Sentinel in order to select a slave to promote into a +# master if the master is no longer working correctly. +# +# A slave with a low priority number is considered better for promotion, so +# for instance if there are three slaves 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 slave as not able to perform the +# role of master, so a slave with priority of 0 will never be selected by +# Redis Sentinel for promotion. +# +# By default the priority is 100. +slave-priority 100 + +# It is possible for a master to stop accepting writes if there are less than +# N slaves connected, having a lag less or equal than M seconds. +# +# The N slaves 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 slave, 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 slaves +# are available, to the specified number of seconds. +# +# For example to require at least 3 slaves with a lag <= 10 seconds use: +# +# min-slaves-to-write 3 +# min-slaves-max-lag 10 +# +# Setting one or the other to 0 disables the feature. +# +# By default min-slaves-to-write is set to 0 (feature disabled) and +# min-slaves-max-lag is set to 10. + +################################## SECURITY ################################### + +# Require clients to issue AUTH before processing any other +# commands. This might be useful in environments in which you do not trust +# others with access to the host running redis-server. +# +# This should stay commented out for backward compatibility and because most +# people do not need auth (e.g. they run their own servers). +# +# Warning: since Redis is pretty fast an outside user can try up to +# 150k passwords per second against a good box. This means that you should +# use a very strong password otherwise it will be very easy to break. +# +# requirepass foobared + +# Command renaming. +# +# 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 slaves may cause problems. + +################################### LIMITS #################################### + +# 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'. +# +# maxclients 10000 + +# Don't use more memory than 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 cache, or to set +# a hard memory limit for an instance (using the 'noeviction' policy). +# +# WARNING: If you have slaves attached to an instance with maxmemory on, +# the size of the output buffers needed to feed the slaves 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 slaves 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 slaves attached it is suggested that you set a lower +# limit for maxmemory so that there is some free RAM on the system for slave +# output buffers (but this is not needed if the policy is 'noeviction'). +# +# maxmemory + +# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory +# is reached. You can select among five behaviors: +# +# volatile-lru -> remove the key with an expire set using an LRU algorithm +# allkeys-lru -> remove any key according to the LRU algorithm +# volatile-random -> remove a random key with 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 expire at all, just return an error on write operations +# +# Note: with any of the above policies, Redis will return an error on write +# operations, when there are no suitable keys for eviction. +# +# At the date of writing these commands are: set setnx setex append +# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd +# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby +# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby +# getset mset msetnx exec sort +# +# The default is: +# +# maxmemory-policy noeviction + +# LRU 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. For default Redis will check five keys and pick the one that was +# used less 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 a bit more CPU. 3 is very fast but not very accurate. +# +# maxmemory-samples 5 + +############################## 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 http://redis.io/topics/persistence for more information. + +appendonly yes + +# 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 5mb + +# 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 + +################################ 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 called 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 ############################### +# +# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however +# in order to mark it as "mature" we need to wait for a non trivial percentage +# of users to deploy it in production. +# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +# +# 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 multiple of the node timeout. +# +# cluster-node-timeout 15000 + +# A slave of a failing master will avoid to start a failover if its data +# looks too old. +# +# There is no simple way for a slave to actually have a exact measure of +# its "data age", so the following two checks are performed: +# +# 1) If there are multiple slaves able to failover, they exchange messages +# in order to try to give an advantage to the slave with the best +# replication offset (more data from the master processed). +# Slaves 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 slave 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 slave will not try to failover +# at all. +# +# The point "2" can be tuned by user. Specifically a slave will not perform +# the failover if, since the last interaction with the master, the time +# elapsed is greater than: +# +# (node-timeout * slave-validity-factor) + repl-ping-slave-period +# +# So for example if node-timeout is 30 seconds, and the slave-validity-factor +# is 10, and assuming a default repl-ping-slave-period of 10 seconds, the +# slave will not try to failover if it was not able to talk with the master +# for longer than 310 seconds. +# +# A large slave-validity-factor may allow slaves with too old data to failover +# a master, while a too small value may prevent the cluster from being able to +# elect a slave at all. +# +# For maximum availability, it is possible to set the slave-validity-factor +# to a value of 0, which means, that slaves 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-slave-validity-factor 10 + +# Cluster slaves are able to migrate to orphaned masters, that are masters +# that are left without working slaves. 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 slaves. +# +# Slaves migrate to orphaned masters only if there are still at least a +# given number of other working slaves for their old master. This number +# is the "migration barrier". A migration barrier of 1 means that a slave +# will migrate only if there is at least 1 other working slave for its master +# and so forth. It usually reflects the number of slaves you want for every +# master in your cluster. +# +# Default is 1 (slaves migrate only if their masters remain with at least +# one slave). To disable migration just set it to a very large value. +# A value of 0 can be set but is useful only for debugging and dangerous +# in production. +# +# cluster-migration-barrier 1 + +# By default Redis Cluster nodes stop accepting queries if they detect there +# is at least an 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 + +# In order to setup your cluster make sure to read the documentation +# available at http://redis.io web site. + +################################## 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 http://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) +# A Alias for g$lshzxe, so that the "AKE" string means all the events. +# +# 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 "" + +############################### 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 + +# 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 +# slave -> slave 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 slave clients, since +# subscribers and slaves 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 slave 256mb 64mb 60 +client-output-buffer-limit pubsub 32mb 8mb 60 + +# 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 + +# 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 diff --git a/msb-core/redis-ext/src/assembly/resources/redis/run.sh b/msb-core/redis-ext/src/assembly/resources/linux/redis/run.sh similarity index 76% rename from msb-core/redis-ext/src/assembly/resources/redis/run.sh rename to msb-core/redis-ext/src/assembly/resources/linux/redis/run.sh index ff3e676..2bffa97 100644 --- a/msb-core/redis-ext/src/assembly/resources/redis/run.sh +++ b/msb-core/redis-ext/src/assembly/resources/linux/redis/run.sh @@ -1,12 +1,11 @@ -#!/bin/sh # -# Copyright 2016 ZTE Corporation. +# Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) # # Licensed 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 +# 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, @@ -14,14 +13,21 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Author: Zhaoxing Meng -# email: meng.zhaoxing1@zte.com.cn -# + +#!/bin/sh DIRNAME=`dirname $0` HOME=`cd $DIRNAME/; pwd` _REDISCMD="$HOME/redis-server" -_REDISCONF="$HOME/redis.conf" +_REDISCONF="$HOME/conf/redis.conf" + +REDIS_WORKS=$HOME/../redis-works + +if [ ! -d "$REDIS_WORKS" ]; then +echo there is no $REDIS_WORKS +mkdir "$REDIS_WORKS" +fi + echo =========== Redis config info ============================================= echo Redis_HOME=$HOME diff --git a/msb-core/redis-ext/src/assembly/resources/redis/stop.sh b/msb-core/redis-ext/src/assembly/resources/linux/redis/stop.sh similarity index 86% rename from msb-core/redis-ext/src/assembly/resources/redis/stop.sh rename to msb-core/redis-ext/src/assembly/resources/linux/redis/stop.sh index 94ab13e..443333b 100644 --- a/msb-core/redis-ext/src/assembly/resources/redis/stop.sh +++ b/msb-core/redis-ext/src/assembly/resources/linux/redis/stop.sh @@ -1,12 +1,11 @@ -#!/bin/sh # -# Copyright 2016 ZTE Corporation. +# Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) # # Licensed 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 +# 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, @@ -14,9 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Author: Zhaoxing Meng -# email: meng.zhaoxing1@zte.com.cn -# + +#!/bin/sh DIRNAME=`dirname $0` HOME=`cd $DIRNAME/; pwd` diff --git a/msb-core/redis-ext/src/assembly/resources/redis-works/placeholder.txt b/msb-core/redis-ext/src/assembly/resources/redis-works/placeholder.txt deleted file mode 100644 index e69de29..0000000 diff --git a/msb-core/redis-ext/src/assembly/resources/redis/BGREWRITEAOF.bat b/msb-core/redis-ext/src/assembly/resources/redis/BGREWRITEAOF.bat deleted file mode 100644 index 2fd7cc0..0000000 --- a/msb-core/redis-ext/src/assembly/resources/redis/BGREWRITEAOF.bat +++ /dev/null @@ -1,45 +0,0 @@ -@REM -@REM Copyright 2016 ZTE Corporation. -@REM -@REM Licensed under the Apache License, Version 2.0 (the "License"); -@REM you may not use this file except in compliance with the License. -@REM You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, software -@REM distributed under the License is distributed on an "AS IS" BASIS, -@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@REM See the License for the specific language governing permissions and -@REM limitations under the License. -@REM -@REM Author: Zhaoxing Meng -@REM email: meng.zhaoxing1@zte.com.cn -@REM - -@echo off -title close redis-server -@if not "%ECHO%" == "" echo %ECHO% -@if "%OS%" == "Windows_NT" setlocal - -set DIRNAME=. - -if "%OS%" == "Windows_NT" set DIRNAME=%~dp0% - -set HOME=%DIRNAME% -set _REDISCLIENT=%DIRNAME%redis-cli.exe - - -echo ================Redis config info ============================================= -echo Redis_HOME=$HOME -echo TIP:This shell script rewrite the AOF file in the background! -echo =============================================================================== - - -cd /d "%HOME%" -echo @WORK_DIR@%HOME% -echo @C_CMD@ "%_REDISCLIENT% -p 6379 BGREWRITEAOF" -%_REDISCLIENT% -p 6379 BGREWRITEAOF -echo closing signal has been sent,stopping in background,WAIT... -timeout /t 2 /nobreak > nul -exit diff --git a/msb-core/redis-ext/src/assembly/resources/redis/redisService.exe b/msb-core/redis-ext/src/assembly/resources/redis/redisService.exe deleted file mode 100644 index c6e8fc2900bed695c4e712dd7121b59deb601a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59392 zcmbrn34B!56+eFFy_q*l)=9!7VUeJKLlz)mR}?}LAexOVENYEIGQdER7vD@+L?|e( zg;wgmR&n22vD9koZnf^B)wYV_QfsZXty)Zotbx9gSYJtPb6ZKT*&Usnl@%Cot8S?yYH;ba;_TNuoZQ|a&6VNG zAbJy=fZ`ti6}}}LcH!TA71mU_nakyupZSOfzwU2@dd)wFC|CYVeQnYf|M*LyW(m9K zHp6D7e@a}G33}fbM5ELB|EF*XkuOcg2YPWDJvkBGm;hb-1^{tVSCl*br-bOV$yVIz z0#lU@bz`Lm)1{;}=1;bwJthRXtb{Ui8_);C?C*6QnRj>nX&3!j|7gkP!q4a2w*8*VGWWf<_x*=TgQu;^c;>nF zPsg75;^+50dC4==Z>jS>7o5A|sOxv%6Zl@+6)T<|^_wj(|LN5YkvZSY{NSIoFtfe1 z>9{!`?pb={@89_RXHT~0WL^1}Z#Hynf9;)z_AQz5>Yth}ZG7(FE5CcI?Zodsa>?{B zp6c(?r@9FyB|loY0QRF56qL-P913TnI$O{(Zf!H;))9ydhXCaxEin4Sg$VCF78VvR zLMUDgIHMGr@~6U*@P$xNrPWKmaY17aGzN@8iZ1y!MMfMZYLwoQp7}`5JX3MPuv25A zCd#CgrN`Li*SDZA-6+T?)a^Nx17t8yKQtl_!8|?36&?jWu`OpoDo?ixUDUtj?6mL> zg#Cg2D6AHS2?xSs02z7YHjhAH3xtuxlnbDR?^825mFGLjaY+fSEr4bGpLQ2QHs9N=oF;U(I(-ep)X*VVSLO!+=!`~R;n3=%QbT!yKgX za2+aHsTRgCM>)$&yk->(3x=m5SdrzmnvlH^35*nV3x?JPr2R5N znepjJmKDl(hw?pJXCSP3^E7{+JI@ow5HKbN-SL?$;gi14IE+ZX5i}~sg;8H)ZNO?p z?#9j<9w)PqP8w|X5y&^sduW6g?J61P`|`35jX*WDysXfcAX+3ZOBpxJ7U9qq49+AE z1xbc6B;CQRe1D!d&tLKl>@m+5Mj9hO5Df6hH2To!YbTGi&Ocm1et?E7+{MMn&j@CO ze!wABEQiv=vr+6VFgkaVC0$Z<(#u;gNetl@E@wVQfIH~(1~Ur7`COLFU}jobMp*Y8 zrYu1pPbtPkFV91UQF??L(4{A7`j*q7Ps`E5b5WGuEf%O!(qUtZP<;Mz#=dzR1gwvs z-8>#4a~>c(AF$;-)}X8S&kqxSzUbufu@?H!5tzF;O}HAVVNnb4$f zqIfMZ(`#Z54fuGbFqBAmAsFShd>Ew+3{7gwEk+cKk;ehdmDiDA36&7-YJ$N8G$Uku zKW5fL2&1qvLpMTR^8`?3f7Hwq@zn*BO@%p6Clr|7fS^`>+|~LMz?ZT zIJPO0vg#SzIGkpQ%4RYtf2^_@?o$&wumA?#V$Rk??mHfo7;0Pq!%UiChPPs-r@T

O;XRU&Wuh3k_wBH+&ikdx41%kfO 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 HzZCdiu4TJ* diff --git a/msb-core/redis-ext/src/assembly/resources/redis/redisService.xml b/msb-core/redis-ext/src/assembly/resources/redis/redisService.xml deleted file mode 100644 index af24dab..0000000 --- a/msb-core/redis-ext/src/assembly/resources/redis/redisService.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - msb_redis - msb_redis - This service runs redis. - %BASE% - - redis-server.exe - redis.conf - redis-cli.exe - shutdown - rotate - - \ No newline at end of file diff --git a/msb-core/redis-ext/src/assembly/resources/redis/run.bat b/msb-core/redis-ext/src/assembly/resources/redis/run.bat deleted file mode 100644 index fb92460..0000000 --- a/msb-core/redis-ext/src/assembly/resources/redis/run.bat +++ /dev/null @@ -1,51 +0,0 @@ -@REM -@REM Copyright 2016 ZTE Corporation. -@REM -@REM Licensed under the Apache License, Version 2.0 (the "License"); -@REM you may not use this file except in compliance with the License. -@REM You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, software -@REM distributed under the License is distributed on an "AS IS" BASIS, -@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@REM See the License for the specific language governing permissions and -@REM limitations under the License. -@REM -@REM Author: Zhaoxing Meng -@REM email: meng.zhaoxing1@zte.com.cn -@REM - -@echo off -title redis-server -@if not "%ECHO%" == "" echo %ECHO% -@if "%OS%" == "Windows_NT" setlocal - -set DIRNAME=. - -if "%OS%" == "Windows_NT" set DIRNAME=%~dp0% - -set HOME=%DIRNAME% -set _REDISCMD=%DIRNAME%redis-server.exe -set _REDISCONF=%DIRNAME%redis.conf - - -echo ================Redis config info ============================================= -echo Redis_HOME=%HOME% -echo config file=$_REDISCONF -echo Help:use $_REDISCMD --help for help -echo =============================================================================== - - -cd /d "%HOME%" -echo @WORK_DIR@%HOME% -echo @C_CMD@ "%_REDISCMD% %_REDISCONF%" -%_REDISCMD% %_REDISCONF% -IF ERRORLEVEL 1 goto showerror -exit -:showerror -echo WARNING: Error occurred during startup or Server abnormally stopped by way of killing the process,Please check! -echo After checking, press any key to close -pause -exit diff --git a/msb-core/redis-ext/src/assembly/resources/redis/stop.bat b/msb-core/redis-ext/src/assembly/resources/redis/stop.bat deleted file mode 100644 index 7d8ed4b..0000000 --- a/msb-core/redis-ext/src/assembly/resources/redis/stop.bat +++ /dev/null @@ -1,45 +0,0 @@ -@REM -@REM Copyright 2016 ZTE Corporation. -@REM -@REM Licensed under the Apache License, Version 2.0 (the "License"); -@REM you may not use this file except in compliance with the License. -@REM You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, software -@REM distributed under the License is distributed on an "AS IS" BASIS, -@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@REM See the License for the specific language governing permissions and -@REM limitations under the License. -@REM -@REM Author: Zhaoxing Meng -@REM email: meng.zhaoxing1@zte.com.cn -@REM - -@echo off -title close redis-server -@if not "%ECHO%" == "" echo %ECHO% -@if "%OS%" == "Windows_NT" setlocal - -set DIRNAME=. - -if "%OS%" == "Windows_NT" set DIRNAME=%~dp0% - -set HOME=%DIRNAME% -set _REDISCLIENT=%DIRNAME%redis-cli.exe - - -echo ================Redis config info ============================================= -echo Redis_HOME=$HOME -echo TIP:This shell script close the Redis instance listening on 6379! -echo =============================================================================== - - -cd /d "%HOME%" -echo @WORK_DIR@%HOME% -echo @C_CMD@ "%_REDISCLIENT% -p 6379 shutdown" -%_REDISCLIENT% -p 6379 shutdown -echo closing signal has been sent,stopping in background,WAIT... -timeout /t 2 /nobreak > nul -exit -- 2.16.6