课堂课题:
Memcache和Redis的区别是什么?
关联任务:
任务五
直播时间:
2019-08-19 17:00:00
课堂内容:
视频链接:
PPT链接:
提交按钮:
小课堂内容格式
标题:
【修真院xx(职业)小课堂】课题名称
开场语:
大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX
(1)背景介绍:
背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。
(2)知识剖析:
讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。
(3)常见问题:
最少列出1个常见问题。
(4)解决方案:
写清楚常见问题的解决方案。
(5)编码实战:
尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。
(6)拓展思考:
知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。
(7)参考文献:
引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。
(8)更多讨论:
Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答
(9)鸣谢:
感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。
(10)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
背景介绍
进行查询数据库的时候,怎么能让我们更快的获取到我们需要的数据。
减少查询数据库的次数
减少程序运行时间
减少接口请求时间
增加TPS(吞吐量)
2.知识剖析
内存比硬盘快,所以将数据保存在内存中,redis官方:10万/S的查询量。
memcache单纯只能保存在内存中,断电,重启,死机,缓存的数据就没了。目前java里的客户端只有一个xmemcached还在更新
redis可以和memcache一样只保存在内存中,另一个重要的功能就是进行持久化,即保存缓存至硬盘中。
3常见问题:
用缓存能比查数据库快多少。
查询数据库的时间要看SQL语句的执行效率,可能比较快,1毫秒就查到,也可能是个慢查询,要好几秒。再加上代码执行的时间,会更长。但是用redis这些查询已经保存在缓存里的数据,在JAVA里完整执行查询的时间就是3毫秒左右。
4.编码实战
安装对应服务器软件
memcache添加依赖:客户端-xmemcached
redis添加依赖:客户端-jedis、整合-spring-data-redis
redis.clientsjedis2.10.2
xml配置:扫描注解、连接客户端、模板、缓存管理
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:cache="http://www.springframework.org/schema/cache" xmlns:c="http://www.springframework.org/schema/c"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
<!--启用注解-->
<cache:annotation-driven cache-manager="cacheManager"/>
<!--redis客户端连接参数-->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:hostName="127.0.0.1"
p:port="6379"/>
<!-- redis模板-->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory"/>
<!--redis管理器-->
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
factory-method="create" c:connection-factory-ref="jedisConnectionFactory"/>
</beans>
基本注解:@Cacheable 查或查与增、@CachePut 改、@CacheEvict 删
= = ListJobJob job.selectJobSelectivejob
5.拓展思考:
应该给什么加缓存?
只要一个查询在短时间能可能进行多次查询就可以加,比如一个网站的首页的内容,只要查询了数据库的数据,都应该保存时缓存。
6参考文献:
spring-data-redis官方文档
https://docs.spring.io/spring-data/redis/docs/2.1.10.RELEASE/reference/html/
7更多讨论:
Q1:提问人:一定要加缓存吗?
A1:回答:加缓存是做性能优化的一个很简单且有效的方法。
Q2: 提问人:用redis还是memcached?
A2:回答:用memcached,因为redis功能全,有持久化,用的人多。
Q3: 提问人:该怎么做缓存?
A3:回答:修真院推荐的是给一个表做两个缓存,一个是列表查询,一个是详细查询,我还不太理解,通过后面做的项目才能理解吧。