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
这里就不多演示了。
Comments NOTHING