Redis是什么?,优势在哪?
redis的个人学习笔记。
Redis是什么?
他它一个开源免费,遵守BSD协议,高性能的键值对数据库,支持多种数据结构,是业界流行的nosql数据库,被誉为数据结构服务器。
Redis有什么优势?
1、速度快;2、支持多种数据结构;3、功能丰富;4、服务间简单;5、客户端支持语言较多;6、支持持久化;7、主从复制、高可用、分布式;
1、为什么速度快?
首先是使用C语言实现,更贴近操作系统;
其次是数据都存在与内存中,操作数据的效率高;
再次是单线程,规避的线程切换的开销及规避多线程竞争问题;
最后是redis采用epoll,非阻塞I/O,不在网络上浪费时间;(多路复用)
epoll是什么?使用它是为了解决什么问题(瓶颈)?
epoll技术是多路复用方式中的一种,主要是解决redis顺序线性执行读写操作导致阻塞的问题。“多路”指的是多个网络连接,“复用”指的使用同一个线程。采用多路I/O复用技术可以让单线程高效的处理多个连接请求,目的是尽量减少网络I/O的时间消耗。
多路复用涉及如下几个点:
上下文切换、用户态复制到内核态(消耗cpu资源)
相比poll、select多路复用技术epoll的优势
总结:epoll:无并发限制,提效率(只关注活着的线程,不关注总数),无内存拷贝(采用了“共享内存”)。
2、支持多种数据结构
String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)
HyperLogLog(不精准去重计数器)、GEO(地理信息定位)
3、功能丰富
1、键过期设置
2、基于发布订阅的简单消息队列
3、通过LUA创建新命令,具有原子性
4、Pipeline(批处理)功能,减少网络开销
4、服务简单
代码优雅,花较少的时间就可以吃下
采用单线程模型,减少资源竞争、规高并发问题
不依赖操作系统类库,自己实现了epoll多路复用
5、客户端语言支持较多:如php、java、C等
6、支持持久化:RDB、AOF
7、主从复制、高可用、分布式
Redis使用场景是哪些?
缓存、排行榜(List/Zset)、计数器/限速器(统计播放数据/浏览量/在线人等)、好友关系(点赞/共同好友)、简单的消息队列(订阅发布/阻塞队列)、session服务器
Redis不适用哪些情景?
数量太大不适合使用(受限于硬件的内存资源)
数据访问频率太低不使用(没必要使用)