Redis
1.关系型数据库
优点:
- 数据之间有关系,对数据库进行增删改查时非常方便
- 关系型数据库有事务操作,保证数据库的完整性
缺点:
- 数据之间的关系是由底层大量算法保证,大量算法会拉低系统运行速度及消耗系统资源
- 网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
- 海量数据的表中查询效率是非常低的
2.非关系型数据库
优点:
- 性能非常高,基于键值对,不需要经过SQL层的解析
- 海量数据查询速度快,数据存储在缓存之中
缺点:
- 数据和数据之间没有关系,不能一目了然
- 没有强大的事务保证数据的完整和安全
3.Redis的五种数据类型
- 字符串类型
- 散列类型
- 列表类型
- 集合类型
- 有序集合类型
4.字符串类型
String
是Redis最基本的类型,一个Key对应一个Value,Value不仅可以是String
,也可以是数字。String
是二进制安全的,意思是Redis的String
可以包含任何数据,比如jpg图片或者序列化的对象。String
的值最大能存储512MB。
应用场景:缓存功能、计数器、共享session、限速
5.hash(哈希)类型
hash类型很像一个关系型数据库的数据表,hash的Key是一个唯一值,Value部分是一个HashMap的结构
6.List类型
List是按照插入顺序排序的字符串链表,可以在头部和尾部插入新的元素(双向链表实现,两端添加元素的时间复杂度为O(1))。插入元素时,如果Key不存在,Redis会为该Key创建一个新的链表,如果链表中的所有元素都被移除,该Key也会从Redis中移除。
常见操作是用lpush
命令在List头部插入元素,用rpop
命令在List尾部取出数据
7.set类型
set
数据类型是一个集合(没有排序,不重复),可以对set
类型的数据进行添加、删除、判断是否存在等操作
set
集合不允许数据重复,如果添加的数据在set
中已存在,将只保留一份
set
类型提供了多个set
之间的聚合运算,如求交集、并集、补集,这些操作在Redis内部完成,效率很高
8.sorted set类型
在set
集合的基础上给集合中的每个元素关联了一个分数,往集合中插入元素时会自动根据这个分数排序
9.SpringBoot整合Redis
先导入pom依赖,然后在application.yml中添加相关配置,创建RedisTemplate
配置文件
10.核心类RedisTemplate
Spring封装了RedisTemplate
类来进行Redis的各种操作,他支持所有的Redis原生API
redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set
11.StringRedisTemplate
RedisTemplate
的子类- 数据不共通,
StringRedisTemplate
只能管理StringRedisTemplate
里面的数据,redisTemplate
只能管理redisTemplate
里面的数据 - SDR默认采用的序列化有两种,一种是
String
的序列化策略,一种是JDK的序列化策略 StringRedisTemplate
默认采用的是String
的序列化策略,保存的key和value都是采用该策略序列化并保存的RedisTemplate
默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化并保存的