Redis缓存的并发问题

Redis一般用于做数据库的缓存,作用:

1. 提升性能
2. 为数据库挡住大量并发

基本使用流程:

1. 先从Redis查询数据
2. Redis存在就直接返回
3. Redis没有再查询数据库
4. 数据库有就保存到Redis中,返回数据
5. 数据库没有就返回空

Redis在高并发情况下可能出现的问题:

Redis在高并发的情况下可能出现的问题
问题 原因 解决方案
雪崩,大量请求在Redis中查询不到数据,直接访问数据库,导致数据库宕机

1. Redis服务器宕机或重启        

 2. 热点数据同时过期

1. 搭建Redis集群  

2. 将热点数据的过期时间设置为随机值,避免同时过期

击穿,大量的线程并发访问Redis,同时穿过redis缓存,直接访问数据库导致数据库压力过大而宕机 1.线程的高并发,前面的线程还没有将数据返回到Redis中,后面的线程就有已经到redis中查询了。 1.通过锁机制,对Redis操作进行同步DCL双检锁
穿透,大量的并发查询数据库中没有的数据,Redis中也没有,请求直接打到数据库中,导致数据库压力过大而宕机。 1.数据库中 没有数据,Redis中没有保存,直接查询数据库

1.将数据库中没有的数据,在Redis保存空数据,将空数据设置超时。

2.使用布隆过滤器,过滤掉不存在的数据

redis集群的搭建

Redis集群的分类:

1. 主从架构(主服务器负责写,从服务器负责读)
2. 哨兵架构(哨兵服务器负责监控主服务器的状态,主服务器如果宕机,将从服务器提升为主)
3. 集群架构(并发能力,可用性高于哨兵架构)

Redis缓存的并发问题_第1张图片

集群架构

将数据的key进行hash运算,获得保存数据的位置,该位置可能是集群中任意一台服务器

Redis缓存的并发问题_第2张图片

搭建伪集群的步骤:

真正的集群:每个Redis安装到不同服务器上

伪集群:在一台机器上安装多个Redis实例

至少需要多少服务器:

master的选举需要半数以上服务器投票支持,最少需要三台服务器

每台服务器需要有一个备份,最少需要六台服务器

1)新建redis-cluster目录,新建redis01~redis06六个子目录
cd /usr/local
mkdir redis-cluster
cd redis-cluster
mkdir redis01 
....
2)复制redis/src和redis.conf到redis01~redis06目录中
cd redis
cp -r src/* /usr/local/redis-cluster/redis01
cp reids.conf /usr/local/redis-cluster/redis01
....
3)修改redis.conf
daemonize yes
cluster-enabled yes
port 7001~~~~7006

4)在redis-cluster中创建启动脚本start.sh
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
5)启动redis实例
chmod +x start.sh
./start.sh
6)创建集群
/usr/local/redis/src/redis-cli --cluster create 192.168.223.223:7001 192.168.223.223:7002 192.168.223.223:7003 192.168.223.223:7004 192.168.223.223:7005 192.168.223.223:7006 --cluster-replicas 1
7)访问集群
/usr/local/redis/src/redis-cli -h 192.168.223.223 -c -p 7001

 JMeter 压力测试

一个Java开发的压力测试工具,能够模拟多线程并发访问

1)添加线程组

Redis缓存的并发问题_第3张图片

 2)设置线程数

Redis缓存的并发问题_第4张图片

3)给线程组添加http请求

Redis缓存的并发问题_第5张图片

4)配置http请求

Redis缓存的并发问题_第6张图片

5)设置监听结果树

 Redis缓存的并发问题_第7张图片

 6)点击启动按钮。进行测试

你可能感兴趣的:(redis缓存,java,redis,缓存,数据库)