Redis(NoSQL)
1.定义
NoSQL: (Not-Only SQL) 非关系型数据库,走内存而非磁盘,性能高
Redis:
- 数据之间没有必然联系
- 内部采用单线程机制
- 高性能(相对于SQL)
- 多数据类型支持:String,List,Hash,Set,zSet
- redis都是key:value格式,Key永远是String,value对应五种数据结构
Redis应用场景:
6. 热点数据加速查询
7. 及时信息查询
8. 实效信息
9. 分布式数据共享
10. 消息队列
2.数据类型
数据类型指的是Value部分,Key永远是字符串
2.1 String
- 存储单个数据,最简单最常用.
- 一个存储空间保存一个数据.
- 通常是字符串,如果字符串以整数形式展示可以作为数字操作.
- 最大存储容量:512MB
- 大V的粉丝显示等应用
2.2 Hash
(可以理解成一个key连着一个Map,但不是Map)
- 对一系列存储的数据进行编组,方便管理,典型应用:存储对象信息
- 一个存储空间保存多个键值对数据
- 可以灵活添加和删除对象属性,并不是为了大量存储.
- 底层使用哈希表结构实现数据存储,所以存储无序.
- 最大存储容量:2的(232-1)次方个键值对
- 商家,商品,数量的高频操作等应用
2.3List
- 底层是一个双链表,可以实现双向队列的操作.
- 存储需求:存储多个数据,并对数据进入存储空间的顺序有要求
- list有索引,但操作数据时经常以队列的形式
- 最大容量:2的(232-1)次方个元素
- 日志的合并
2.4 Set
- 存储大量的数据,在查询方面提高效率
- 能够保存大量的数据,搞笑的内部存储机制,便于查询
- 只存储键不存储值
- 应用于黑名单,白名单
交集,并集,差集
Jedis(IDEA连接redis)
基础连接
Jedis jedis = new Jedis("localhost", 6379);
jedis.set("name", "itheima"); jedis.get("name");
jedis.close();
连接池
持久化
由于Redis是基于内存的,所以需要持久化
RDB
优点:
- RDB是紧凑压缩的二进制文件,存储效率较高
- RDB存储的是redis的快照,所以恢复数据快,适合数据备份
- 应用:服务器每小时执行bgsave备份,拷贝到远程机器
缺点 - RDB无法做到实时持久化
- bgsave每次运行要执行fork操作创建子进程,所以会消耗性能
- redis的版本中RDB文件格式版本未统一,可能出现各版本数据格式不兼容
AOF
优点:
- AOF存储的是执行,且有效的语句,所以存储速度快.
- 相对RDB可以实时存储
- 资源消耗低
缺点: - 存储空间大
- 由于存储的是语句,所以恢复慢