1
0

1.redis数据结构原理.md 2.1 KB

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。