导图社区 Redis 远程字典服务
Redis 远程字典服务,redis是一个使用C语言写成的,开源的高性能key-value非关系缓存数据库。
这是一篇关于Mysql的思维导图,包含优化的八种方式:事务,锁定表,使用外键,使用索引等内容。
Nacos 服务注册中心(Nacos Server)介绍,包括Nacos的特性、两大组件、服务提供者、服务消费者四部分。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
Redis 远程字典服务
什么是redis?
1、redis是一个使用C语言写成的,开源的高性能key-value 非关系 缓存数据库。
2、它支持存储的value类型相对更多
包括:String(字符串)、list(链表)、set(集合)、zset(sorted set 有序集合)、hash(哈系类型)
一个字符串类型的值能存储最大容量是 512 M
子主题
3、读写速度快
redis数据都基于缓存的,所以速度很快,每秒可以处理超过10万次读写操作,是已知性能最快的Key-Value DB。
4、数据安全
Redis也可以写入磁盘中,保证数据的安全 不丢失,而且redis的操作是原子性的。 这样能保证数据的持久性。 redis的持久化机制有两种:a. RDB(默认) 和 AOF 机制。
5、redis是 单进程单线程
redis利用了队列技术将并发访问变成串行访问,消除了传统数据库串行控制的开销。
redis优势?
1、速度快
因为在数据存在内存中,类似于HashMap,HashMap的优势就是查询和操作的复杂度都很低。
2、支持丰富数据类型
3、支持事务
该操作都是原子性,就是对数据更改要么全部执行,要么全部不执行。
4、丰富的特性
可用于缓存,消息,按key设置过期时间,过期后自动删除。
5、Redis直接自己构建了 VM 机制,因为一般系统调用系统函数的话,会浪费一定时间去移动和请求。
reids 的持久机制是什么?
RDB(默认)
缺点:数据安全性低
AOP机制
优点:数据安全。
缺点:AOF 文件比 RDB 文件大,且恢复速度慢。
什么是缓存击穿、缓存穿透、缓存雪崩?
缓存击穿
概念
当大量的请求 同时查询一个key 时,此时key正好失效了,就会导致大量的请求会落到数据库,这就是缓存击穿。
查询缓存中失效的key
解决
1、加互斥锁
在并发的多个请求中,只有第一个请求线程能拿到锁,并执行数据库查询操作,其他的线程拿不到锁就阻塞等着,等到第一个线程将数据写到缓存后,直接走缓存。 可以用redis分布式锁实现。
2、热点数据不过期
直接将缓存设置为不过期,然后由定时任务去异步加载数据,更新缓存。 这种方式适合用于比较极端的场景,例如流量特别大的场景,使用时需要考虑业务能接受数据不一致的时间。 还有就是异常情况的处理,保证缓存可以定时刷新。
缓存穿透
特点
查询不存在的key
缓存雪崩
是指在我们设置缓存时,采用了 相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重挂掉。
解决方法
1、在原有的失效时间基础上增加一个随机值,使得过期时间分散一些。这样每一个过期时间的重复率就会降低,就很引起集体失效的事件。
2、加锁排队。加锁排队起到缓冲的作用,防止大量的请求同时操作数据库。但是它的缺点是增加了系统的响应时间,降低了系统的吞吐量,会牺牲一部分的用户体验。 当缓存未查到时,对要请求的key进行加锁,只允许一个线程去数据库中查,其他线程等候排队。
3、设置二级缓存。
Redis大key怎么处理?
通常我们会将含有较大的数据或含有大量成员、列表数的key称之为大Key。
例如: value 是 String类型,它的值超过512M; value是Zset、Hash、List、Set的集合类型时,它的成员数量超过一个1W个
当value是String时,可以使用序列化、压缩算法将key的大小控制在合理范围内,但是序列化和反序列化都会带来更多时间上的消耗。 或者将key进行拆分,
当value是list、set等集合类型时,根据预估数据规模来进行分片,不同的元素计算后分到不同的片。