缓存Redis

2019-01-04  本文已影响0人  air_b10f

一、缓存概述

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

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

上一篇下一篇

猜你喜欢

热点阅读