现在很多码农都有接触到Redis,可是在使用Redis的时候也会遇到一些bug一些坑,虽然会遇到坑,但是redis 单线程能做到高性能。
Redis 的大部分操作都在内存中完成,并且采用了高效的数据结构,因此 Redis 瓶颈可能是机器的内存或者网络带宽,而并非 CPU,既然 CPU 不是瓶颈,那么自然就采用单线程的解决方案了。Redis 每种数据类型底层都做了优化,目的就是为了追求更快的速度。
Redis命令的处理是单线程的,Redis支持RDB和AOF两种持久化机制,持久化功能可以有效地避免数据丢失问题。Redis6.0引入了多线程,需要注意的是,多线程用于处理网络数据的读写和协议解析,Redis命令执行还是单线程的。
Redis支持两种方式的持久化,一种是RDB的方式,一种是AOF的方式。前者会根据指定的规则定时将内存中的数据存储在硬盘上,而后者在每次执行完命令后将命令记录下来,一般将两者结合使用。
Redis 线程不会阻塞在某一个特定的监听或已连接套接字上,也就是说,不会阻塞在某一个特定的客户端请求处理上。正因为此,Redis 可以同时和多个客户端连接并处理请求,从而提升并发性。
数据结构有优化:SDS封装了一个字符串,比如可以O(1)拿到长度,不用遍历.跳表,多级索引搜索数据。
领取专属 10元无门槛券
私享最新 技术干货