学习笔记:JavaEE开发的颠覆者SpringBoot实战(八)数据缓存

1.spring缓存支持

spring定义了org.springframework.cache.CacheManager和org.springframework.cache.Cache接口用来同意不同的缓存技术。其中CacheManager是spring提供的各种缓存技术抽象接口,Cache接口包含缓存的各种操作

1.1 spring支持的CacheManager

CacheManager描述
SimpleCacheManager使用简单的collection来存储缓存,主要用来测试用途
ConcurentMapCacheManager使用concurrentMap来存储缓存
NoOpCacheManager仅测试用途,不会实际存储缓存
EhCacheCacheManager使用EhCache作为缓存技术
GuavaCacheManager使用Google Guava的GuavaCache作为缓存技术
HazelcastCacheManager使用Hazelcast作为缓存技术
JCacheCacheManager支持JCache(JSR-107)标准的实现作为缓存技术,如Apache Commons JCS
RedisCacheManager使用Redis作为缓存技术

注册

@Bean
public EhCcheCacheManager cacheManager(CacheManager ehCcheCacheManager){
    return new EhCcheCacheManager(ehCcheCacheManager);
}

1.2 声明式缓存注解

1.3 开启声明式缓存支持

@Configuration
@EnableCaching
public class AppConfig{

}

2.spring boot 的支持

spring boot 为我们自动配置了多个CacheManager的实现

2.1 缓存配置:

spring.cache.type= #可选generic,ehcache,hazelcast,infinispan,jcache,redis,guava,simple,none
spring.cache.cache-names = #程序启动时传教缓存名称
spring.cache.ehcache.config = #ehcache配置文件的地址
spring.cache.hazelcast.config = #hazelcast配置文件地址
spring.cache.infinispan.config = #infinispan配置文件地址
spring.cache.jcache.config = #jcache配置文件地址
spring.cache.jcache.provider= #当多个jcache实现在类路劲中的时候,指定jcache实现
spring.cache.guava.spec= #guava specs

2.2 依赖包

Cche(spring-boot-starter-cache)

3 切换缓存技术

3.1 EhCache

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
</dependency>

ehcache.xml

<?xml version="1.0" encoding="UTF-8" ?>
<ehcache>
    <cache name="people" maxElementsInMemory="1000" />
</ehcache>

3.2 Guava

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
</dependency>

3.3 Redis

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-redis</artifactId>
</dependency>

4.非关系型数据库NoSQL

NoSQL是对于不使用关系作为数据管理的数据库系统的统称。

NoSQL数据库主要有文档存储型(MongoDB),图形关系存储型(Neo4j)和键值对存储(Redis)

4.1 MongoDB

MongoDB是一个基于稳定(Document)的存储型的数据库,使用面向对象的思想,每一条数据记录都是文档的对象。

4.1.1 spirng支持

主要通过Spring Data MongoDB来事项

(1)Object/Document映射注解支持

注解描述
@Document映射领域对象与MongoDB的一个文档
@Id映射当前属性是ID
@DbRef当前属性将参考其他的文档
@Field为文档的属性定义名称
@Version将当前属性作为版本

(2)MongoTemplate

@Bean
public MongoClient client() throws UnknownHostException{

    MongoClient client = new MongoClient(new ServerAddress("127.0.0.1",27017));
    return client;
}

@Bean
public MongoDbFactory mongoDbFactory() throws Exception{
    String database = new MongoCliectURI("mongodb://localhost/test").getDatabase();
    return new SimpleMongoDbFactory(client(),database);
}

@Bean
public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory) throws UnknownHostException{
    return new MongoTemplate(mongoDbFactory)
}

(3)Repostiory支持

public interface PersonRepostitory extends MongoRepository<Person,String>{

}

//开启支持方式

@Configuration
@EnableMongoRepositories
public class AppConfig{

}

4.2 spring boot的支持

配置

spring.data.mongodb.host = #数据库主机地址,默认localhost
spring.data.mongodb.port = 27017 #数据库连接端口默认27107
spring.data.mongodb.uri=mongodb://localhost/test #connection URL
spring.data.mongodb.database=
spring.data.mongodb.authentication-database=
spring.data.mongodb.grid-fs-database=
spring.data.mongodb.username=
spring.data.mongodb.password=
spring.data.mongodb.repostitories.enabled=true #repository支持是否开启,默认为开启
spring.data.mongodb.field-naming-strategy=

依赖: spirng-boot-starter-data-mongodb

5. Redis

Redis是一个基于键值对的开源内存数据存储

5.1 spring支持

(1)配置

根据redis的不同的java客户端,spring data redis提供如下的ConnectionFactory:

  • JedisConfnectionFactory:使用Jedis作为Redis客户端
  • JredisConfnectionFactory:使用Jredis作为Redis客户端
  • LettuceConfnectionFactory:使用Lettuce作为Redis客户端
  • SrpConfnectionFactory:使用Jedis作为Redis客户端
@Bean
public RdisConnectionFactory redisConnectionFactory(){
    return new JedisConnectionFactory();
}


@Bean
public RedisTemplate<Object,Object> redisTemplate() throws UnknownHostException{
    RedisTemplate<Object,Object> template = new RedisTemplate<Object,Object>();
    template.setConnectionFactory(redisConnectionFactory());
    return template;
}

(2)使用

Spring Data Redis为我们提供了RedisTemplate和StringRedisTemplate两个模板来进行数据操作,其中StringTedisTemplate只正对键值都是字符型的数据进行操作。

方法说明
opsForValue()操作只有简单属性的数据
opsForList()操作含有list的数据
opsForSet()操作含有set的数据
opsForZset()操作含有Zset(有序的set)的数据
opsForHash()操作含有hash的数据

(3)定义Serializer

当我们的数据存储到Redis的时候,我们的key和value都是通过spring提供的Serializer序列化到数据库的。ReidsTemplate默认使用的是JdkSerializationRedisSerializer,StringReidsTemplate默认使用的是StringRedisSerializer,

5.2.spring boot 的支持

RedisAutoConfiguration为我们默认配置了JedisConnectionFactory,RedisTemplate以及StringRedisTemplate。

使用redis配置:

spring.redis.database=0 #数据库名称
spring.redis.host = localhost #服务器地址,默认为localhost
spring.redis.password= #数据库密码
spring.redis.port=6379 #链接端口号,默认6379
spring.redis.pool.max-idle=8 #连接池设置
spring.reids.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.sentinel.master=
spring.redis.sentinel.nodes=
spring.redis.timeout=

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值