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用启动。

 代码如下 复制代码
yang@crunchbang:/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-09-26 13:53:36

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

Redis从单机到集群,一步步教你环境部署以及使用

Redis作为缓存系统来说还是很有价值的,在大数据方向里,也是需要有缓存系统的.一般可以考虑tachyon或者redis,由于redis安装以及使用更简单,所以还是优先考虑了它.那么在一些场景下为了保证数据的可靠性,就需要采用集群的模式部署,因此本篇文章就基于Redis Cluster的背景讲解下部署以及后期的使用. 大致会包括下面的内容: Redis单机版的安装以及验证 Redis集群版的安装以及验证 使用图形化工具访问Redis 使用Jedis访问Redis 使用JedisCluster访问

Python实现端口复用实例代码_python

本文介绍Python实现端口复用实例如下所示: #coding=utf-8 import socket import sys import select import threading host='192.168.99.100' port=80 class Thread(threading.Thread): def __init__(self,buf,sockfd): threading.Thread.__init__(self) self.buf=buf self.sockfd=sockfd

单机运行速度比集群运行速度快,求解释这个这个应用运行在集群运行这么耗时间的原因

问题描述 由于处理数据的需求,我写了一个简单的spark应用处理数据,本想着处理速度应该有很大的提高,然而结果令我难以接受!1spark集群运行条件:3个work节点,Hdfs文件管理系统,数据输入2.5G左右,运行时间大约8分钟.spark应用程序如下:packageexamples;importjava.util.List;importjava.util.regex.Pattern;importorg.apache.hadoop.io.IntWritable;importorg.apache

《51单片机应用开发范例大全(第3版)》——2.1 基本器件实现端口扩展实例

2.1 基本器件实现端口扩展实例 目前,比较常用的串行口转换并行口的专用芯片有74LS165.CD4014等,并行口转换串行口的专用芯片有74LS164.CD4094等. 2.1.1 [实例20]用74LS165实现串口扩展并行输入口 一些低速的并行设备,如果直接和单片机连接,则浪费了宝贵的端口资源:如果先经过并行转换,然后以串行方式送入数据,则可以节省I/O端口.本设计就是通过74LS165,利用单片机串口,实现8位并行数据的输入. 1.74LS165与单片机接口电路设计74LS165有多种封

php实现的ping端口函数实例_php技巧

本文实例讲述了php实现的ping端口函数.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: <?php /*  * @author     xujiajay  * @date       2010-10-7  * @function   可以ping端口的php函数  *  */     error_reporting(E_ERROR);     header("content-Type: text/html; charset=utf-8");     set_

实例讲解yii2.0在php命令行中运行的步骤_php实例

Yii中的资源是和Web页面相关的文件,可为CSS文件,JavaScript文件,图片或视频等,资源放在Web可访问的目录下,直接被Web服务器调用. 有时候有些功能需要做到计划任务中去,因此就需要yii能用php命令去执行.yii2.0是支持php命令行运行的,操作方法如下: 在yii根目录下面有个"yii"文件(不是"yii.bat"),这个文件就是入口.然后"commands"目录下会默认有个"HelloController.ph

ThinkPHP自定义Redis处理SESSION的实现方法_php实例

本文实例讲述了ThinkPHP自定义Redis处理SESSION的实现方法.分享给大家供大家参考,具体如下: 日常中我们都会使用到session来保存用户登录的信息,常用的session的保存方式有:文件保存(默认).数据库保存.Redis保存.memcached等.这里主要记录一下在用ThinkPHP处理session用Redis来保存session的用法. 1.在配置项中定义: 'SESSION_TYPE' => 'Redis', //session保存类型 'SESSION_PREFIX'

Redis基础知识之——自定义封装单实例和普通类Redis

一.普通Redis实例化类: class MyRedis { private $redis; public function __construct($host = '121.41.88.209', $port = 63789) { $this->redis = new Redis(); $this->redis->connect($host, $port); } public function expire($key = null, $time = 0) { return $this-

如何通过Linux命令行使用和运行PHP脚本_php实例

下面通过图文并茂的方式给大家分享下通过Linux命令使用和运行PHP脚本. PHP是一个开源服务器端脚本语言,最初这三个字母代表的是"Personal Home Page",而现在则代表的是"PHP:Hypertext Preprocessor",它是个递归首字母缩写.它是一个跨平台脚本语言,深受C.C++和Java的影响. 在 Linux 命令行中运行 PHP 代码 PHP的语法和C.Java以及带有一些PHP特性的Perl变成语言中的语法十分相似,它当下大约正被