1 Redis简介
1.1 Redis是什么
Redis是一个开源的,使用ANSI C 编写的,高性能Key-Value的NoSQL数据库。
1.2 Redis特点
i. 基于内存。
ii. 可持久化数据。
iii. 具有丰富的数据结构类型,适应非关系型数据的存储需求。
iv. 支持绝大多数主流开发语言,如C、C++、Java、Python、R、JavaScript等。
v. 支持集群模式,高效、稳定。
1.3 数据模型
i. 键值对形式。
ii. Redis的数据结构类型,指的就是Redis值的结构类型,如下:
1.4 Redis作用
(1)本质是数据库,能存储数据
非关系型数据的读、写问题,是对MySQL等关系型数据库的补充。新浪微博就是使用Redis集群做数据库。
应用场景:微博、即时通讯、验证码、Token等。
(2)缓存数据
所谓缓存,就是将数据加载到内存中后直接使用,而不是每次都通过IO流从磁盘上读取。好处:读写效率高。
注意:Redis将数据直接存储在内存中,只有当内存空间不足时,将部分数据持久化到磁盘上。
2 Redis安装
2.1 说明
(1)在Linux上安装Redis。
(2)Redis官方只提供了源码,并没有提供经过编译之后的安装包。因此,安装Redis,要先编译、后安装。(即 源码安装方式)
2.2 redis安装步骤
第一步:上redis官网下载redis软件压缩包(redis-3.2.9.tar.gz)
第二步:将压缩包上传到/opt/soft
第三步:解压压缩包到/usr/redis(tar -zxvf redis-3.2.9.tar.gz -C /usr/redis)
第四步:预编译redis源码
[4.1]进入redis源码目录(cd /usr/redis/redis-3.2.9/deps/jemalloc)
[4.2]执行预编译脚本(./configure)
[4.3]在预编译过程中,会检测安装redis所需的相关依赖(xsltproc、gcc、cc、cl.exe),使用yum指令依次安装即可。
yum -y install xslproc
yum -y install gcc
yum -y install cc
yum -y install cl.exe
注意:预编译不是必须的步骤,它只是在检查编译过程中需要的环境是否满足。通常源码包中,都有一个可执行的configure脚本,这个脚本就是执行预编译的脚本。但是有一些源码包中,没有该文件,因此可以省略预编译步骤。
第五步:编译,进入/usr/redis/redis-3.2.9/src目录,执行make命令。
第六步:安装,进入/usr/redis/redis-3.2.9/src目录,执行make install命令。
注意:redis的客户端、服务端等可执行命令默认安装在/usr/local/bin目录下。
第七步:启动redis服务器,因为redis是基于配置文件启动的,所以在启动redis的时候需要指定配置文件,为了方便管理软件的配置文件,建议将配置文件都拷贝到/etc目录下。
拷贝命令:cp /usr/redis/redis-3.2.9/redis.conf /etc/ 启动redis服务命令:/usr/local/bin/redis-server /etc/redis.conf
第八步:启动redis客户端
启动命令:/usr/local/bin/redis-cli
到这里,redis就安装成功了。
2.3 redis.conf常用配置说明
查看和修改redis.conf配置文件,建议使用WinSCP编辑器打开,方便查找和修改。
配置 说明
#requirepass foobared 设置redis的登录密码
注意:[1] requirepass是关键字不能修改,只需去掉#号,
再将foobared修改为需要的密码即为设置密码。
[2] 在客户端使用auth命令,验证密码。
databases 16 设置redis数据库的个数
注意:[1] 默认16个数据库,寻址角标从0开始。默认连接db0。
[2] 客户端使用select命令,切换数据库。
port 637 指定redis的服务端口,默认6379
daemonize no 是否设置为守护线程,守护线程默认在后台运行,不会出现任何的提示信息。
yes设置为守护线程。
loglevel notice 设置reids服务的日志等级(debug、verbose、notice、warning)
logfile “” 设置redis日志输出目录,默认不输出日志到文件。
一般设置了就不再输出日志到控制台,可以使用tail命令,
实时输出日志文件内容,已达到实时监控的效果。(tail -f logFilePath)
dbfilename dump.rdb 指定rdb方式持久化文件名
dir ./ 指定持久化文件所在目录
更多配置信息可以参考《redis实战》书籍的1.4.2章节,配置redis。
2.4 将redis添加为系统服务
第一步:开启后台模式
修改配置文件,将daemonize改为yes
第二步:创建shell脚本(关键)
在/etc/init.d目录下创建redis脚本,因为linux系统服务都在/etc/init.d目录下,并且开启默认启动该目录下所有的服务(执行脚本文件)。如下:
###########################
#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
##判断redis是否启动了
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis.conf"
PASSWORD=$(cat $CONF|grep '^s*requirepass'|awk '{print $2}'|sed 's/"//g')
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 ..."
if [ -z $PASSWORD ]
then
$REDIS_CLI -p $REDISPORT shutdown
else
$REDIS_CLI -a $PASSWORD -p $REDISPORT shutdown
fi
#$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
##############################
第三步:添加shell脚本可执行权限
[root@node1 ~] chmod +x /etc/init.d/redis
第四步:添加Redis开机启动
[root@node1 ~] chkconfig redis on
第五步:查看系统服务(确认是否已经设置为系统服务)
[root@node1 ~] chkconfig
第六步:重启系统,直接登录客户端,测试系统服务启动是否成功(确认shell脚本编写是否正确)。
登录成功,到此完成添加redis为系统服务。