## Redis缓存框架基本介绍 Redis 是完全开源免费的,是一个高性能的key-value数据库,目前市面上主流的数据库 Redis、Memcache、Tair(淘宝自研发) Redis的官网:https://redis.io/ 内存数据库(nosql数据库)、mysql、sqlserver 关系数据库存放在硬盘中 查询实现io操作 非关系数据库 Redis 持久化机制 淘汰策略 Jvm内置缓存框架 ECACH os cache ## Redis的应用场景 1. Token令牌的生成 2. 短信验证码Code 3. 缓存查询数据 4. 网页计数器 5. 分布式锁 6. 延迟操作 ## Redis单线线程模型 首先Redis官方是没有windows版本的,只有redis版本 Redis的底层采用Nio中的多路IO复用的机制,能够非常好的支持这样的并发,从而保证线程安全问题; Redis单线程,也就是底层采用一个线程维护多个不同的客户端io操作。 但是Nio在不同的操作系统上实现的方式有所不同,在我们windows操作系统使用select实现轮训时间复杂度是为o(n),而且还存在空轮训的情况,效率非常低, 其次是默认对我们轮训的数据有一定限制,所以支持上万的tcp连接是非常难。 所以在linux操作系统采用epoll实现事件驱动回调,不会存在空轮训的情况,只对活跃的 socket连接实现主动回调这样在性能上有大大的提升,所以时间复杂度是为o(1) 注意:windows操作系统是没有epoll,只有linux系统才有epoll 所以为什么nginx、redis都能够非常高支持高并发,最终都是linux中的IO多路复用机制epoll Redis底层采用nio epoll实现 ## redis默认情况下分成16个库 **总结**:Redis实例默认建立了16个db,由于不支持自主进行数据库命名所以以dbX的方式命名。默认数据库数量可以修改配置文件的database值来设定。对于db正确的理解应为“命名空间”,多个应用程序不应使用同一个Redis不同库,而应一个应用程序对应一个Redis实例,不同的数据库可用于存储不同环境的数据。最后要注意,Redis集群下只有db0,不支持多db。