安装
下载好redis-2.8.12.tar.gz放在/usr/local下
tar zxvf redis-2.8.12.tar.gz 解压缩
cd /usr/local/redis-2.8.12
make
cd src
make install
默认的配置文件redis.conf,拷贝到固定的目录下
mkdis /etc/redis 系统配置存放于/etc下
cp redis.conf /etc/redis
运行
redis-server /etc/redis/redis.conf 启动服务端
测试
通过客户端命令redis-cli访问Redis
# redis-cli
redis> set name zlex
OK
redis> get name
"zlex"
关闭
redis-cli shutdown
调优
1./etc/sysctl.conf
需要修改/etc/sysctl.conf
末尾追加vm.overcommit_memory = 1
然后执行sysctl vm.overcommit_memory=1
2./proc/sys/vm/overcommit_memory
内存分配策略文件/proc/sys/vm/overcommit_memory
表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
表示内核允许分配超过所有物理内存和交换空间总和的内存
默认为0,如果内存情况比较紧张的话,设为1
3.redis.conf
daemonize yes #守护进程模式
save 60 1000 #当时间间隔超过60秒,或存储超过1000条记录时,进行持久化。
maxmemory 256mb #分配256MB内存
PS:切记,一定要设定maxmemmory,且配置大小要小于物理内存,留有足够的内存供系统使用。
集群配置
配置Mater-Slave,只需要在Slave上配置Master节点IP Port
例如Master IP为192.168.30.234 端口为6379,配置slave的redis.conf:
slaveof 192.168.30.234
PS:为了两个Redis Server可以互访,需要注释掉bind 127.0.0.1
依次启动Master Slave
可作简单测试,Master写,Slave读
主从备份
在从服务器上执行下列命令:
#备份
redis-cli save
#关闭
redis-cli shutdown
然后,拷贝数据目录下的rdb文件。
系统服务
习惯了通过service启动一切服务,新建文件并赋予权限:
touch /etc/init.d/redis-server
chmod +x /etc/init.d/redis-server
编辑/etc/init.d/redis-server,键入如下内容
#!/bin/bash
#
# redis Startup script for redis processes
#
# author: snowolf
#
# processname: redis
redis_path="/usr/local/bin/redis-server"
redis_conf="/etc/redis/redis.conf"
redis_pid="/var/run/redis.pid"
# Source function library.
. /etc/rc.d/init.d/functions
[ -x $redis_path ] || exit 0
RETVAL=0
prog="redis"
# Start daemons.
start() {
if [ -e $redis_pid -a ! -z $redis_pid ];then
echo $prog" already running...."
exit 1
fi
echo -n $"Starting $prog "
# Single instance for all caches
$redis_path $redis_conf
RETVAL=$?
[ $RETVAL -eq 0 ] && {
touch /var/lock/subsys/$prog
success $"$prog"
}
echo
return $RETVAL
}
# Stop daemons.
stop() {
echo -n $"Stopping $prog "
killproc -d 10 $redis_path
echo
[ $RETVAL = 0 ] && rm -f $redis_pid /var/lock/subsys/$prog
RETVAL=$?
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if test "x`pidof redis`" != x; then
stop
start
fi
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart}"
exit 1
esac
exit $RETVAL
# service redis-server restart
Stopping redis [失败]
Starting redis [确定]
# service redis-server status
redis (pid 14965) 正在运行...
很方便!