redis是非关系型内存数据库 数据存储于内存中,内存读取速度非常快,如果只是简单的 key-value,内存不是瓶颈。一般情况下,hash 查找可以达到每秒数百万次的数量级。 (推荐学习:Redis视频教程)
采用单线程,避免了不必要的上下文切换和竞争条件
内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间
因为Redis的操作都非常快速——它的数据全部在内存里,完全不需要访问磁盘。至于并发,Redis 使用多路 I/O 复用技术,本身的并发效率不成问题。
当然,单个 Redis 进程没办法使用多核(任一时刻只能跑在一个 CPU 核心上),但是它本来就不是非常计算密集型的服务。如果单核性能不够用,可以多开几个进程。
Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。
另外,数据结构也帮了不少忙,Redis全程使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。
还有一点,Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。
string 类型,二进制安全的
hash 类型,是一个键值对的集合
List列表 底层是个链表
set 集合 无需的 通过hashtale实现
zset sort set 有序集合
更多Redis相关技术文章,请访问Redis数据库使用入门教程栏目进行学习!
以上是redis为什么性能好的详细内容。更多信息请关注PHP中文网其他相关文章!