您的位置:首页 > 数据库 > Redis

linux redis安装源码包安装

2015-09-26 17:09 671 查看
1操作:http://www.osyunwei.com/archives/7225.html
2步骤清晰:/article/2245983.html
其他的:/article/5827739.html
有些用的:/article/4848642.html

##这个是空闲做
##redis : 配置文件改 daemon 密码 dhsize 存盘的概念 先从我们自己用到的先了解

查看版本
[root@localhost ~]# /usr/local/redis/src/redis-server --version redis根目录下

Redis server v=3.0.3 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=f6bac5c8ae9a4bde

[root@localhost ~]#

说明:

操作系统:CentOS

1、安装编译工具

yum install wget make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils patch perl

2、安装tcl组件包(安装Redis需要tcl支持) 有些系统自带安装了,rpm查询下。

yum install -y tcl

3、安装Redis
下载地址:http://download.redis.io/releases/

tar -zxvf redis-stable.tar.gz #解压

mv redis-stable/* /usr/local/redis #移动文件到安装目录 // 不能用这个方式: ./configure --prefix=/usr/local/redis
为什么?

cd /usr/local/redis #进入安装目录

make #编译

make install #安装

cd /usr/local/bin #查看是否有下面文件,如果没有,拷贝下面文件到/usr/local/bin目录

cd /usr/local/redis

mkdir -p /usr/local/bin

cp -p redis-server /usr/local/bin

cp -p redis-benchmark /usr/local/bin

cp -p redis-cli /usr/local/bin

cp -p redis-check-dump /usr/local/bin

cp -p redis-check-aof /usr/local/bin

ln -s /usr/local/redis/redis.conf /etc/redis.conf #添加配置文件软连接

vi /etc/redis.conf #编辑

daemonize yes #设置后台启动redis

:wq! #保存退出

然后编辑redis.conf配置文件(/etc/redis.conf),按需求做出适当调整,比如:

配置文件中的配置要顶头写,不要留空格

vi /etc/redis.conf

daemonize yes #默认为on。yes为转为守护进程,否则启动时会每隔5秒输出一行监控信息

save 900 1 #900秒内如果有一个key发生变化时,则将数据写入进镜像

maxmemory 256000000 #分配256M内存

将6379端口在防火墙中开放:

rhel系列

vi /etc/sysconfig/iptables#加入一行,需要具备其修改权限

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

/etc/init.d/iptables restart

查看防火墙状态:

/etc/init.d/iptables status

debian系列

ufw allow 6379

查看防火墙状态

ufw status

6379 ALLOW Anywhere

单独启动 Redis 服务:

第一步#cd /usr/local/redis/ // redis的安装目录 或者进入/usr/local/bin 下面执行也可以
第二步#src/redis-server redis.conf 或者 src/redis-server
最好用第一个

启动redis并指定redis的日志文件:

mkdir -p /var/log/redis/log //-p 表示没有父目录先建立父目录

/usr/local/bin/redis-server /etc/redis.conf 1>/var/log/redis/infolog.log 2>/var/log/redis/errlog.log & //
& 表示后台运行

1为标准输出,2为错误输出

加入自启动:

[plain] view
plaincopy





vi /etc/rc.local#加入

[plain] view
plaincopy



/usr/local/bin/redis-server /etc/redis.conf 1>/var/log/redis/infolog.log 2>/var/log/redis/errlog.log & // & 表示后台运行

客户端连接测试

[plain] view
plaincopy



redis-cli

redis 127.0.0.1:6379> set redisKey value

OK

redis 127.0.0.1:6379> get redisKey

"value"

redis 127.0.0.1:6379> del redisKey

(integer) 1

redis 127.0.0.1:6379> exists key

(integer) 0

停止redis服务:

src/redis-cli shutdown
//注意是redis-cli

keys *

取出当前匹配的所有key

> exists larry

(integer) 0

当前的key是否存在

del lv

删除当前key

expire

设置过期时间

> expire larry 10

(integer) 1

> move larry ad4

(integer) 1

移动larry键值对到ad4数据库

> persist lv

(integer) 1

移除当前key的过期时间

randomkey

随机返回一个key

rename

重命名key

type

返回值的数据类型

type testlist

list

> ping

PONG

测试连接是否还在

>echo name

"larry"

打印

> select ad4databank

OK

数据库切换

> quit

退出连接

> dbsize

(integer) 12

当前数据库中key的数量

> info

服务器基本信息

monitor

实时转储收到的请求

config get

获取服务器的参数配置

flushdb

清空当前数据库

flushall

清除所有数

六、遇到问题

我用java操作redis时,报过这样的错误:

(error) 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.

解决:

[plain] view
plaincopy



redis-cli

config set stop-writes-on-bgsave-error no

设置标准化启动、关闭脚本



设置自动化脚本:/article/8168714.html

脚本功能:
实现redis单机多实例情况下的正常启动、关闭、重启单个redis实例。完成系统标准服务的以下常用功能:
start|stop|status|restart
注:redis程序代码屏蔽了HUP信号,不支持在线重载配置文件,故去掉reload功能。
本脚本优化了redis停止和重启逻辑,解决原redis脚本关闭时会造成数据丢失问题。

脚本名称:
redis #在多实例里可以按实例端口,如:redis-6001命名,以区分不同实例

脚本用法: 设置开机自启动需要启动脚本
1.在/etc/rc.d/init.d/目录下新建redis文件,将脚本内容拷贝进去
2. chkconfig --add redis #注册服务
3. chkconfig --level 345 redis on #指定服务在3、4、5级别运行
4.本人redis程序安装在/usr/local/redis目录下,配置为/usr/local/redis/bin/redis.conf,如安装在其他目录,请自行修改
脚本参数:
redis -p [port] [start|stop|status|restart]
参数说明:
-p [port] : 指定redis实例的端口,用于多实例的服务器
start:启动指定端口的Redis服务
stop:停止指定端口的Redis服务
status:进程状态
restart:先关闭Redis服务,再启动Redis服务
注:不指定端口时,脚本默认指定启动6379端口的redis
用法实例:
service redis -p 6381 start #启动6381端口实例的redis
/etc/init.d/redis start #默认启动6379端口实例的redis

这两句不能少,否则加入服务时会报错。
#chkconfig: 2345 55 25

#description: Starts,stops and restart the redis-server





脚本内容:
#!/bin/bash

#chkconfig: 2345 55 25

#description: Starts,stops and restart the redis-server

#Ver:1.1

#Write by ND chengh(200808)

#usage: ./script_name -p [port] {start|stop|status|restart}
# Source function library.

. /etc/rc.d/init.d/functions
# Source networking configuration.

. /etc/sysconfig/network
# Check networking is up.

[ "$NETWORKING" = "no" ] && exit 0
RETVAL=0

REDIS_PORT=6379 #设置端口

PID=
if [ "$1" = "-p" ]; then

REDIS_PORT=$2

shift 2

fi
REDIS_DIR="/usr/local/redis" #这个和我的相同 ,redis的根目录

REDIS="${REDIS_DIR}/bin/redis-server" #我的
/usr/local/redis/src/redis-server 目录不一样,

PROG=$(basename $REDIS)
CONF="${REDIS_DIR}/bin/redis-${REDIS_PORT}.conf" #我的文件目录 /usr/local/redis/redis.conf
if [ ! -f $CONF ]; then

if [ -f "${REDIS_DIR}/bin/redis.conf" ];then #我的目录 /usr/local/redis/redis.conf

CONF="${REDIS_DIR}/bin/redis.conf" #我的目录 /usr/local/redis/redis.conf

else

echo -n $"$CONF not exist.";warning;echo

exit 1

fi

fi
PID_FILE=`grep "pidfile" ${CONF}|cut -d ' ' -f2`

PID_FILE=${PID_FILE:=/var/run/redis.pid}

LOCKFILE="/var/lock/subsys/redis-${REDIS_PORT}"
if [ ! -x $REDIS ]; then

echo -n $"$REDIS not exist.";warning;echo

exit 0

fi

start() {
echo -n $"Starting $PROG: "

$REDIS $CONF

RETVAL=$?

if [ $RETVAL -eq 0 ]; then

success;echo;touch $LOCKFILE

else

failure;echo

fi

return $RETVAL
}
stop() {
echo -n $"Stopping $PROG: "
if [ -f $PID_FILE ] ;then

read PID < "$PID_FILE"

else

failure;echo;

echo -n $"$PID_FILE not found.";failure;echo

return 1;

fi
if checkpid $PID; then

kill -TERM $PID >/dev/null 2>&1

RETVAL=$?

if [ $RETVAL -eq 0 ] ;then

success;echo

echo -n "Waiting for Redis to shutdown .."

while checkpid $PID;do

echo -n "."

sleep 1;

done

success;echo;rm -f $LOCKFILE

else

failure;echo

fi

else

echo -n $"Redis is dead and $PID_FILE exists.";failure;echo

RETVAL=7

fi

return $RETVAL
}
restart() {

stop

start

}
rhstatus() {

status -p ${PID_FILE} $PROG

}
hid_status() {

rhstatus >/dev/null 2>&1

}
case "$1" in

start)

hid_status && exit 0

start

;;

stop)

rhstatus || exit 0

stop

;;

restart)

restart

;;

status)

rhstatus

RETVAL=$?

;;

*)

echo $"Usage: $0 -p [port] {start|stop|status|restart}"

RETVAL=1

esac
exit $RETVAL

另外一个标准化启动的脚本: http://blog.sina.com.cn/s/blog_a0cc1c0b0101icfh.html

然后自己动手制作一个redis启动脚本方便管理
1、vim /etc/rc.d/init.d/redisd //和上面的那个名称不一样

#!/bin/sh
#chkconfig: 345 86 14
#description: Startup and shutdown script for Redis
# 好在总得配置文件在开头修改,相对简单些。

PROGDIR=/usr/redis #安装路径 这个需要修改
PROGNAME=redis-server # 这个我的应为 src/redis-server
DAEMON=$PROGDIR/$PROGNAME
CONFIG=/usr/redis.conf #这个我的为 /usr/local/redis/redis.conf
PIDFILE=/var/run/redis.pid
DESC="redis daemon"
SCRIPTNAME=/etc/rc.d/init.d/redisd

start()
{
if test -x $DAEMON
then
echo -e "Starting $DESC: $PROGNAME"
if $DAEMON $CONFIG
then
echo -e "OK"
else
echo -e "failed"
fi
else
echo -e "Couldn't find Redis Server ($DAEMON)"
fi
}

stop()
{
if test -e $PIDFILE
then
echo -e "Stopping $DESC: $PROGNAME"
if kill `cat $PIDFILE`
then
echo -e "OK"
else
echo -e "failed"
fi
else
echo -e "No Redis Server ($DAEMON) running"
fi
}

restart()
{
echo -e "Restarting $DESC: $PROGNAME"
stop
start
}

list()
{
ps aux | grep $PROGNAME
}

case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
list)
list
;;

*)
echo "Usage: $SCRIPTNAME {start|stop|restart|list}" >&2
exit 1
;;
esac
exit 0

2、增加服务并开机启动

cp ./redisd /etc/rc.d/init.d/redisd

chmod +x /etc/rc.d/init.d/redisd

chkconfig --add redisd

chkconfig --level 345 redisd on

chkconfig --list redisd

执行该脚本后,就可以开始start|stop|restart|list你的服务了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: