redis实现单机运行多端口、多实例

redis 程序运行过程并不会消耗太多的 CPU 和 IO 资源(主要消耗memory),如是在单台机器上如果只启用一个redis实例会造成资源浪费 。同时为了增加可用性,一般也不会在单机上只运行一个redis实例,本篇就介绍下,如何在单上运行多个 redis 实例(运行在不同端口)。

一、redis-server的安装

由于我现网的机器使用的是ubuntu系统,所以这里就以ubuntu为例,可以直接使用apt源安装redis-server

$ sudo apt-get install redis-server
安装完成后,可以使用dpkg命令查看各文件所在的路径:

 代码如下 复制代码
$ sudo dpkg -L redis-server
/.
/etc
/etc/default
/etc/default/redis-server
/etc/redis
/etc/redis/redis.conf
/etc/redis/sentinel.conf
/etc/init.d
/etc/init.d/redis-server
/etc/logrotate.d
/etc/logrotate.d/redis-server
/var
/var/log
/var/log/redis
/var/lib
/var/lib/redis
/usr
/usr/bin
/usr/bin/redis-server
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/redis-server.1.gz
/usr/share/doc
/usr/share/doc/redis-server
/usr/share/doc/redis-server/copyright
/usr/bin/redis-sentinel
/usr/share/doc/redis-server/changelog.Debian.gz

其中/usr/bin/redis-server为程序执行文件,/etc/redis/redis.conf为配置文件,/etc/init.d/redis-server为自启动文件 。单实例时,可以通过sudo /etc/init.d/redis-server start 启动。

二、运行多实例redis

默认的配置文件内容为:

 代码如下 复制代码
$ egrep -v ‘^#|^$‘ redis.conf
daemonize yes
pidfile /var/run/redis/redis-server.pid
port 6379
bind 127.0.0.1
timeout 0
tcp-keepalive 0
loglevel notice
logfile /var/log/redis/redis-server.log
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

具体配置文件中参数的意思,可以参看 redis配置文件详解 。假设我们现在要再启动两个redis实例,监听端口分别是6378、6376,只需要复制一份redis.conf配置文件并做下修改再通过redis-server启动即可。

以redis监听6378端口为例,只需要修改如下几部分,其他配置部他仍使用默认即可:

 代码如下 复制代码
pidfile /var/run/redis/redis-server6378.pid
port 6378
logfile /var/log/redis/redis-server6378.log
dir /opt/redis6378
vm-swap-file /opt/redis6378/redis.swap

其中dir存储路径也可以就用默位置/var/lib/redis ,不过dbfilename就不能再用默认的dump.rdb,可以使用dump6378.rdb。不过此处还是建议不同的redis实例存放在不同的路径。

修改完配置文件,通过下面的命令就可以启动新的redis实例:

 代码如下 复制代码
# sudo /usr/bin/redis-server /etc/redis/redis6378.conf 

不过这时启动后,通过ps命令查看会发现一个问题,原来的默认redis实例是以redis用户启动,而新的redis实例则会以root用启动。

 代码如下 复制代码
[email protected]:/var/lib/redis$ ps auxf|grep redis
yang      4296  0.0  0.0   8060   864 pts/0    S+   05:41   0:00      |       _ grep redis
redis     3837  0.0  0.0  35912  1492 ?        Ssl  05:22   0:00 /usr/bin/redis-server /etc/redis/redis.conf
root      4275  0.0  0.0  35912  1480 ?        Ssl  05:37   0:00 /usr/bin/redis-server /etc/redis/redis6378.conf

通过查看/etc/init.d/redis-server自启动文件会发现,自启动在start时使用的语句为:

 代码如下 复制代码
start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS

此处同样,可以依葫芦画瓢。复制sudo cp /etc/init.d/redis-server /etc/init.d/redis6378 ,复制完成后,修改以下几项:

 代码如下 复制代码
DAEMON_ARGS=/etc/redis/redis6378.conf
NAME=redis-server
DESC=redis6378-server
RUNDIR=/var/run/redis
PIDFILE=$RUNDIR/redis-server6378.pid

修改完后,也以redis6378配置文件启动就行了。再通过ps查看,发现同样也会是以redis用户运行的进程。想要再加6376、6375等多个实例,还按上面的方法操作就OK了。

下面是自己参考此文章之后测试的结果:

默认Redis程序安装在/usr/local/redis目录下;

配置文件:/usr/local/redis/redis.conf,该配置文件中配置的端口为默认端口:6379;

 代码如下 复制代码

Redis的启动命令路径:/usr/local/bin/redis-server。

可以指定端口启动多个Redis进程。

 代码如下 复制代码

#/usr/local/bin/redis-server
--port 6380 &    #启动6380端口的redis实例。

需要启动多个Redis实例:

一台Redis服务器,分成多个节点,每个节点分配一个端口(6380,6381…),默认端口是6379。
每个节点对应一个Redis配置文件,如: redis6380.conf、redis6381.conf

 代码如下 复制代码

#cp redis.confredis6380.conf

#vi redis6380.conf

