Redis的安装
文章目录
1. 下载到本地
我使用的Redis版本是6.2.6,下载地址:
https://download.redis.io/releases/redis-6.2.6.tar.gz。
使用的是centos7
系统。
直接下载到本地,然后使用xftp传输到centos系统中。
2. 安装
解压软件包到opt目录
将安装包解压到到opt
目录下,opt目录一般用来存放附加软件包。然后进入cd
进redis-6.2.6
目录中。
安装GCC和redis
1.安装GCC环境:
执行命令yum install gcc-c++
。
然后使用gcc -v
查看是否安装成功。
2.执行编译:
cd切换到redis解压目录下,执行编译
make
3.安装:
安装并指定安装目录:
make install PREFIX=/opt/module/redis6
安装完成会得到一个bin目录,里面有redis-server
、redis-cli
等可执行文件。
3. 修改配置文件
配置文件是redis.conf
,可以再创建一个目录:tmpconfig
,然后把redis.conf文件拷贝到该文件夹,以后使用这个拷贝的配置文件来启动redis,原来的配置文件就用来做备份。
执行mkdir tmpconfig
创建目录,然后执行cp redis.conf tmpconfig/
拷贝配置文件。接着cd tmpconfig
进入目录,编辑配置文件vi redis.conf
,我主要修改了以下配置:
# 设置为后台启动
daemonize yes
# 将pid文件的生成目录改到redis6/run目录下
pidfile /opt/module/redis6/run/redis_[端口号].pid
# 将端口号改为****
port [端口号]
4. 启动redis服务
# 切换到bin目录中
cd bin
# 启动redis服务
./redis-server ../tmpconfig/redis.conf
# 使用客户端连接redis服务
./redis-cli -p [端口号]
# 查看redis进程是否开启
ps -ef | grep redis
5. 关闭redis服务
# 先退出客户端连接
exit
# 关闭linux服务
./redis-cli -p [端口号] shutdown
6. 将redis配置到Linux系统服务
1.首先进入redis的配置文件redis.conf
,将daemonize
属性改为yes
:
可以在阅读模式下使用:
:/daemonize
查找到这个属性项。
2.将redis.conf
文件复制到/etc/redis/
目录下并改名为[端口号].conf
:
cp redis.conf /etc/redis/[端口号].conf
3.将utils目录下的redis_init_script
文件复制到/etc/init.d/
目录下,并命名为redis:
cp utils/redis_init_script /etc/init.d/redis
4.编辑上一步的redis文件,并按实际修改文件的前几行:
比如:
REDISPORT=[端口号]
AUTH="密码"
EXEC=/opt/module/redis6/bin/redis-server
CLIEXEC=/opt/module/redis6/bin/redis-cli
PIDFILE=/opt/module/redis6/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
5.设置文件执行权限:
chmod 777 /etc/init.d/redis
6.设置开机自启动:
# 开机启动
chkconfig redis on
# 开机关闭
chkconfig redis off
7.将/etc/rc.d/init.d/redis脚本添加到服务:
# 切换到/etc/rc.d/init.d/目录下
cd /etc/rc.d/init.d/
# 添加到系统服务
chkconfig --add redis
8.测试命令:
# 启动redis服务
service redis start
# 关闭redis服务
service redis stop
# 连接服务端
./redis-cli -p [端口号]
# 输入密码
auth [password]
9.错误处理:
如果出现以下错误:
/var/run/redis_6379.pid does not exist, process is not running
就将/var/run/
目录下的redis_6379.pid
文件删除再启动redis服务。
7. redis开启远程服务并设置密码
redis默认只支持本机访问,如果要远程访问,需要在配置文件中配置:
- 将redis.conf 里的
redis.conf
中的bind127.0.0.1
这一行注释掉,这样任意IP都可以访问; - 找到
protected-mode yes
改为protected-mode no
; - 为redis的连接加上密码:在
protected-mode
的下一行加上requirepass [password]
; - 关闭redis:
pkill redis
; - 重启redis;
8. 重新编辑redis的脚本
由于我们设置了密码,所以redis的脚本需要修改一下,编辑/etc/init.d/redis
文件,以下作为参考:
REDISPORT=[端口]
AUTH="密码"
EXEC=/opt/module/redis6/bin/redis-server
CLIEXEC=/opt/module/redis6/bin/redis-cli
PIDFILE=/opt/module/redis6/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.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
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT -a $AUTH shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
status)
PID=$(cat $PIDFILE)
if [ ! -x /proc/${PID} ]
then
echo 'Redis is not running'
else
echo "Redis is running ($PID)"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Please use start, stop,restart or status as first argument"
;;
esac
9. 基础知识补充
redis默认有16个数据库,配置文件redis.conf 中database项=16
select
数据库索引 :切换数据库
dbsize
:查看数据库存储数
使用redis-cli
连接其他redis服务.\redis-cli.exe -h 192.168.0.113 -p 6379 win10默认不用当前目录命令,因此前面添加.\。
flushdb
:清空当前库
flushall
:清空所有库
redis 为什么快?
redis是单线程的,官方表示,redis是基于内存操作,CPU不是性能瓶颈,机器的内存和网络带宽才是性能瓶颈,既然可以使用单线程来实现,就用了。为什么单线程还这么快?单线程并且基于内存,单线程没有多线程的切换开销,因此最快。并且redis内部采用IO多路复用技术实现, 减少IO的重复操作。