IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

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)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

Memcache和Redis的区别是什么?    

辅导师兄 [郑州|结业弟子]UI-王贝贝


  1. 背景介绍


进行查询数据库的时候,怎么能让我们更快的获取到我们需要的数据。

减少查询数据库的次数

减少程序运行时间

减少接口请求时间

增加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:回答:修真院推荐的是给一个表做两个缓存,一个是列表查询,一个是详细查询,我还不太理解,通过后面做的项目才能理解吧。


评论

请您登录 后进行评论