pidfile : pidfile/var/run/redis/redis_6380.pid

port 6380

logfile : logfile/var/log/redis/redis_6380.log

rdbfile : dbfilenamedump_6380.rdb

(其他配置文件类似修改)

启动多个redis实例:

 代码如下 复制代码

#redis-server/usr/local/redis/redis6380.conf

#redis-server/usr/local/redis/redis6381.conf

时间: 2024-10-06 21:27:47

redis实现单机运行多端口、多实例的相关文章

Linux下实现MySQL多端口多实例运行

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 Linux下实现MySQL多端口多实例运行. 主要操作 创建/etc/my_multi.cnf文件 vi /etc/my_multi.cnf 内容如下(注意!如果你的MySQL是通过源代码方式安装,请根据实际情况更改mysqld和mysqladmin这两项,还有就是注意更改root的密码.) [mysqld_multi] mysqld = 

redis cluster单机伪分布式搭建--- 3主3从3哨兵集群

redis cluster单机伪分布式搭建--- 3主3从3哨兵集群 最近公司引进微服务框架,之前的一台redis的预存60G已经无法满足现在的260G业务需要,经过一番考虑搭建了这套集群 . 为了方便我就用一台服务器演示,生产环境中不建议这么做(没啥用),只为记录一下过程,至于精细化的配置需要在生产中自行研究 演示环境 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) redi

redis的单机安装与配置以及生产环境启动方案

简单介绍一下redis的单机安装与配置,方便自己记录安装步骤的同时方便他人获取知识. 首先,从官网下载最新版的(稳定版)的redis安装包.官网地址如下:https://redis.io/download 下载源码包后,redis需要编译安装.需要安装gcc和tcl,gcc用于编译tcl用于测试. 使用命令安装gcc,yum install gcc,一路选择yes,gcc就可以安装成功. 接下来安装tcl,首先获取tcl源码包(见百度云盘)或者使用命令:wget http://downloads

同一服务器上运行两个mysql实例

其实没那么复杂,两个mysql实例使用不同的目录存储,使用不同的端口访问,加载不同的配置文件即可实现. 假如有两个MYSQL   A和B MYSQL A为系统标准安装的RPM程序.存储在 /var/lib/mysql  配置文件为 /etc/my.cnf,这没什么特别的什么都不用改. 现在需要运行第二个MYSQL B,这时你就不能RPM了.使用源码包编译安装.指定安装位置为 /usr/local/mysqlb 主要编译参数如下: ./configue –prefix=/usr/local/mys

超详细Windows版本编译运行React Native官方实例UIExplorer项目(多图慎入)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50661981 本文出自:[江清清的博客] (一)前言 特别说明:群里很多童鞋都在说想Windows系统官方实例,但是官方提供的文档以及网上的例子都是OS X版本.今天特意给大家更新一下Windows版本运行官方 实例(UIExporler)全过程.俗话说学习一样新东西的时候,例如这边我们要学React Native的组件使用,那么最好的学习资料就是官方提供的材料了,

[C#]只能运行程序的一个实例

C#实现只能运行程序的一个实例(添加在窗体的Load事件中) 1. 根据进行名限制只能运行程序的一个实例 System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess(); System.Diagnostics.Process[] processList = System.Diagnostics.Process.GetProcessesByName(process.ProcessName); 

centOS 安装Redis并开启对应的端口服务

1,安装CentOS 7,安装时记住勾选web服务器或者其他功能较全的工具,否则连最基本的ifconfig都用不了 2,新装的看看/etc/sysconfig/ 下有没有iptables,看看service iptables start 能不能正常启动,如果不能启动则用root用户,yum -install iptables 进行防火墙安装 3,安装好后,要让外面访问进来有两种方式:1,关闭防火墙 chkconfig iptables off(重启后生效) 2,开放端口访问权限 vi /etc/

计算机必知必会:进程process与线程thread 进程定义为一个正在运行的程序的实例

http://www.nowamagic.net/librarys/veda/detail/1741进程和线程这对概念的理解也是很难的,至今网络上可查的资料对其的理解出入都挺大,在不同的操作系统中,如linux和windows中,其概念和实现都是有出入的.因此,我在这里结合我自己的理解谈下这两个概念,讲的都是一般性的概念,并且主要是基以WINDOWS的. 一般将进程定义为一个正在运行的程序的实例.我们在任务管理器重所看到的每一项,就可以理解为一个进程,每个进程都有一个地址空间,这个地址空间里有可

Redis(Windows安装方法与Java调用实例 & 配置文件参数说明 & Java使用Redis所用Jar包 & Redis与Memcached的区别)

Windows下Redis的安装使用 0.前言 因为是初次使用,所以是在windows下进行安装和使用,参考了几篇博客,下面整理一下 1.安装Redis 官方网站:http://redis.io/ 官方下载:http://redis.io/download 可以根据需要下载不同版本 windows版:https://github.com/MSOpenTech/redis github的资源可以ZIP直接下载的(这个是给不知道的同学友情提示下) 下载完成后 可以右键解压到 某个硬盘下 比如D:\R