什么是Redis
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis的优缺点
优点:
- 读写性能优异, 因为readis 是内存数据库, 数据保存在内存中,速度快。
- 支持数据持久化, 支持 AOF 和 RDB 两种持久化方式
- 支持主从复制, 主机会自动将数据同步到从机, 可以进行读写分离。
- 数据结构丰富: 除了支持 string 类型的 value 外还支持string、 hash、 set、 sortedset、 list 等数据结构
缺点:
- Redis 不具备自动容错和恢复功能, 主机从机的宕机都会导致前端部分读写请求失败, 需要等待机器重启或者手动切换前端的 IP才能恢复。
- 主机宕机, 宕机前有部分数据未能及时同步到从机, 切换 IP后还会引入数据不一致的问题, 降低了系统的可用性。
- Redis 的主从复制采用全量复制, 复制过程中主机会 fork 出一个子进程对内存做一份快照, 并将子进程的内存快照保存为文件发送给从机, 这一过程需要确保主机有足够多的空余内存。 若快照文件较大, 对集群的服务能力会产生较大的影响, 而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行, 也就是网络波动都会造成主机和从机间的一次全量的数据复制, 这对实际的系统运营造成了不小的麻烦。
- Redis 较难支持在线扩容, 在集群容量达到上限时在线扩容会变得很复杂。 为避免这一问题, 运维人员在系统上线时必须确保有足够的空间, 这对资源造成了很大的浪费。
Redis主从概念
- ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构
- master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1
- 通过主从配置可以实现读写分离
- master和slave都是一个redis实例(redis服务)
主从配置
配置主
1. 查看当前主机的ip地址
ifconfig
2. 修改/etc/redis/redis.conf文件
sudo vi /etc/redis/redis.conf
bind 176.136.4.48 #绑定指定的ip地址
3. 重启redis服务
sudo service redis stop
redis-server redis.conf 此命令如果报错,则执行下面的命令:
sudo redis-server /etc/redis/redis.conf
配置从
1. 复制/etc/redis/redis.conf文件
sudo cp redis.conf ./slave.conf #复制到相同目录下
2. 修改/etc/redis/slave.conf文件
sudo vi /etc/redis/slave.conf
3. 编辑内容
bind 176.136.4.48 #注:此ip地址与主配置的地址一致
slaveof 176.136.4.48 6379 #slaveof <masterip> <masterport>
port 6378
4. 启动redis服务
sudo redis-server slave.conf
5. 查看主从关系
redis-cli -h 192.168.26.128 info Replication #从主查看
redis-cli -h 176.136.4.48 -p 6378 info Replication #从从查看
数据操作
在master和slave分别执⾏info命令,查看输出信息 进入主客户端
redis-cli -h 192.168.26.128 -p 6379
进入从的客户端
redis-cli -h 192.168.26.128 -p 6378
在master上写数据
set aaa aaa
在slave上读数据
get aaa