Redis集合与SpringBoot
- 首先Redis在Java上的原生API是Jedis ,它的使用方式和Redis的命令行基本一致
- 需要注意的是,如果写事务的话,需要自行用tryCatch来阻拦运行时的报错,保证事务的原子性
- Redis通过Spring-data-redis来集合到SpringBoot中
- 【源码分析】:在
中,SpringFramwork有一个AutoConfig包,在里面能够找到所有导入Jar包的配置类
- 通过点击RedisAutoConfiguration里面能够进入Redis自动配置,再选择RedisProperties.class能够看到可以配置的字段和属性
- 在application.properties里面通过prefix+字段名=值的方式进行配置,即可完成对Redis的配置。
- 【源码分析】:在
自定义RedisTemplate
因为RedisAutoConfig中声明了,如果项目中有redisTemplate方法的话就会自动覆盖源方法(如下图)
从源码中能看到,源生的redisTemplate是<Object,Object>泛型的,在真正的企业级项目中,redisTemplate都是重写的,需要将泛型定义为<String, Object>避免转换类型的负担
并且,可以在Template中完成序列化。或其他更方便的操作
接下来可以写一个RedisUtils来简化redisTemplate中的调用方法,让代码中redisTemplate.opsForValue().set() 变成 redisUtils.set(),完成质的飞跃
具体见代码可查接口站
Redis.conf
1、配置文件 unit单元 对大小写不敏感!
2、导入,外部配置文件 例如java中的import,include
3、网络 如果远程访问需要改bind 的ip
4、通用GENERAL
守护进程的配置 用来控制程序关闭是否会终止redis的进程
5、RDB 快照(持久化相关)
save 900 1 900秒内有一次修改就进行快照
save 300 10 300秒内有10次修改就进行快照
save 60 1000 60秒内有1000次修改件就进行快照
快照生成的文件类型是.rdb 可以在配置文件中进行dir ./的位置配置
6、最大内存配置
配置可控制最大内存你是多少,如果超出内存的处理方式:
volatile-lru 对设置过期时间的key进行lru (默认值)
allkeys-lru 删除lru算法的key
allkeys-random 随机删除,
volatile-ttl 删除快过期的,
valatile-random 随机删除快过期的,
noeviction 不删除 直接报错
7、Append Only 模式 AOF配置
可以配置AOF模式的yes/no
可以配置持久化文件名字 / 配置持久化频率 (appendsync everysec)
Redis持久化
因为Redis是内存数据库,如果不进行持久化操作,那么所有保存的数据是会断电就会丢失数据的
RDB Redis DateBase 快照
触发机制
- 满足save规则时,生成rdb文件
- 执行flushall命令,生成rdb文件
- shutDown Redis , 生成rdb文件
恢复rdb文件
1、只需要将rdb文件放在redis启动目录就可以,redis启动时会自动检查dump.rdb文件,并自动恢复
2、查看需要存在的位置
正常情况,默认配置已经足够使用了
优点
1、适合大规模的数据回复
2、对数据的完整性要求不高
缺点
1、需要一段时间间隔进程操作!如果redis意外宕机了,这个最后一次修改数据就没有了!
2、在fork进程的时候,会占用一定的内存空间!
最后:一般情况正常使用RDB默认配置,并且将dump.rdb文件做好备份