Redis高速缓存

in Linux with 0 comment

Redis高速缓存

高速缓存利用内存保存数据,读写速度远超硬盘

告诉缓存可以减少I/O操作,降低I/O压力

Redis是Wmware开发的开源免费的KV型NiSql缓存产品,严格意义上说redis也是mosql数据库,只是他存储在内存中

Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;

MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活

Redis具有很好的性能,最多可以提供10万次/秒的读写

redis目前的集群方案分为以下几种:

1、RedisCluster:官方推荐,没有中心节点

没有中心节点:pxc集群就是没有中心节点,比如说数据库中有一部分节点挂掉了,剩余的节点如果超过半数,就需要选举出来一个主节点,其他节点同这个主节点同步数据,这个主节点不是中心节点,这个主节点只是说保存的数据时最新的,而且保存的数据最多,集群中剩余的那些节点就跟这个主节点同步数据,同步数据之后这个主节点就消失了,集群中就没有主节点了,so主节点不是中心节点

2、Codis:中间件产品,存在中心节点

3、Twemproxy:中间件产品,存在中心节点

RedisCluster

无中心节点,客户端与redis节点直连,不需要中间代理层

数据可以被分片存储

管理方便,后续可习性增加或摘除节点

image20200417233525345.png

Redis主从同步

1、master和slave节点相关问题

2、怎么预防redis集群的脑裂问题

3、redis集群为什么不配置负载均衡

redis集群的存储数据使用的是切分存储,也是说集群当中每一个redis节点中存储的数据都不相同,如果redis节点挂掉,那它存储的数据也就丢失了,为了避免这种情况,so要引入冗余节点,然后master和slave节点之间是实时同步的,当master节点挂掉以后,可以继续使用slave节点进行业务,这就是主从同步的好处

主从同步

redis集群中的数据库复制是通过主从同步来实现的

主节点(Master)把数据库分发给从节点(slave)

主从同步的好处在于高可用,Redis节点有冗余设计

Redis集群的高可用

redis集群中应该包含奇数个Master,至少应该有3个master

因为redis集群和pxc集群都有选举这个机制,当集群当中大部分的节点挂掉以后,也就是说超过一半数量的节点挂掉,那么剩余节点是无法进行选举组成一个新的集群的,如果采用两个节点的master构建一个集群,那如果一个节点挂点以后,剩余的节点数量没有超过一半,那么redis集群就不可用了,如果说采用3个节点的master集群,当一个节点挂掉以后,剩余两个节点还可以进行选举,组成一个新的集群,所以搭建redisCluster集群的时候,尽量创建奇数个节点

resdis集群中每一个Master都应该有slave

redisCluster存储数据是切分的,

image20200417235802093.png

为什么redis集群不配置负载均衡:因为采用的前后端分离的项目,后台系统使用的是spring架构spring程序里面就帮我们实现了负载均衡

配置RedsiCluster集群

docker pull redis

docker run -it -d --name redis1 -p 5001:6379 --net=net2 --ip 172.19.0.2 redis bash

docker exec -it redis1 bash

配置Redis节点

daemonize yes #以后台进程运行

cluster-enabled yes #开启集群

cluster-config-file nodes.conf #集群配置文件

cluster-node-timeout 15000 #超时时间

appendonly yes #开启AOF模式

目录:/usr/redis/redis.conf