介绍
Redis —— REmote DIctionaryServer,可以直接理解为远程字典服务。
redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统。和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括string、list、set、zset和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。在此基础上,Redis支持各种不同方式的排序。和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所以Memcache的应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化。
下载安装
mac:下安装一般使用homebrew,brew install redis 安装即可
一般部署在linux上,通过官网下载 https://redis.io/download 源码, 编译安装
当前最新版本是redis-3.2.6.tar.gz, 双号的为稳定版,单号的为非稳定版,如:2.9 为单号, 3.2为双号
通过命令行解压:tar zxvf redis-3.2.6.tar.gz
进入文件夹 :cd redis-3.2.6 , 编辑:make
编译完成后会有src 和 conf等文件夹,进入 src 文件夹,执行:make install 进行安装redis
安装完成后,可以启动redis了,执行 ./redis-server
基本配置,举例几个
主要是对redis的主配置文件修改,redis-3.2.6/redis.conf
1.后台进程运行
编辑redis.conf文件,找到daemonize,修改成yes
2.关闭启动服务
关闭 可以通过redis-cli端来操作:
redis-cli -h 127.0.0.1 -p 6379 shutdown
启动:redis-server ,后面可以跟上指定的配置文件
3.设置用户名密码
编辑redis.conf文件
设置过密码后,重启服务后,
通过客户端关闭服务:redis-cli -h 127.0.0.1 -p 6379 -a 密码写在这里 shutdown
客户端连接服务也需要带上密码
master配置了密码,slave如何配置
若master配置了密码则slave也要配置相应的密码参数否则无法进行正常复制的。
slave中配置文件内找到如下行,移除注释,修改密码即可
#masterauth mstpassword
4.连接服务器出错
5.设置最大内存
编辑redis.conf文件, maxmemory 256mb6.其他配置项等
daemonize:是否以后台daemon方式运行pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
save * *:保存快照的频率,第一个*表示多长时间(秒级),第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名,不包括目录)
dir:数据快照的保存目录(这个是目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
slaveof <masterip> <masterport> :主从配置,在redis-slave上配置master的ip port,即可。
系统服务
习惯了通过service启动一切服务,当然,这跟我生产环境部署有关,通常只分配给用于部署的账户操作service命令的权限。主要是为了确保系统安全。touch /etc/init.d/redis-server
chmod +x /etc/init.d/redis-server
vi /etc/init.d/redis-server
#!/bin/bash
#
# redis Startup script for redis processes
#
# author: niepeng
#
# processname: redis
// change your redis path and config.
redis_path="/usr/local/bin/redis-server"
redis_conf="/usr/local/etc/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:
service redis-server restart
service redis-server stop
service redis-server start