博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot整合Redis(附带序列化方式对比)
阅读量:6152 次
发布时间:2019-06-21

本文共 4602 字,大约阅读时间需要 15 分钟。

hot3.png

一、缓存数据库性能Redis、memcached、Ehcache

Redis存储数据类型丰富,对于存储数据量不是很大的情况下处理性能效果较好

memcached对于大量的数据存储和读取性能要优于Redis

Ehcache最大的特点是轻量级,而且存储的数据类型为对象

二、Redis序列化常见的方式:

JdkSerializationRedisSerializer:JDK自带的序列化方式、存储的字符串内容在序列化的情况下偏长,会占用过多的内存

OxmSerializer:序列化的时间相对较长

Jackson2JsonRedisSerializer:json数据格式、序列化时间和序列化之后内容的长度都要优于前两种,对比前者我选择的序列化方式是第三种

三、使用流程(安装redis服务能正常连接--省略)

服务启动类

@SpringBootApplication@EnableEurekaClientpublic class RedisServer {    public static void main(String[] args) {        new SpringApplicationBuilder(RedisServer.class).web(true).run(args);    }}

pom.xml

org.springframework.boot
spring-boot-starter-data-redis
org.springframework.data
spring-data-redis
1.7.2.RELEASE
redis.clients
jedis
2.8.0

配置文件:

application.yml

server:  port: 9009spring:  application:    name: springCloud-rediseureka:  instance:    hostname: localhost  client:    register-with-eureka: true    fetch-registry: false    service-url:      defaultZone: http://localhost:9001/eureka/

bootstrap.yml

spring:  redis:    database: 0    # Redis服务器地址    host: localhost    # Redis服务器连接端口    port: 6379    # Redis服务器连接密码(默认为空)    password:    # 连接池最大连接数(使用负值表示没有限制)    timeout: 0 # 连接超时时间(毫秒)    pool:      max-active: 8      # 连接池最大阻塞等待时间(使用负值表示没有限制)      max-wait: -1      # 连接池中的最大空闲连接      max-idle: 8      # 连接池中的最小空闲连接      min-idle: 0

config类配置

package redis.config;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.CachingConfigurerSupport;import org.springframework.cache.annotation.EnableCaching;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;import java.util.HashMap;import java.util.Map;@Configuration@EnableCachingpublic class RedisConfig extends CachingConfigurerSupport {    @Bean    public CacheManager cacheManager(RedisTemplate redisTemplate) {        RedisCacheManager rcm = new RedisCacheManager(redisTemplate);        //设置缓存过期时间        rcm.setDefaultExpiration(60);//秒        return rcm;    }    /**     * RedisTemplate配置     * @param factory     * @return     */    @Bean    public RedisTemplate
redisTemplate(RedisConnectionFactory factory) { StringRedisTemplate template = new StringRedisTemplate(factory); //定义value的序列化方式 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; }}

编写接口和实现类

public interface RedisService {    void set(String key, Object value);    Object get(String key);}
@Servicepublic class RedisServiceImpl implements RedisService{    @Resource    private RedisTemplate
redisTemplate; //stringRedisTemplate只能缓存key-value的String类型 @Override public void set(String key, Object value) { ValueOperations
vo = redisTemplate.opsForValue(); vo.set(key, value); } @Override public Object get(String key) { ValueOperations
vo = redisTemplate.opsForValue(); return vo.get(key); }}

controller层实现:

@RestController@RequestMapping("/redis")public class RedisController {    @Autowired    private RedisService redisService;    @RequestMapping("/save")    public String save(){   //这里用于测试,key值可以自定义实现        redisService.set("123456","test-redis");        return "SUCCESS";    }    @RequestMapping("/get")    public String get(){    //这里用于测试,key值可以自定义实现        return (String) redisService.get("123456");    }}

四、注册服务启动,调用接口测试--省略

转载于:https://my.oschina.net/wubiaowpBlogShare/blog/1612682

你可能感兴趣的文章
取消锚(<a/>)点击后页面跳转的几种方法
查看>>
Html5 css reset
查看>>
Hbase 布隆过滤器BloomFilter介绍
查看>>
【Android Studio探索之路系列】之六:Android Studio加入依赖
查看>>
H264 I帧 P帧
查看>>
华为第七届无线编码大赛总结(转)
查看>>
linux grep shell相关
查看>>
c# winform项目用到的部分知识点总结
查看>>
爆:中国互联网的那些黑色产业链(转)
查看>>
Oracle解决查询表空间速度慢的问题
查看>>
使用高级安全Windows防火墙控制应用程序流量
查看>>
mySQL教程 第14章 mySQ性能优化
查看>>
Exchange 2010迁移Exchange 2013(二)本地用户移动
查看>>
python+matplotlib统计svn信息
查看>>
从MySQL全库备份中恢复某个库和某张表
查看>>
《Cisco路由器配置与管理完全手册》(第二版)前言和目录
查看>>
苦酒入喉心作痛,红酒入鹅鹅想哭——震惊!勒索病毒想哭靠wine感染了Ubuntu16.04...
查看>>
Cookie注入实战(非SQL注入)
查看>>
Joomla模块类型
查看>>
如果正确看待区块链这一新型技术的未来发展?
查看>>