Redis 3.x 单节点和伪分布式安装


软件准备


1. redis安装

(1) 解压redis安装包

[hadoop@cdh soft]$ tar -zxvf redis-3.0.7.tar.gz

(2) 安装编译器

[hadoop@cdh soft]$ sudo yum install gcc tcl -y

(3) 执行编译

[hadoop@cdh soft]$ cd redis-3.0.7
[hadoop@cdh redis-3.0.7]$ make

# 如果报错:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
# 执行以下语句:
# make MALLOC=libc

(4) 安装到指定位置

[hadoop@cdh redis-3.0.7]$ make PREFIX=/home/hadoop/apps/redis-3.0.7 install

(5) 测试是否安装成功

[hadoop@cdh redis-3.0.7]$ make test
# 如果安装正确,在命令执行执行完后会有如下提示信息:
\o/ All tests passed without errors!

(6) 配置环境变量

# 注意,这个路径是第(4)步指定的那个路径
[hadoop@cdh redis-3.0.7]$ vim ~/.bash_profile
export REDIS_HOME=/home/hadoop/apps/redis-3.0.7
export PATH=$PATH:$REDIS_HOME/bin
[hadoop@cdh redis-3.0.7]$ source ~/.bash_profile

(7) 进入utils目录下,进一步完善安装配置

[hadoop@cdh redis-3.0.7]$ cd utils/
[hadoop@cdh utils]$ sudo ./install_server.sh
[sudo] password for hadoop: 
Welcome to the redis service installer
This script will help you easily set up a running redis server

# 如果不用默认配置,需要手动输入端口号,我们这里就用默认端口,按Enter
Please select the redis port for this instance: [6379] 
Selecting default: 6379
# 选择默认的配置文件的名称,按Enter,使用别的路径和名称需要手动指定
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
# 日志存放位置,处理同上
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
# 持久化数据目录,处理同上
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
# 指定redis的命令执行路径,需要手动指定到REDIS_HOME/bin/redis-server
Please select the redis executable path [] /home/hadoop/apps/redis-3.0.7/bin/redis-server
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /home/hadoop/apps/redis-3.0.7/bin/redis-server
Cli Executable : /home/hadoop/apps/redis-3.0.7/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort. 
# Enter
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

(8) 连接刚才安装的redis实例

# 直接使用 redis-cli 连接服务,默认连接端口号为6379的服务
[hadoop@cdh bin]$ redis-cli
127.0.0.1:6379>

redis 单节点安装成功!

2. redis伪分布式安装

redis伪分布式即在单节点上启动多个实例

(1) 通过上述的(7)步骤再启动两个redis

安装的时候指定端口号和命令执行路径,其余保持默认即可,这里演示另一个服务的安装并省略部分重复内容

[hadoop@cdh utils]$ sudo ./install_server.sh 
......
Please select the redis port for this instance: [6379] 6381
......
Please select the redis executable path [] /home/hadoop/apps/redis-3.0.7/bin/redis-server
......
Installation successful!

(2) 连接这3个服务

[hadoop@cdh ~]$ redis-cli -p 6379
127.0.0.1:6379>
[hadoop@cdh ~]$ redis-cli -p 6380
127.0.0.1:6380>
[hadoop@cdh ~]$ redis-cli -p 6381
127.0.0.1:6381>

redis 伪分布式安装成功!

3. 其他说明

(1) 停止redis服务

已连接服务的情况下可以直接在交互界面停止服务

127.0.0.1:6379> shutdown
not connected> quit
[hadoop@cdh ~]$

127.0.0.1:6380> shutdown
not connected> quit
[hadoop@cdh ~]$

127.0.0.1:6381> shutdown
not connected> quit
[hadoop@cdh ~]$

未连接的情况下执行以下命令:

[hadoop@cdh bin]$ redis-cli -p 6379 shutdown
[hadoop@cdh bin]$ redis-cli -p 6380 shutdown
[hadoop@cdh bin]$ redis-cli -p 6381 shutdown

(2) 启动redis服务

A. 通过指定配置文件启动服务

在安装redis服务的时候,默认指定了每个实例使用的配置文件

Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379

所以启动不同端口的实例,需要用不同的配置文件:

# 尽管配置了环境变量,但还是需要进入到REDIS_HOME/bin下来执行这些命令
# 否则报错:sudo: redis-server: command not found
[hadoop@cdh bin]$ sudo ./redis-server /etc/redis/6379.conf
[hadoop@cdh bin]$ sudo ./redis-server /etc/redis/6380.conf
[hadoop@cdh bin]$ sudo ./redis-server /etc/redis/6381.conf

看看配置文件中一些简单配置的作用:

# redis是否以守护进程模式运行。默认 no
daemonize yes
# redis的PID文件位置
pidfile /var/run/redis_6379.pid
# redis监听的端口号,默认6379
port 6379
# 存储日志的级别,可以为debug/verbose/notice/warning
loglevel notice
# 日志文件的位置
logfile /var/log/redis_6379.log
# 默认的数据库个数
databases 16
持久化数据的存放位置
dir /var/lib/redis/6379

B. 启动默认服务

如果不指定启动redis服务的时候使用哪个配置文件,将会使用redis编译目录,就是解压redis后的那个目录下的redis.conf配置文件,其中内容如下:

非守护进程方式启动
daemonize no
pidfile /var/run/redis.pid
# 使用6379端口
port 6379
loglevel notice
# 不存储日志
logfile ""
# 在哪个目录下启动,数据就存放在哪个目录下
dir ./

启动后的效果如下:

[hadoop@cdh ~]$ redis-server
8733:C 04 Jun 14:43:42.753 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
8733:M 04 Jun 14:43:42.754 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
8733:M 04 Jun 14:43:42.754 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
8733:M 04 Jun 14:43:42.754 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 8733
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

