centOs 安装redis,集群

来源:互联网 发布:sql如何创建数据库 编辑:程序博客网 时间:2024/04/28 15:06
1、[root@localhost liu]# wget http://download.redis.io/redis-2.8.21.tar.gz
或者 wget http://download.redis.io/releases/redis-3.0.2.tar.gz

2、解压  tar -zxvf redis-stable.tar.gz  

3、查看是否安装了tcl    rpm -qa|grep tcl
      没有则进行安装 yum install -y tcl

4、进入 解压后的目录,make
      成功后,
      运行 make test 保证没有错误

5、运行make install
      会把redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server
      复制到usr/local/bin 目录下
6、复制配置文件到 /etc 目录下 cp redis.conf /etc




       5和 6 也可以替换为
{     这边就不make install 了,直接使用make好的文件
        usr/local/下创建 redis文件夹,复制可执行文件6个到目录bin,配置到etc
        [root@localhost local]# mkdir -p redis/{etc,bin,var}
        下面配置文件 路径则为新的路径
}

7、自己建立init.d脚本  进入 、/etc/init.d/目录,建立新的redis文件
内容如下
###########################
#chkconfig: 2345 10 90
#description: Start and Stop redis
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
REDIS_CLI=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/etc/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
while [ -x ${PIDFILE} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
##############################
保存,退出
    修改权限   chmod +x /etc/init.d/redis
    
    设置开机启动 chkconfig redis on  //这是失败的话,先把配置文件yes改为no,设置了开机启动,再改配置文件
    
      编辑配置文件 vim  redis.conf
 
daemonize no 改为 yes # 是否后台运行
port 6379 改为 12002  # 端口
dir ./ 改为 dir /data/redis_data 或者/www/redis_12002/  # 数据目录


    启动服务:service redis start
    停止服务:service redis stop
    配置防火墙打开对应的端口:
    vi /etc/sysconfig/iptables
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
     重启防火墙
service iptables restart



集群 主从配置
Redis主从复制中一个主服务可以有多个从服务,一个从服务可以有多个从服务。
 
配置比较简单,只需要更改redis.conf文件中的slaveof参数配置即可。
 
从服务器 slaveof参数的格式如:slaveof <masterip> <masterport>
 
如果master服务器设置有密码则需要配置masterauth参数。
 
masterauth参数格式如:masterauth <master-password>

例如
主服务器(192.168.10.16:6379) 配置文件
添加  
requirepass liubo
bind  192.168.10.16

从服务器(192.168.10.25:6379) 配置文件
slaveof 192.168.10.16 6379  // 主服务器的ip,端口
masterauth liubo
bind  192.168.10.25
从服务其的写功能是默认被关闭的,也不建议向从服务器写数据的。
可以在应用中将Redis数据库的客户端读写进行合理的分离。
以使用keepalive来实现主的故障转移功能

No route to host  可以暂时关闭防火墙  service iptables stop

客户端远程连接
用法:redis-cli [OPTIONS] [cmd [arg [arg ...]]]
 
-h <主机ip>,默认是127.0.0.1
 
-p <端口>,默认是6379
 
-a <密码>,如果redis加锁,需要传递密码
 
--help,显示帮助信息
 
通过对rendis-cli用法介绍,在101上连接103应该很简单:
 
[root@xsf001 ~]# redis-cli -h 192.168.1.103 -p 6379
redis 192.168.1.103:6379>
101上对103设置个个string user.1.name=zhangsan
redis 192.168.1.103:6379> set user.1.name zhangsan
OK
看到ok,表明设置成功了。然后直接在103上登陆,看能不能获取到这个值。


测试是否已启动
# /usr/local/bin/redis-cli ping
 
性能测试
# /usr/local/bin/redis-benchmark
 
关闭服务
# /usr/local/bin/redis-cli -p 6379 shutdown
 
强制刷新数据到磁盘【Redis默认是异步写入磁盘的】
# /usr/local/bin/redis-cli -p 6379 save


如果出现异常

异常一:

make[2]: cc: Command not found

异常原因:没有安装gcc

解决方案:yum install gcc-c++

 

异常二:

zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory

异常原因:一些编译依赖或原来编译遗留出现的问题

解决方案:make distclean。清理一下,然后再make。

 

 

在make成功以后,需要make test。在make test出现异常。

异常一:

couldn't execute "tclsh8.5": no such file or directory

异常原因:没有安装tcl

解决方案:yum install -y tcl


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

 

0 0
原创粉丝点击