redis攻防系列-安装与配置

发布于 2022-06-28  452 次阅读


Redis简介

Redis是一个开源的基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,提供了易扩展、高性能、具备数据持久性等功能。

redis典型应用场景

  • Session共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享
  • 缓存:数据查询、电商网站商品信息、新闻内容
  • 计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景·微博/微信社交场合:共同好友,粉丝数,关注,点赞评论等
  • 消息队列:ELK的日志缓存、部分业务的订阅发布系统
  • 地理位置:基于GEO(地理信息定位),实现摇一摇,附近的人,外卖等功能

redis选择版本注意点

安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么redis版本就不能低于3.2版本,由于这个特性是3.2版本才有的。另外需要注意的是,Redis约定次版本号(即第一个小数点后的数字)为偶数的版本是稳定版(如2.8版、3.0版),奇数版本是非稳定版(如2.7版、2.9版),生产环境下一般需要使用稳定版本。

redis安装与使用

下载安装包

wget http://download.redis.io/releases/redis-4.0.2.tar.gz

tar xzf redis-4.0.2.tar.gz
cd redis-4.0.2
make
make install

如果报错Failed to search for file: Cannot update read-only repo

那么就先执行

yum -y install gcc automake auto libtool make

来安装make

如果期间报错Error: Failed to download metadata for repo 'AppStream'

则需要执行一下命令换一下软件源

cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-

接着再重新执行上面命令就可以成功安装make了

接着再回到redis目录下编译

Redis没有其他外部依赖,安装过程很简单。编译后在Redis源代码目录的src文件夹中可以找到若干个可执行程序,安装完后,在/usr/local/bin目录中可以找到刚刚安装的redis可执行文件。

启动和停止Redis

启动Redis

直接启动

直接运行redis-server即可启动Redis

通过初始化脚本启动Redis

在Redis源代码目录的utils文件夹中有一个名为redis_init_script的初始化脚本文件。需要配置Redis的运行方式和持久化文件、日志文件的存储位置。步骤如下:

1、配置初始化脚本

首先将初始化脚本复制到/etc/init.d 目录中,其中端口号表示要让Redis监听的端口号,客户端通过该端口连接Redis。然后修改脚本第6行的REDISPORT变量的值为同样的端口号。


2、建立以下需要的文件夹


3、修改配置文件

首先将配置文件模板(redis-4.0.2/redis.conf)复制到/etc/redis 目录中,以端口号命名(如“6379.conf”),然后按照下表对其中的部分参数进行编辑。





现在也可以使用下面的命令来启动和关闭Redis了

/etc/init.d/redis_init_script start
/etc/init.d/redis_init_script stop

如果要让Redis随系统自动启动,这还需要对Redis初始化脚本进行简单修改,执行命令:

vim /etc/init.d/redis_init_script

在打开的redis初始化脚本文件头部第四行的位置,追加下面两句

# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database

添加完毕后进行保存,即可通过下面的命令将Redis加入系统启动项里了

chkconfig redis_init_script on

通过上面的操作后,以后也可以直接用下面的命令对Redis进行启动和关闭了,如下

service redis_6379 start
service redis_6379 stop

经过上面的部署操作后,系统重启,Redis也会随着系统自动启动,并且上面的步骤里也配置了Redis持久化,下次启动系统或Redis时,有缓存数据不丢失的好处。

停止Redis

考虑到 Redis 有可能正在将内存中的数据同步到硬盘中,强行终止 Redis 进程可能会导致数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:

redis-cli SHUTDOWN

当Redis收到SHUTDOWN命令后,会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出。
Redis可以妥善处理 SIGTERM信号,所以使用 kill Redis 进程的 PID也可以正常结束Redis,效果与发送SHUTDOWN命令一样。

redis主从设置

配置Redis主从注意事项

1、Redis Slave 也需要开启RDB持久化
2、配置与Master同样的连接密码 #因为后期slave会有提升为master的可能,Slave端切换master同步后会丢失之前的所有数据
3、配置主从前,redis只有配置文件以及命令执行文件,删除其他所有文件
4、slave服务器一般为read-only

一旦某个Slave成为一个master的slave,Redis Slave服务会清空当前redis服务器上的所有数据并将master的数据导入到自己的内存。
但是断开同步关系后不会删除当前已经同步过的数据,不然slave就没有数据了。

redis的主可以读写,redis从只可以读。

配置主从(命令方式或修改配置文件 二选一)

只需要在slave服务器上配置即可,master不需要配置。

命令方式配置主从

版本4(包括版本4)之前命令为slaveof,版本4之后为REPLICAOF
首先先在从服务器上进入redis命令行

redis-cli -h 你的服务器ip -p 你设置的端口

如果发现报错,只能通过127.0.0.1访问命令行

则需要进入/etc/redis/更改下配置。
将这句话给注释掉

同时还得将protected-mode 改为 no

接着重启服务器或者重启redis
重启后便可以连接了

这里我的主服务器IP为192.168.1.8,从服务器为192.168.1.9
进入192.168.1.9的redis命令行

slaveof 192.168.1.8 6379
CONFIG SET masterauth ''

接着测试下主从服务器之间的连通性
主服务器:

set test testok
get test

接着测试下从服务器

get test

配置成功。

修改配置文件方式配置主从

########### REPLICATION ###########
slaveof 10.0.0.31 6379
masterauth 123456

将其加入redis的配置文件,我的路径为/etc/redis/6379.conf
这里就不多演示了。

届ける言葉を今は育ててる
最后更新于 2022-06-28