Redis入门学习浅谈

1.Redis单线程问题。

单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性问题),即一个线程处理所有网络请求。其他模块仍用了多个线程。

2.为什么说Redis能够快速执行

2.1.绝大部分请求是纯碎的内存操作(非常快速)

2.2.采用单线程,避免了不必要的上下文切换和竞争条件。

2.3.非阻塞IO-IO多路复用。

3.Redis的内部实现

内部实现采用epoll,采用了epoll+自己实现的简单事件框架。epoll中的读,写,关闭,连接都转化成了事件,然后利用epoll的多路复用特性,不在IO上浪费一点时间,这3个条件不是相互独立的。特别是第一条,如果请求都是耗时的,采用单线程吞吐量及性能很差。Redis为特殊的场景选择了合适的技术方案。

4.Redis关于线程的安全问题。

Redis实际上是采用了线程封闭的观念,把任务封闭在一个线程,自然避免了线程安全的问题,不过对于需要依赖多个Redis操作的复合操作来说,依然需要锁,而且有可能是分布式锁。

5.使用Redis的一些好处

1.速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

2.支持丰富的数据类型,不如我们的String,int,sorted,list,set,hash

3.支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么是全部执行,要么全部不执行。

4.丰富的特性:可用于缓存,消息,按KEY设置过期时间,过期后将会自动删除。

猜你喜欢

转载自blog.csdn.net/lqzhang_11/article/details/81172021