转载

【Linux】redis安装

Redis的安装及集群配置官方下载地址

Redis的安装

Redis是c语言开发的,安装需要c语言的编译环境,如果没有gcc需要在线安装: yum install gcc-c++
安装步骤:

  • 第一步:Redis的源码包上传到Linux
  • 第二步:解压缩: tar -xvf redis-3.0.0.tar.gz -C /usr/local
  • 第三步:编译 进入redis源码目录: make
  • 第四步:安装: make install PREFIX=/webDep/redis-5.0.5

PREFIX参数指定redis的安装目录,一般软件安装到/usr目录下

Redis的启动:- 前端启动:在redis的安装目录下直接启动redis-server

[root@localhost bin]# ./redis-server

  • 后台启动:
    把 /root/redis-3.0.0/redis.conf 复制到 /usr/local/redis/bin 目录下 cp redis.conf /usr/local/redis/bin/
    修改 redis.conf 文件 设置 daemonize yes
    启动时添加配置文件 ./redis-server redis.conf
    ``- 关闭:[root@localhost bin]# ./redis-cli shutdown`
    设置密码 requirepass 123456

登陆验证:./redis-cli -h 127.0.0.1 -p 6379
如果设置了密码:auth 密码
查看密码:config get requirepass

开机自启动
[root@iZwz96ctwpabqlp3czvpr4Z redis-5.0.5]# find / -name redis_init_script
/webDep/redis-5.0.5/utils/redis_init_script
[root@iZwz96ctwpabqlp3czvpr4Z redis-5.0.5]# cp /webDep/redis-5.0.5/utils/redis_init_script /etc/init.d/
[root@iZwz96ctwpabqlp3czvpr4Z redis-5.0.5]# mv redis_initscript redis
[root@iZwz96ctwpabqlp3czvpr4Z redis-5.0.5]# vi redis
在脚本的第一行后面添加: #chkconfig: 2345 80 90 #注册服务是用到
根据自己安装的目录修改以下参数
REDISPORT=6379 #端口
EXEC=/usr/local/bin/redis-server #启动服务的命令路径
CLIEXEC=/usr/local/bin/redis-cli #客户端路径
PIDFILE=/var/run/redis
${REDISPORT}.pid #记录pid(进程id)文件路径
CONF="/etc/redis/${REDISPORT}.conf" #配置文件路径
$EXEC $CONF & #“&”作用是将服务转到后面运行

注册成服务
[root@iZwz96ctwpabqlp3czvpr4Z redis-5.0.5]# chkconfig --add redis
[root@iZwz96ctwpabqlp3czvpr4Z redis-5.0.5]# chkconfig redis on
[root@iZwz96ctwpabqlp3czvpr4Z redis-5.0.5]#

停止redis出现下面的问题的解决方法

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

如果有iptables防火墙
打开防火墙端口

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

#将更改进行保存
/etc/rc.d/init.d/iptables save

#重启防火墙以便改动生效:(或者直接重启系统)

/etc/init.d/iptables restart

Redis daemonize介绍
1、daemonize介绍
A、redis.conf配置文件中daemonize守护线程,默认是NO。
B、daemonize是用来指定redis是否要用守护线程的方式启动。
2、daemonize 设置yes或者no区别
daemonize:yes:redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。
daemonize:no: 当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。

Redis-cli连接- 默认连接localhost运行在6379端口的redis服务

[root@localhost bin]# ./redis-cli

  • 自定义连接端口
    [root@localhost bin]# ./redis-cli -h 192.168.25.153 -p 6379

-h:连接的服务器的地址
-p:服务的端口号

  • 远程连接:注释掉 redis.confbind 127.0.0.1 设置 protected-mode no 重启redis
  • 设置密码:配置文件中添加 requirepass 你的密码 重启redis

    Redis-cluster集群搭建由于容错机制,Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机,因此,Redis集群至少需要6台服务器。

2bba02ae-da6c-3747-987d-6a4a3851ec6f.jpg

由于个人只有一台服务器,只有搭建伪分布式:一台服务器运行6个redis实例,需要修改Redis的端口号7001-7006

  • 集群搭建环境

  • 使用Ruby脚本搭建集群,需要Ruby的运行环境,安装Ruby

yum install ruby

yum install rubygems

  1. 安装Ruby脚本运行使用的包

上传所需Ruby库文件redis-3.0.0.gem 安装执行: [root@localhost ~]# gem install redis-3.0.0.gem

  1. 进入 redis-3.0.0/src 会找到redis-trib.rb文件,为了方便可将其拷贝至下一步创建的 redis-cluster 文件夹中

  2. 搭建Redis集群

  3. 拷贝创建6个Redis实例,方便管理将刚复制的6个Redis拷贝至创建 redis-cluster 文件夹,每个实例运行在不同的端口。需要修改redis.conf配置文件:把 cluster-enabled yes 前的注释去掉,并且分别修改端口 port 7001~7006

  4. 创建开启集群的脚本:
    [root@localhost redis-cluster]# vim start-all.sh cd redis01 ./redis-server redis.conf cd .. cd redis02 ./redis-server redis.conf cd .. cd redis03 ./redis-server redis.conf cd .. cd redis04 ./redis-server redis.conf cd .. cd redis05 ./redis-server redis.conf cd .. cd redis06 ./redis-server redis.conf cd .. //修改脚本文件可执行权限 [root@localhost redis-cluster]# chmod u+x start-all.sh3. 执行脚本启动每个redis实例

  5. 使用ruby脚本搭建集群

./redis-trib.rb create --replicas 1 123.207.121.135:7001 123.207.121.135:7002 123.207.121.135:7003 123.207.121.135:7004 123.207.121.135:7005 123.207.121.135:7006

  1. 连接集群

[root@localhost redis-cluster]# redis01/redis-cli -p 7002 -c

  1. 关闭集群
    杀进程:ps -aux|grep redis kill -9 进程ID

踩坑解决问题- 重启服务器后重新启动ruby脚本报错

[ERR] Node 123.207.121.135:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

由于非正常关闭集群,需删除每个节点中的数据文件aof、rdb、nodes.conf,实在不行就只有重装一遍...

  • 强制停止redis快照导致,redis运行用户没有权限写rdb文件或者磁盘空间满了
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
    
    解决办法:修改配置文件 stop-writes-on-bgsave-error no
正文到此结束