Redis是单线程的以及Redis为什么这么快

Redis 单进程单线程模型的基于内存的KV 数据库由C语言编写

Memcached 是单进程多线程的同样基于内存的 KV 数据库

1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);

2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;

3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

4、使用多路I/O复用模型,非阻塞IO;

5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求

---------------------

作者:徐刘根

来源:CSDN

原文:https://blog.csdn.net/xlgen157387/article/details/79470556

版权声明:本文为博主原创文章,转载请附上博文链接!


缓存使用

缓存预热

缓存穿透

持续高并发地请求某个不存在的数据,由于缓存没有保存该数据,所有的请求都会落到数据库上,对数据库造成很大压力,甚至导致数据库崩溃。

对策:

1. 将不存在的数据也缓存起来(其值为null)

2. 布隆过滤器

优势:

全量存储但是不存储元素本身,在某些对保密要求非常严格的场合有优势;

空间高效率;

插入/查询时间都是常数O(k),远远超过一般的算法;

劣势:

存在误算率(False Positive),随着存入的元素数量增加,误算率随之增加;

一般情况下不能从布隆过滤器中删除元素;

数组长度以及hash函数个数确定过程复杂;

你可能感兴趣的:(Redis是单线程的以及Redis为什么这么快)