springboot集成Redis
来源:互联网 发布:晨曦定额软件下载 编辑:程序博客网 时间:2024/06/04 19:46
springboot集成Redis
前言
Redis是目前使用的非常广泛的内存数据库,相比memcached,它支持更加丰富的数据类型。本来简要介绍在springboot中使用redis的方法。
如何使用?
1、引入spring-boot-starter-redis
<!-- redis --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>
2、在application.properties增加Redis的配置
# 使用的数据库(0-15),默认为0spring.redis.database=0 # Redis服务器地址spring.redis.host=127.0.0.1# Redis服务器连接端口spring.redis.port=6379 # Redis服务器连接密码(默认为空)spring.redis.password=
3、使用
@Autowiredprivate StringRedisTemplate stringRedisTemplate;@RequestMapping(value = "/redis/{key}/{value}",method = RequestMethod.GET)@ResponseBodypublic String redisTest(@PathVariable String key,@PathVariable String value) { String redisValue = stringRedisTemplate.opsForValue().get(key); if (StringUtils.isEmpty(redisValue)) { stringRedisTemplate.opsForValue().set(key,value); return "操作成功!"; } if (!redisValue.equals(value)) { stringRedisTemplate.opsForValue().set(key,value); return "操作成功!"; } return String.format("redis中已存在[key=%s,value=%s]的数据!",key,value);}
随便写的一个例子。
4、Sentinel模式配置
上面的是单机的一个配置,如果是主从,参考:
#redis配置spring.redis.database=0spring.redis.password=systemspring.redis.pool.max-idle=10spring.redis.pool.min-idle=0spring.redis.pool.max-active=10spring.redis.pool.max-wait=-1spring.redis.sentinel.master=mymasterspring.redis.sentinel.nodes=192.168.74.135:26379,192.168.74.136:26379
5、redis的全部配置:
# REDIS (RedisProperties)spring.redis.cluster.max-redirects= # Maximum number of redirects to follow when executing commands across the cluster.spring.redis.cluster.nodes= # Comma-separated list of "host:port" pairs to bootstrap from.spring.redis.database=0 # Database index used by the connection factory.spring.redis.url= # Connection URL, will override host, port and password (user will be ignored), e.g. redis://user:password@example.com:6379spring.redis.host=localhost # Redis server host.spring.redis.password= # Login password of the redis server.spring.redis.ssl=false # Enable SSL support.spring.redis.pool.max-active=8 # Max number of connections that can be allocated by the pool at a given time. Use a negative value for no limit.spring.redis.pool.max-idle=8 # Max number of "idle" connections in the pool. Use a negative value to indicate an unlimited number of idle connections.spring.redis.pool.max-wait=-1 # Maximum amount of time (in milliseconds) a connection allocation should block before throwing an exception when the pool is exhausted. Use a negative value to block indefinitely.spring.redis.pool.min-idle=0 # Target for the minimum number of idle connections to maintain in the pool. This setting only has an effect if it is positive.spring.redis.port=6379 # Redis server port.spring.redis.sentinel.master= # Name of Redis server.spring.redis.sentinel.nodes= # Comma-separated list of host:port pairs.spring.redis.timeout=0 # Connection timeout in milliseconds.
6、使用redis自动缓存数据
可以把一些经常查询的数据放到redis缓存起来,不用每次都查询数据库。
上面是手动缓存到redis,这里介绍一下如何自动数据缓存到redis。
a.增加一个redis的配置类:
@Configuration@EnableCachingpublic class RedisConfig{ @Bean public KeyGenerator redisKeyGenerator(){ return new KeyGenerator() { @Override public Object generate(Object target, Method method, Object... params) { StringBuilder sb = new StringBuilder(); sb.append(target.getClass().getName()); sb.append(method.getName()); for (Object obj : params) { sb.append(obj.toString()); } return sb.toString(); } }; } @Bean public CacheManager cacheManager( @SuppressWarnings("rawtypes") RedisTemplate redisTemplate) { return new RedisCacheManager(redisTemplate); } @Bean public RedisTemplate<String, String> redisTemplate( RedisConnectionFactory factory) { StringRedisTemplate template = new StringRedisTemplate(factory); 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.afterPropertiesSet(); return template; }}
b.在需要缓存的service方法上加上注解:
@Cacheable(value = "userCache")public TUser findById(String id) { return this.userRepository.findOne(id);}
这样,就只有redis没有相应的Key的时候才会查询数据库。
我们看下redis:
图中,redis的key就是你的参数。
阅读全文
1 0
- SpringBoot -- 集成Redis/CacheManager
- SpringBoot -- 集成Redis/CacheManager
- springboot集成redis
- springboot集成Redis
- springboot 集成redis 哨兵
- springboot集成Redis
- SpringBoot集成Redis
- springboot集成redis详解
- 关于SpringBoot 集成 Redis
- SpringBoot集成Redis
- springboot集成redis
- SpringBoot集成Redis
- SpringBoot集成Redis
- 在SpringBoot中集成Redis
- SpringBoot 入门教程:集成mybatis,redis
- SpringBoot 入门教程:集成mybatis,redis
- SpringBoot 入门教程:集成mybatis,redis
- SpringBoot 入门教程:集成mybatis,redis
- LNMP添加、删除虚拟主机及伪静态使用教程
- 编译ENB时Installing Google Protobuf 失败的问题
- springmvc 中出现的RequestMappingHandlerMapping#0的bug解决方案
- java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonProcessingException
- Java程序员面试中的多线程问题
- springboot集成Redis
- Android模拟器识别技术
- python生成ios固定代码模块脚本(仅供参考)
- 本体融合之添加空间方向关系
- (1)DOM概述、DHTML概述、window对象常用对象
- c++ 类的继承(一)
- FZU-1759 Super A^B mod C
- 简单实现Android倒计时功能
- 可以转码的字符流