参考网址:
https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247484359&idx=1&sn=0994c6246990b7ad42a2d3f294042316&chksm=ebd742c6dca0cbd0a826ace13f4d4eeff282052f4a97b31654ef1b3b32f991374f5c67a45ae9&token=680063238&lang=zh_CN#rd
https://zhuanlan.zhihu.com/p/42272979
1. Redis介绍
1.1 Redis概念
Redis是一个基于内存的数据结构存储,可以用作数据库、缓存和消息中间件。
1.2 Redis特点
(1)key-value数据结构;
(2)所有数据加载在内存中;
(3)性能出色,每秒可以处理超10万次读写操作;
(4)可以进行持久化;
(5)单线程
1.3 Redis优点(也可以理解为和memcached比较的优势)
(1)速度快;
(2)支持丰富的数据类型;
(3)支持持久化;
(4)丰富的特性,比如key可以设置过期时间。
1.4 Redis数据结构
5种基本数据结构:String、Hash、List、Set、SortedSet
2. 为什么要使用Redis
2.1 为什么要使用缓存
增加了缓存的请求处理过程:
(1)提高性能,缓存查询速度要远高于数据库查询速度;
(2)提高并发能力,缓存命中时无需请求数据库,这使得缓存承担了一部分请求;
2.2 为什么使用Redis(相比较Java内存中的Map而言)
Redis是一种基于内存的数据结构,常用作缓存。同样内存和key-value的数据结构,为什么不使用Java Map作缓存,而使用Redis呢?
(1)Java Map是本地缓存,多台分布式机器间不具备一致性;而Redis实现的是分布式缓存,多台机器共享一份缓存,具有一致性;
(2)Redis是专业做缓存的,可以用几十G来作缓存,支持持久化(数据可恢复)、缓存过期时间等特性;JVM缓存太大时容易崩溃,且不支持恢复。
3. Redis为什么快(Redis为什么采用单线程)
(1)Redis是基于内存的,内存读写已经非常快;
(2)单线程可以避免频繁上下文切换的开销,和避免因竞争锁导致的性能问题(多线程需要加锁解锁造成额外的开销);
(3)使用多I/O复用模型。(多路是指“多个网络连接”,复用是指“复用一个线程”)
- 第(3)点不是很理解