下面是个人关于对redis的一些了解,如果遗漏或错误,欢迎评论指出
Redis本质上一个key-value类型的内存数据库
Redis不仅可以保存String类型的数据,还能保存List类型(有序)和Set类型(无序)的数据,还能完成排序(SORT)等高级功能(redis提供五种数据类型:string,hash,list,set及zset(sorted set))
Redis的数据都需要放在内存中,相较于读磁盘中的数据,显然对内存的读写速度快的多,同时它又具有持久化到硬盘的功能.如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值.
Redis的持久化:RDB持久化 AOF持久化
RDB持久化:指在指定的时间间隔内将内存中的数据集快照写入磁盘
AOF持久化:AOF文件是可识别的纯文本.以日志的形式记录服务器所处理的每一个写操作,在redis服务器启动之初会读取该文件来重新构建数据库
Redis的使用场景:
会话缓存,全页缓存,队列,排行榜/计数器,发布/订阅
主要是做缓存处理和处理并发量大的时候
Redis的使用方式:
Spring-data-redis是spring-data大家族的一部分,提供了在spring应用中通过简单的配置访问redis服务,对redis底层开发包(Jedis,JRedis,andRjc)进行了高度封装,RedisTemplate提供了redis的各种操作.
第一种方式:使用redis模板
在工程中添加pom依赖,然后修改配置文件,springboot项目的yml文件中,在spring节点下添加redis配置,然后使用redisTemplate进行操作.
注入redis:@Autowired
private RedisTemplate
使用redis模板调用API操作,调用redisTemplate去redis里面查,当查出的数据为null时,就去数据库进行查询操作(Redis数据库中数据不存在),将刚刚从数据库中查询的数据,存入Redis(将从数据库中查到的数据set到redis中),通过设置过期时间,来解决redis中不常用的数据(redisTemplate.opsForValue(....,..,1,TimeUnit.Days))
第二种方式:注解
1 引入pom依赖
2 修改application.yml,在spring节点下添加redis配置
3 为启动类添加@EnableCaching开启缓存支持
4 在实现类的方法添加缓存注解,这样当此方法第一次运行,在缓存中没有找到对应的value和key,则将查询结果放入缓存
5 当我们对数据进行删改的时候,需要更新缓存,其实更新缓存也就是清除缓存,因为清除缓存后,用户再次调用查询方法,无法提取缓存,会重新查找数据库中的记录并放入缓存.
查:添加缓存的注解
@Cacheable(value=" ",key=" ")
删改:清理缓存的注解
@CacheEvict(value=" ",key=" ")
redisTemplate与注解开发的区别:
| redisTemplate | Spring Cache |
| 需要编码 | 注解配置即可 |
| 可以设置失效时间 | 不可以设置 |
根据业务具体需求来定,若redis中数据不需要清理,则使用Spring Cache,若定期清理redis中的数据,则使用redisTemplate,然后设置失效时间.
Memcache 与 Redis 的区别都有哪些?
(1)、存储方式不同,Memcache 是把数据全部存在内存中,数据不能超过内存的大小,断电后数据库会挂掉。
感恩于心,回报于行。 面试宝典系列-Java
http://www.itheima.com Copyright©2018 黑马程序员
438
Redis 有部分存在硬盘上,这样能保证数据的持久性。
(2)、数据支持的类型不同 memcahe 对数据类型支持相对简单,redis 有复杂的数据类型。
(3)、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。Redis 直接自己
构建了 VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
(4)、支持的 value 大小不一样 redis 最大可以达到 1GB,而 memcache 只有 1MB