Redis缓存

Redis是一个内存中的key-value数据库,常用于缓存和分布式锁。它支持多种数据类型和事务,并提供LRU、LFU等缓存淘汰策略。缓存击穿、穿透和雪崩是缓存系统常见问题,解决方案包括预加载缓存、设置过期时间、使用锁和多级缓存。Redis的持久化机制确保数据安全。
摘要由CSDN通过智能技术生成

1.Redis介绍

redis是一个key-value形式的非关系型数据库 默认端口号是6379

与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。

  好处:1.速度快,数据都是存在内存中

2.支持丰富的数据类型,如string,list,set,hash

3.支持事务,操作都是原子性的,对数据的更改要么全部执行,要不全部不执行

4.丰富的特性,可用作缓存,消息,按照key设置的过期时间,过期将自动删除

2.缓存淘汰策略

Redis服务器繁忙时,有大量信息要保存

 如果Redis服务器内存全满,再要往Redis中保存新的数据,就需要淘汰老数据,才能保存新数据

noeviction:返回错误**(默认)**
allkeys-random:所有数据中随机删除数据
volatile-random:有过期时间的数据库中随机删除数据
volatile-ttl:删除剩余有效时间最少的数据
allkeys-lru:所有数据中删除上次使用时间最久的数据
volatile-lru:有过期时间的数据中删除上次使用时间最久的数据
allkeys-lfu:所有数据中删除使用频率最少的
volatile-lfu:有过期时间的数据中删除使用频率最少的

3.缓存击穿

  突发热点访问时,热点数据在Redis缓存中不存在或已过期。大量的对热点数据的访问,都直接访问数据库,造成数据库访问压力短时激增造成故障

解决方案 :提前预设热门数据缓存

                  实时调整过期时间

                使用锁 缓存数据不存在时,把数据库数据放入缓存

4.缓存穿透


    数据在Redis缓存和数据库中都不存在。大量访问这种数据时,数据库频繁查找数据,造成压力过大产生故障

如:- 非正常数据访问 - 黑客攻击

解决方案: 对不存在的数据缓存空值

                 设置白名单 可访问的数据id作为偏移值存入bitmaps   访问时先检查bitmaps

                使用布隆过滤器

                对黑客攻击进行实时监控

5.缓存雪崩

大量key集中过期,数据库短时访问量激增

解决方案:多级缓存架构(Nginx-本地缓存(ehcache/guava)-Redis)

                  锁或队列对并发访问进行序列化

                 Key设置过期标志,对即将过期数据提前进行更新,自动续期

                 数据的过期时间用随机值,分散过期时间

6.Redis持久化

Redis将信息保存在内存
内存的特征就是一旦断电,所有信息都丢失,Redis来讲,所有数据丢失,就需要从数据库从新查询所有数据,这个是慢的
更有可能,Redis本身是有新数据的,还没有和数据库同步就断电了
所以Redis支持了持久化方案,在当前服务器将Redis中的数据保存在当地硬盘上

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值