本篇内容介绍了“怎么理解并掌握Redis”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value键值对数据库,并提供多种语言的API
Redis的使用环境
数据高并发的读写
海量数据的读写
对扩展性要求高的数据
Redis的功能
数据缓存
分布式锁
支持事务
支持消息队列
支持数据持久化
Redis为啥是单线程
因为Redis的瓶颈最有可能是机器内存或者网络带宽,而不是CPU。既然单线程容易实现,并且CPU不是瓶颈,那么自然就使用单线程的法案,另外需要知道的是,单线程并不代表慢,node.js也是高性能单线程
缓存穿透
指查询一个一定不存在的数据时,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透
解决:如果一个查询返回的数据为空,把这个空结果进行缓存,但他的过期时间会很短
Redis持久化
RDB:指定的时间间隔能够对你的数据进行快照存储
AOF:每一个受到的写命令都通过write函数追加到文件中
Redis实现分布式锁
Redis分布式锁,其实就是在系统里面,占用一个”位置“,其他程序也要占用这个“位置”时,成功继续执行,失败只能放弃或者稍后再试
Redis分布式锁不能解决超时的问题,如果时间超过了锁的超时时间就会出现问题
Redis的淘汰策略
volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
volatite-ttl:从已设置过期时间的数据集中挑选即将过期的数据淘汰
volatile-random:从已设置过期时间的数据集中任意选择数据淘汰
allkeys-lru:从数据集中选择最近最少使用的数据淘汰
allkeys-random:从数据集中任意选择数据淘汰
no-enviction:禁止驱逐数据
“怎么理解并掌握Redis”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!