Redis速览:一分钟掌握核心概念

发表时间: 2019-11-16 19:12

redis介绍

redis是一个nosql数据库,是完全开源免费的,是一个高性能的key-value数据库。

关系型数据库和关系型数据库

  • 关系型数据库有mysql,oralce等,数据是存放在硬盘中的,每次对数据进行操作都是io操作,而io操作的性能相对来说是比较差的;
  • 非关系型数据库有redis等,数据是存放在内存中的,如果redis一旦挂掉,数据可能会丢失,因此一般我们都会选择持久化机制; redis内存大小是有一个阈值限制的, 一旦超出阈值大小,会有一个淘汰策略;
  • jvm内置缓存框架;

redis应用场景

  1. Token令牌生成;
  2. 短信验证码code;
  3. 查询数据缓存 (减轻数据库压力);
  4. 实现计数器;(redis本身是一个单线程,可以保证原子性)
  5. 分布式锁;
  6. 延迟操作;(如果在一定时间范围内没有进行支付,关闭订单 实现方式对key进行监听)
  7. 分布式消息中间件;(分布/订阅 市面上基本上没有用到)

redis 环境安装

  1. https://redis.io/ redis官网地址

官网下载redis

  1. 上传redis包到linux服务器,并解压tar -zxvf redis-5.0.6.tar.gz
  2. cd redis-5.0.6
  3. 编译 make -j8
  4. make PREFIX=~/redis install

redis配置文件说明:

  1. 将redis设置为后台启动:daemonize yes
  2. 设置redis账号密码:requirepass 123456

./redis-cli -h ip -p port -a password

  1. 设置redis允许ip访问:bind 0.0.0.0
  2. redis默认情况下分为16个库:databases 16

redis线程模型

redis采用nio的io多路复用原则,也就是一个线程去维护多个redis客户端连接,从而提高并发效率和保证线程安全问题;底层是采用linux的epoll技术避免空轮训;

redis数据结构

string类型 hash类型 list类型 set类型 sort-set类型

string类型

string类型

redis客户端

hash类型

hash类型

redis客户端

list类型

list类型

redis客户端

set类型

set类型

redis客户端

redis中如何存放一个java对象

  1. 存放json对象: set key=user value={"id":"0001", "name":"zhangsan"}
    缺点:提取出的json对象需要转,比较麻烦;
  2. 存放二进制:eg:ssl-sso框架底层是使用二进制进行存储;