07月10, 2018

Centos安装配置Redis

redis版本

   选择redis 3.2.0版本

安装流程

1. 下载Redis

wget http://download.redis.io/releases/redis-3.2.0.tar.gz
// http://download.redis.io/releases/下有不同的redis版本,可自行选择下载

2. 解压Redis

tar -xzvf redis-3.2.0.tar.gz

3. 编译安装Redis

cd redis-3.2.0
make
//安装命令
make install

安装完成后,会在/usr/local/bin下生成几个可执行文件

[root@iruntest redis-3.2.0]# cd /usr/local/bin/
[root@iruntest bin]# ll
total 26356
//Redis性能测试工具 
-rwxr-xr-x 1 root root 5587905 Jul 10 10:05 redis-benchmark
//数据修复工具 
-rwxr-xr-x 1 root root   22225 Jul 10 10:05 redis-check-aof
-rwxr-xr-x 1 root root 7823756 Jul 10 10:05 redis-check-rdb
//Redis客户端操作工具
-rwxr-xr-x 1 root root 5714169 Jul 10 10:05 redis-cli
lrwxrwxrwx 1 root root      12 Jul 10 10:05 redis-sentinel -> redis-server  
//Redis服务器端启动程序 
-rwxr-xr-x 1 root root 7823756 Jul 10 10:05 redis-server

备注:
有的机器会出现类似以下错误:

make[1]: Entering directory `/root/redis/src'
You need tcl 8.5 or newer in order to run the Redis test
……

这是因为没有安装tcl导致,yum安装即可:

yum install tcl

4. 配置redis.conf

复制配置文件到/etc/目录:

cp redis.conf /etc/

修改配置文件:

在bind 127.0.0.1前加“#”将其注释掉
默认为保护模式,把 protected-mode yes 改为 protected-mode no
默认为不守护进程模式,把daemonize no 改为daemonize yes 使Redis进程在后台运行
 requirepass foobared前的“#”去掉,密码改为你想要设置的密码

配置文件的参数如下:

daemonize:是否以后台daemon方式运行
pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名)
dir:数据快照的保存目录(仅目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘。三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步

5. 启动/停止 redis

cd /usr/local/bin/
./redis-server /etc/redis.conf

//查看redis启动状态
ps -ef | grep redis
//启动时正常显示为
[root@iruntest bin]# ps -ef | grep redis
root     12061     1  0 10:22 ?        00:00:00 ./redis-server 0.0.0.0:6379   
root     12081 29739  0 10:22 pts/1    00:00:00 grep redis

//强制结束程序
//使用kill -9 进程的pid,强行终止Redis进程可能会导致redis持久化丢失
//正确停止redis的方式是向redis发送shutdown命令,方法为:(关闭默认端口)
cd /usr/local/bin
./redis-cli shutdown

备注:
实际启动时,遇到如下问题:

[root@iruntest bin]# ./redis-server /etc/redis.conf 
11950:M 10 Jul 10:19:09.410 # Creating Server TCP listening socket *:6366: unable to bind socket

分析解决:

redis的版本问题,高于3.0.1时会产生这个问题
1. 将IPv6的网卡进行关闭 (未实践)
2. 添加在redis.conf中添加 bind 0.0.0.0(已验证可行)

6. 开启自启动

  1. 将其添加到rc.local文件
    echo "/usr/local/bin/redis-server /etc/redis.conf" >>/etc/rc.local
    
  2. 添加为系统服务service ``` //1. 将utils/redis_init_script文件复制到/etc/init.d下,习惯将文件更名为redis(utils文件夹在源码目录下) cp utils/redis_init_script /etc/rc.d/init.d/redis
    //2. 编辑vi /etc/rc.d/init.d/redis文件 //2.1 在第二行添加

    chkconfig: 2345 80 90

    //2.2 修改redis服务端及客户端位置, 按实际需求修改 REDISPORT=6379 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis.pid CONF="/etc/redis.conf" //2.3 在CONF后面增加&,“&”:将服务转到后面运行的意思 $EXEC $CONF & //2.4 注册Redis服务 chkconfig --add redis

//通过以上配置,可使用service redis start 启动redis服务 service redis stop 停止服务

**备注:**    
   实际应用中,为redis设置了密码,启动redis正常,但停止服务时出现错误

[root@iruntest init.d]# service redis stop Stopping ... (error) NOAUTH Authentication required. Waiting for Redis to shutdown ... Waiting for Redis to shutdown ... Waiting for Redis to shutdown ...

可以使用ps -ef | grep redis 看到redis并未停止    
**解决办法:**    
   修改redis服务脚本,加入如下所示的红色授权信息即可:

vi /etc/init.d/redis //修改 $CLIEXEC -p $REDISPORT shutdown 为 $CLIEXEC -a "password" -p $REDISPORT shutdown

保存,使用service redis stop正常


#### 7. Redis的使用
##### 连接客户端
使用redis的安装目录下的reds客户端,即redis-cli(Redis Command Line Interface),它是Redis自带的基于命令行的Redis客户端;

redis-cli -h ip地址 -p 端口 set/get,使用set和get可以向redis设置数据、获取数据; del,删除指定key的内容; keys * ,查看当前库中所有的key值。 ```

本文链接:https://www.daguanren.cc/post/centos_install_redis.html

-- EOF --

Comments