Redis简介
温馨提示:理论是实践的基础
Redis是开源、C语言编写的非关系型数据库软件,具有“三高”。
高 数据并发读写速度,读取速度最高110000次/s,写入速度最高可达81000次/s。
高 存储与访问能力,比Mysql等关系型数据库软件,存储量更大,具备更强的接受访问能力。
高 扩展性与高可用性,支持数据备份等扩展功能。
常见应用场景
1、 排行榜类应用
2、 实时分析系统
3、 日志记录等等
案例
环境描述:
准备6台服务器搭建Redis集群:3台为master,3台为slave ;
服务器的IP地址为:192.168.2. 1/24—192.168.2.6/24 ;
查看集群状态,并进行简单操作验证数据同步。
Redis集群架构原理
Redis Cluster采用虚拟槽分区,将所有的数据根据算法映射到0~16384整数槽内 Redis Cluster是一个无中心的结构 每个节点都保存数据和整个集群的状态
集群角色
Master:Master之间分配slots
Slave:Slave向它指定的Master同步数据
集群节点使用的TCP端口
6379端口:用于客户端的连接
16379端口:用于群集总线,群集内部各个服务器之间通信
推荐步骤:
- 配置IP、防火墙策略,安装软件(实验环境暂关闭防火墙,setenforce宽容模式)
注意:若使用此脚本,必须保证软件版本及存放路径(上传到/usr目录),网卡配置文件格式匹配才行,否则,会报错。
不适用于如下,网卡配置文件格式(行数不一样,需要改脚本)
#!/bin/bash
#配置网卡
sed -i '2c BOOTPROTO=static' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '17c ONBOOT=yes' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '17a IPADDR=192.168.2.1' /etc/sysconfig/network-scripts/ifcfg-ens33
ifdown ens33;ifup ens33
#关闭防火墙
systemctl stop firewalld
#宽容模式
setenforce 0
#安装Redis
#解压到指定目录
tar xf /usr/redis-3.2.9.tar.gz -C /usr/src/
#进入解压目录
cd /usr/src/redis-3.2.9/
#编译安装
make && make install
#进入软件自带脚本文件目录,运行
cd /usr/src/redis-3.2.9/utils/
./install_server.sh
执行make && make install命令编译安装过程
安装成功如下图:
注意:上述是安装到默认路径/usr/src/redis-3.2.9/,在src下面创建redis-3.2.9目录,安装在redis-3.2.9目录里面
也可以指定安装路径,安装到/usr/src/目录里面,命令如下:
执行软件自带脚本,交互式操作,会有提示,一般按6次Enter确认即可!
执行完毕,显示汇总信息。
2.修改Redis配置文件
vim /etc/redis/6379.conf
重启
/etc/init.d/redis_6379 restart
修改以下几行内容:
62行 每台服务器改成本地真实IP地址
722、730、736行 前面#号删掉
813行 前面#号删掉,后面yes改成no(表示一台服务器故障,是让群集不可用吗?no表示不这样选择)
重启完成后查看,监听端口状态
- 安装运行环境依赖程序(挂载系统盘省略,只在其中任意一台安装即可)
安装gem命令工具,下载的Redis软件包提供(我放在/usr所以进入这个目录安装)
- 使用软件自带脚本创建群集
输入如图命令,各节点的服务器IP;
确定后,会进入交互操作,提示同意配置输入yes,输入yes即可!
完成后,如下图:
- 查看群集状态
[root@localhost src]# ./redis-trib.rb check 192.168.2.6:6379
显示结果和上图一样,证明搭建群集成功。 - 测试群集
(1)在192.168.2.1登录2.6的Redis服务器,存放数据meinv,键值是6,退出登录
(2)登录到2.5的Redis服务器,能获取到刚创建的meinv数据,进一步证明群集成功,数据同步也成功。
[root@localhost src]# redis-cli -h 192.168.2.6 -p 6379 -c
(3)基础操作
1、查看
查看当前数据库中所有键
查看当前数据库中所有键的数目
查看当前数据库中以m开头的键
查看当前数据库中以v开头后面包含2位的键
2、判断
判断键是否存在
3、删除
4、获取键值的类型
5、重命名
不检查目标key是否存在,直接改名
检查新名称是否存在,存在则不重命名(返回值是0,表示操作失败)
6、切换
多数据库间切换(从0号数据库切换到1号,0号不显示)
多数据库间移动数据
在0号数据库将v1移动到1号数据库
7、清除数据库内数据(提示数据库为空)
清空当前数据库的数据(只清空1号数据库数据)
查看0号数据库,数据依然存在
清空所有数据库的数据(当前服务器所有数据库都被清空)
报错:场景,使用ansible给三台主机安装Redis,其中两台报错,如下:
解决:分析,很明显,Redis是c语言编写,主机没有c语言环境,
1)执行命令安装
yum -y install gcc-c++
2)再到主机编译程序目录,执行编译,又报错
3)此时,不能用以前方法编译,因为之前有错误安装缓存,用下面命令编译
编译:make MALLOC=libc
安装:make install