8733:M 04 Jun 14:43:42.756 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
8733:M 04 Jun 14:43:42.756 # Server started, Redis version 3.0.7
8733:M 04 Jun 14:43:42.756 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
8733:M 04 Jun 14:43:42.756 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
8733:M 04 Jun 14:43:42.756 * The server is now ready to accept connections on port 6379

直接按下Ctrl+Z关闭进程后,服务也就停止了:

^C8733:signal-handler (1528095027) Received SIGINT scheduling shutdown...
8733:M 04 Jun 14:50:27.615 # User requested shutdown...
8733:M 04 Jun 14:50:27.615 * Saving the final RDB snapshot before exiting.
8733:M 04 Jun 14:50:27.619 * DB saved on disk
8733:M 04 Jun 14:50:27.620 # Redis is now ready to exit, bye bye...
[hadoop@cdh ~]$ 

C. 通过初始化脚本来启动服务

在redis的编译目录的utils目录下,有一个名为redis_init_script的脚本文件,首先把这个文件复制为redis_6382,然后修改redis_6382这个文件:

[hadoop@cdh utils]$ cp redis_init_script redis_6382
[hadoop@cdh utils]$ vim redis_6382

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

# 端口改为6382
REDISPORT=6382
# 修改执行命令的路径:REDIS_HOME/bin/
EXEC=/home/hadoop/apps/redis-3.0.7/bin/redis-server
CLIEXEC=/home/hadoop/apps/redis-3.0.7/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in
    # ...... 这里的内容不用修改
esac

提前创建好/var/run/etc/redis这两个目录,我们这里不用再创建了,因为使用install_server.sh安装服务的时候就已经创建好了,但是需要创建/var/lib/redis/6382这个目录

然后创建一个配置文件,名为6382.conf,可以复制redis编译目录下的redis.conf中的内容,然后进行修改:

daemonize yes
pidfile /var/run/redis_6382.pid
port 6382
logfile /var/log/redis_6382.log
dir /var/lib/redis/6382
# 其余默认
......

把这个配置文件移动到/etc/redis/目录下,然后就可以使用这个脚本启动redis服务了:

[hadoop@cdh utils]$ sudo ./redis_6382 start
[sudo] password for hadoop: 
Starting Redis server...
[hadoop@cdh utils]$ redis-cli -p 6382
127.0.0.1:6382>

D. 3种方式的比较

  • 启动默认服务,最简单,但是什么配置也没有,测试redis安装正确与否使用
  • 使用redis_init_script,你需要设置端口和一些目录,然后还要手动创建这些目录,手动创建配置文件,还要让配置文件在正确的目录下,太麻烦,但是在生产环境中,一个节点安装一个服务,配置一次,一劳永逸,而且可以通过这个脚本配置redis服务开机自启动(感兴趣可以自己在网络上查找),所以推荐在生产环境使用这种方式
  • 指定配置文件启动服务,只需要编写一个配置文件,然后启动服务的时候指定配置文件的位置即可,如果觉得编写一个配置文件都麻烦的话,使用install_server.sh这个脚本,我们只要输入各种路径就行,脚本帮你生成配置文件,伪分布式使用这用方式会简单很多

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

Tomcat通过Redis实现session共享的完整部署记录

对于生产环境有了一定规模的tomcat集群业务来说,要实现session会话共享,比较稳妥的方式就是使用数据库持久化session.为什么要持久化session...

3.5K50
来自专栏xcywt

UNIX域协议(命名套接字)

这里主要介绍命名UNIX域套接字 1.什么是UNIX域套接字 Unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务通信的一种方式。是进程间通信(...

294100
来自专栏哎_小羊

记录Gerrit2.8.4环境迁移、安装、配置以及问题解决

前段时间,由于公司内部调整,需要将原gerrit系统中部分业务拆分迁移到新gerrit系统中,这里我就将整个环境迁移、环境搭建、环境配置、版本选择等做一下记录,...

58890
来自专栏WindCoder

tomcat基础小结

bin:可执行文件,包含启动脚本 conf:配置文件 lib:tomcat的依赖库 logs:日志 temp:临时文件 webapp:默认的应用部署目...

10610
来自专栏Netkiller

Tomcat 安全配置与性能优化

Tomcat 安全配置与性能优化 摘要 我的系列文档 Netkiller Architect 手札Netkiller Developer 手札Netkiller...

36160
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Keepalived和浮动IP设置高可用性HAProxy服务器

高可用性是系统设计的一个功能,允许应用程序在发生故障时自动重启或重新路由工作到另一个有能力的系统。在服务器方面,建立高可用性系统需要一些不同的技术。必须有一个可...

41130
来自专栏云计算

从零开始写一个运行在Kubernetes上的服务程序

这是一篇对于Go语言和Kubernetes新手来说再适合不过的文章了。文中详细介绍了从代码编写到用容器的方式在Kubernetes集群中发布,一步一步,一行一行...

240110
来自专栏Zchannel

搭建一个属于自己 可多平台同步的私有云盘 —— Seafile

78440
来自专栏程序员的SOD蜜

SqlServer双机热备技术实践笔记

SqlServer双机热备,大体上可以通过发布订阅,日志传送,数据库镜像来实现。 1,发布--订阅 是最早最简单的方案,但需要注意发布的时候,发布进程必须对快照...

1.1K70
来自专栏张戈的专栏

Linux系统防CC攻击自动拉黑IP增强版Shell脚本

最新更新:张戈博客已推出功能更强大的轻量级 CC 攻击防御脚本工具 CCKiller==>传送门 前天没事写了一个防 CC 攻击的 Shell 脚本,没想到这么...

86050

扫码关注云+社区

领取腾讯云代金券