Redis的9个知识点

一.数据类型

 1.String,hash,list,set.zset

二.持久化机制

1.避免宕机后数据丢失,redis两种持久化机制:Rob 和Aof

(1)RDB:快照,容易造成数据丢失,他是根据key的更新和时间来决定持久化的

(2)AO:是日志的方式,当有更新操作的时候会写到日志到Aof文件不会造成数据丢失,但是回复数据比较慢,在生产环境中两种持久化方式都是开启,rdb是默认开启的,如果要开启aof我们可以通过修改redis.conf文件

三.常用命令

(1)String的get/set,list的lpush/rpush,keys,bgsave,

我们使用spring-data操作的redis

四.缓存击穿,穿透

缓存穿透:要查询的数据不存在,请求访问时,缓存和数据库都没有值,导致请求都会穿透到数据库,可能是业务不合理,数据误删,非法用户攻击,解决办法的话,对发发请求在网关进行校验,缓存空值和默认值,设置一个恰当的过期时间,还有就是使用布隆过滤器判断数据是否存在。

缓存雪崩:缓存的大量key失效过期,而差耍你的请求量特别大,直接命中数据库,造成数据库宕机的情况,对于大量数据过期,可以在固定过期时间上加一个随机时间,避免同时过期;Redis故障宕机,也能引起雪崩,可以搭建Redis集群

缓存击穿:和缓存雪崩有点相似,击穿针对热点key缓存,雪崩是指多个key,解决办法,可以缓存预热,提前加载热点数据,让数据别过期,再有就是缓存数据操作加锁,互斥,避免db压力

五.缓存一致性问题

无论是事务还是分布式系统的一致性问题,都分为:强一致性,弱一致性,最终一致性,其实要做到强一致性非常难,好多场景使用的都是最终一致性:

解决问题:

同步写:先更新数库,再更新redis,如果redis报异常数据库通过事务可以回滚,如果更新的过程中数据库完成了更新,redis还没更新,有其他线程来查询数据库,也会出现短暂的不一致。

延迟双删:如果对数据要求一致性比较强的时候我们可以使用双删来处理,更新数据之前删除redis中的数据,更新数据只有删除redis的数据,来保证数据的一致性;

六.内存淘汰策略

redis为了保证可用性,当内存不足的时候有响应的淘汰策略,基本原则就是最近最少使用,一个是从有过期时间的key中执行的策略,一个使用没有过期时间的key中执行,他还有随机淘汰但是没有什么价值一般不使用,我们可以通过修改redis.conf文件指定淘汰的策略

.noeviction:当内存使用到达阈值的使用,执行命令直接报错

.allkeys-lru:在所有的key中,优秀移除最近未使用的key

.volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key

.allkeys-random:在所有的key中,随机移除某个key

.volatile-random:在设置了过期时间的键空间中,随机移除某个key

.volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除

七.Redis调优

链接:

八.Redis分布式锁

Redis如何实现分布式锁

分布式锁的核心:加锁和释放锁,redis通过setnx加锁,通过超时间避免死锁,当我们执行业务完成之后就会释放锁(删除redis中的key,锁库存:lock商品id=null(可以存所锁的唯一id))

锁超时:会造成无锁状态:系统忙于不忙接口的响应是不一样的,我们无法设置一个恰当的超时时间,需要有现成去监控锁,对锁延时

锁误删:

Redis加锁和设置锁超时是两个命令,保证不了原子性需要通过lua脚本来保证原子性

Redisson框架实现分布式锁

===========================================

//初始化Redissson客户端

DistributedLocker.init("127.0.0.1","6379);

//加锁

DistributedLocker.lock("lock_key");

try{

//执行业务逻辑

//..

}finally{

//解锁

DistributedLocker.unlock("lock_key");

}

====================

九.Redis集群

Redis的集群模式有:主从模式   sentinel 哨兵模式    redis cluster模式

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值