Redis第二篇

1:Redis的主从问题

主从复制:就是把写入到主服务器上的数据自动的同步给从服务器
主从复制 最终解决的问题 就是读写分离
读写分离:就是将读放到从服务器上,写放到主服务器上
主从复制的时候 主服务器 能完成写,也能完成读的操作 读的时候是自动的路由到了从服务器 ;从服务器只能完成 读的操作

2:Redis的哨兵模式

在主从复制中,即使你解决了读的压力,上面的网络架构任然可能存在一个问题,就是主服务器宕机了,整个集群就瘫痪了,这个问题就成为集群的单点问题。
哨兵:站岗的 它监控的是主服务器的生死问题,如果监听到主服务器挂掉了,那么哨兵就会开始投票,如果投票的数量满足了我们我们预先设定的规则,那么就会自动选择一个从服务器作为新的主服务器,这个时候,整个集群也不至于崩溃。

3:Redis的集群模式

集群模式:就是多个主服务器,多个从服务器,要搭建redis集群至少需要6个物理机。

不论是主从还是哨兵,写的主服务器只有一个,毕竟一个服务器能够储存的资源是有限的,随着用户量的不断增加,这个时候可能主服务器不能够满足的们的要求,也需要拓容和减压,于是就产生Redis集群。

横向拓容,纵向减压

每一横排机器数据之和才是才是原来的所有的数据,也就是说每一台机器的数据是不一样的
每一个纵向上是一个主从关系,遵循主从复制。每个纵向上机器的数据是一致的

规划:使用一台服务器 开启 6个端口 最终将六台服务器的数据 放到自己的文件夹中

4:SpringBoot整合Redis

1:导包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2:编写配置文件

#Redis
#spring.redis.host=127.0.0.1
spring.redis.host=10.7.151.82
##Redis服务器连接端口
spring.redis.port=6379
##连接超时时间(毫秒)
spring.redis.timeout=10000
##Redis服务器连接密码(默认为空)
#spring.redis.password=123456
##连接池中的最大连接数
spring.redis.pool.max-active=10
##连接池中的最大空闲连接
spring.redis.pool.max-idle=10
spring.redis.pool.min-idle=0
##连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1

#给当前的服务取名字
spring.application.name=qf-shopping-redis

3:编写manager

@Component
public class RedisManager {

    @Autowired
    private StringRedisTemplate stringRedisTemplate=null;
    public void  write(String key,String value){
        stringRedisTemplate.opsForValue().set(key,value);
    }
    public void delete(String key){
        stringRedisTemplate.delete(key);
    }
    public Object read(String key){
         return  stringRedisTemplate.opsForValue().get(key);
    }
}

5:项目中的缓存逻辑以及Redis的使用

5:什么是缓存预热?
缓存预热:简单的说就是你的缓存服务一旦开始 那么立马就将要缓存的数据 全部放到Redis中去

5.1:项目中哪些地方需要缓存
1:产品的分类
2:广告
3:优秀商家
4:公告
5:质量技术标准参数

缓存的时候key是什么 value是什么
Key:是自定义的 但是一般不用明文 MD5(“goodType”) 值是:从数据库查询出来的这个对象的JSON格式

5.2:缓存的数据格式是怎样的

 都是JSON格式(方便转换)

5.3:前端页面请求数据的时候 缓存的逻辑是怎么样的

 1:前端打开页面------发送请求
                   1.1:查询redis是否存在 存在(直接返回)(缓存的穿透)
                   不存在
                   查询数据库
                   不存在(将这个查询出来的值设置成””  存储到Redis中去)
                   存在(存储到Redis 并返回数据)(数据库减压 == 加分布式锁)

5.4:缓存存在的问题
缓存穿透
缓存的雪崩(多个KEY 同时过期)

5.5:缓存的强一致性如何实现(TCC 先尝试然后在修改)
后台更改数据之前 首先让这个数据过期 再更改数据

5.6:缓存的最终一致性的实现
开启定时任务----每隔一段时间 就查询(MySQL)中需要缓存的内容 、然后覆盖Redis中的缓存内容

发布了38 篇原创文章 · 获赞 5 · 访问量 932

猜你喜欢

转载自blog.csdn.net/spring_zhangH/article/details/103813106