Redis 应用场景和问题

Dear 丶 2022-08-29 10:59 213阅读 0赞

一.redis 分布式锁:

并发的情况下,同时setNx命令,会不会有问题,Redis是单线程的,所以Redis服务本身没有并发接受命令问题.

redis分布式锁主要是靠redis的操作具有原子性和其中两个命令,lua脚本实现的.

1.setNx命令

在指定的 key 不存在时,为 key 设置指定的值,如果存在则返回0.反之返回1.

2.expire命令

用于设置 key 的过期时间,主要作用是防止抢占到锁的线程一直不释放锁,造成死锁

3.lua脚本

redis lua脚本支持将几个命令提交给redis执行,并且保证原子性.

可以用redisson框架实现,同时还有可重入分布式锁.

二.缓存穿透 + 缓存雪崩 + 缓存击穿

1.缓存穿透:

问题: 指的是查询一个不存在数据,结果缓存没有进行存储,导致每次查询都走数据库.

解决方法: 可以把不存在的数据,用一个特殊数字或者字符串代替值,存在redis里面.

比如存一个数字 -1

2.缓存雪崩:

问题: 缓存同一个时间进行缓存的key大量进行到期,或者redis宕机,导致所有的请求都去请求数据库了,数据库压力过大,导致系统崩溃

解决:

①可以采用高可用的redis系统集群,例如哨兵集群,cluster集群

②采用二级缓存,可以用本地系统缓存

③进行数据库查询层次的限流.

3.缓存击穿:

问题:当缓存失效的瞬间,大量并发请求去访问数据库数据,导致大量线程在重新重建缓存

解决:

①可以用redisson分布式锁,只能有一个线程去重新建立缓存,其他的进行等待.

②可以设置热点数据不进行过期

发表评论

表情:
评论列表 (有 0 条评论,213人围观)

还没有评论,来说两句吧...

相关阅读

    相关 redis应用场景

    毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构

    相关 Redis应用场景

    转载:[Redis应用场景][Redis] NoSQL主要用于解决以下几种问题   1.少量数据存储,高速读写访问。此类产品通过数据全部in-momery 的方式来保证高速

    相关 Redis 应用场景问题

    一.redis 分布式锁: 并发的情况下,同时setNx命令,会不会有问题,Redis是单线程的,所以Redis服务本身没有并发接受命令问题. redis分布式锁主要是

    相关 redis应用场景

    1、缓存系统 数据可以直接从cache(也就是redis)里面获取 2、计数器 微博的评论数,转发数等,可以用redis的increase方法实现;很多视屏播放系统也是可

    相关 redis应用场景

     毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结

    相关 Redis应用场景

    1.  MySql+Memcached架构的问题 Memcached采用客户端\-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式