Redis 是一个在内存中存储数据的中间件
用于作为数据库,用于作为数据缓存.
在分布式系统中能够大展拳脚~
1.Redis的特性介绍(优点)
1.1 在内存中存储数据
MySQL 主要是通过"表"的方式来存储组织数据的,"关系型数据库"
Redis 主要是通过“键值对" 的方式来存储组织数据的."非关系型数据库"key 都是 string
value 则可以是上述的这些数据结构~
1.2 进行编程性操作
针对 Redis 的操作,可以直接通过简单的交互式命令进行操作.
也可以通过一些脚本的方式,批量执行一些操作(可以带有一些逻辑)
1.3 可扩展
1.4 持久化
1.5 集群
Redis 作为一个分布式系统中的中间件,能够支持集群是很关键的,
这个水平扩展,类似于"分库分表
-个 Redis 能存储的数据是有限的(内存空间有限)引入多个主机,部署多个 Redis 节点.每个 Redis 存储数据的一部分
1.6 高可用
1.7 快!!!!!
why
1.Redis 数据在内存中,就比访问硬盘的数据库,要快很多~~
2. Redis 核心功能都是比较简单的逻辑~~ 核心功能都是比较简单的操作内存的数据结构~~
3.从网络角度上, Redis 使用了 IO 多路复用的方式(epoll)使用一个线程,管理很多个 socket ~~
4. Redis 使用的是单线程模型 (虽然更高版本的 Redis 引入了多线程)
这样的单线程模型,减少了不必要的线程之间的竞争开销~~【多线程提高效率的前提是,CPU 密集型的任务
使用多个线程可以充分的利用 CPU 多核资源
但是 Redis 的核心任务,主要就是操作内存的数据结构~~ 不会吃很多 CPU ~~】
5.【待考察的说法】Redis 是使用 C 语言开发的,所以就快~~
2. Redis的应用场景
如何解决上述问题???
1.想办法让负载均衡器,把同一个用户的请求始终打到同一个机器上 (不能轮询了,而是要通过 userld 之类的方式来分配机器)
2.把会话数据单独拎出来,放到一组独立的机器上存储(Redis)(应用程序重启了,会话不丢失)
3.Redis不能做的事情
存储大规模的数据