美文网首页
缓存Redis

缓存Redis

作者: air_b10f | 来源:发表于2019-01-04 22:43 被阅读0次

    一、缓存概述

    缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。

    1、缓存的原理

    将数据写入/读取速度更快的存储(设备);

    将数据缓存到离应用最近的位置;

    将数据缓存到离用户最近的位置。

    2、缓存分类

    在分布式系统中,缓存的应用非常广泛,从部署角度有以下几个方面的缓存应用。

    CDN缓存;

    反向代理缓存;

    分布式Cache;

    本地应用缓存;

    3、缓存媒介

    常用中间件:Varnish,Ngnix,Squid,Memcache,Redis,Ehcache等;

    缓存的内容:文件,数据,对象;

    缓存的介质:CPU,内存(本地,分布式),磁盘(本地,分布式)

    4、缓存设计

    缓存设计需要解决以下几个问题:

    缓存什么?

    哪些数据需要缓存:1.热点数据;2.静态资源。

    缓存的位置?

    CDN,反向代理,分布式缓存服务器,本机(内存,硬盘)

    如何缓存的问题?

    过期策略

    固定时间:比如指定缓存的时间是30分钟;

    相对时间:比如最近10分钟内没有访问的数据;

    同步机制

    实时写入;(推)

    异步刷新;(推拉)

    二、Redis

    1、搭建

    以docker的形式搭建

    docker run -di --name=mytest_redis -p 6379:6379 redis

    2、SpringDataRedis

    Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问

    redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate

    提供了redis各种操作。

    1)在pom.xml中引依赖

    <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-data-redis</artifactId>

    </dependency>

    2)修改application.yml,在spring节点下添加配置

    redis:

      host: 192.168.184.134

    3)在类中引入RedisTemplate

    @Autowired

    private RedisTemplate redisTemplate;

    /**

    * 根据ID查询实体

    * @param id

    * @return

    */

    public Hello findById(String id) {

    //从缓存中提取

    Hello hello=

    (Hello)redisTemplate.opsForValue().get("hello_"+id);

    // 如果缓存没有则到数据库查询并放入缓存

    if(hello==null) {

    hello = helloDao.findById(id).get();

    redisTemplate.opsForValue().set("hello_" + id, hello);

    }

    return Hello;

    }

    /**

    * 修改

    * @param hello

    */

    public void update(Hello hello) {

    redisTemplate.delete( "hello_" + hello.getId() );//删除缓存

    helloDao.save(hello);

    } /

    **

    * 删除

    * @param id

    */

    public void deleteById(String id) {

    redisTemplate.delete( "hello_" + id );//删除缓存

    helloDao.deleteById(id);

    }

    //缓存过期处理,如设置1天的过期时间

    redisTemplate.opsForValue().set("hello_" + id, hello,1,

    TimeUnit.DAYS);

    参考

    官网http://redisinaction.com/preview/chapter1.html

    https://blog.csdn.net/qq_26517369/article/details/78330694

    相关文章

      网友评论

          本文标题:缓存Redis

          本文链接:https://www.haomeiwen.com/subject/vhjlrqtx.html