Spring boot下配置使用redis--template编码形式
2017-06-25 18:07
561 查看
Spring boot下配置使用redis
在做项目中用到了redis,在此简单记录下,希望对你们有用,欢迎技术交流windows下的Redis安装很简单,只要把jar下载之后解压后,运行redis-server.exe就可以了
下载地址:Redis-x64-3.2.100.zip
之后cmd进入d://redis路径下运行
redis-cli.exe -h 127.0.0.1 -p 6379链接到服务器
显示如下表示成功
cmd在开个窗口,上面那个别关,可以在(get,set)本地测试下
set name 123 get name
1. pom.xml
添加jar包支持应为项目使用了容器部署,所以需要连接服务
<!--服务连接 ,不需要的可以删除该dependency--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-cloudfoundry-connector</artifactId> </dependency> <!--redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2. Redis配置文件
RedisConfig.javaimport java.io.Serializable; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.Cloud; import org.springframework.cloud.CloudFactory; import org.springframework.cloud.service.common.RedisServiceInfo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.core.env.Environment; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.ListOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.SetOperations; import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Slf4j @Configuration public class RedisConfig { //不需要cloud的可以删除CloudConfiguration @Configuration @Profile("cloud") static class CloudConfiguration { @Bean public RedisTemplate<Serializable, Serializable> redisTemplate(JedisConnectionFactory redisConnectionFactory) { CloudFactory cloudFactory = new CloudFactory(); Cloud cloud = cloudFactory.getCloud(); RedisServiceInfo info = (RedisServiceInfo)cloud.getServiceInfo("myredis"); System.out.println("------------------------------------------"); System.out.println("-----------------cloud redis--------------" + info.getPassword()); System.out.println("------------------------------------------" + info.getUserName()); try { redisConnectionFactory.setHostName(info.getHost()); redisConnectionFactory.setPassword(info.getPassword()); redisConnectionFactory.setPort(info.getPort()); } catch (Exception e) { log.error("redis 初始化 failed",e); } RedisTemplate<Serializable, Serializable> redisTemplate = new RedisTemplate<Serializable, Serializable>(); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer()); redisTemplate.setConnectionFactory(redisConnectionFactory); return redisTemplate; } /** * 实例化 HashOperations 对象,可以使用 Hash 类型操作 * * @param redisTemplate * @return */ @Bean public HashOperations<Serializable, Object, Object> hashOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForHash(); } /** * 实例化 ValueOperations 对象,可以使用 String 操作 * * @param redisTemplate * @return */ @Bean public ValueOperations<Serializable, Serializable> valueOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForValue(); } /** * 实例化 ListOperations 对象,可以使用 List 操作 * * @param redisTemplate * @return */ @Bean public ListOperations<Serializable, Serializable> listOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForList(); } /** * 实例化 SetOperations 对象,可以使用 Set 操作 * * @param redisTemplate * @return */ @Bean public SetOperations<Serializable, Serializable> setOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForSet(); } /** * 实例化 ZSetOperations 对象,可以使用 ZSet 操作 * * @param redisTemplate * @return */ @Bean public ZSetOperations<Serializable, Serializable> zSetOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForZSet(); } } @Configuration @Profile(value={"dev"}) static class LocalConfiguration { @Autowired private Environment env; @Bean public RedisTemplate<Serializable, Serializable> redisTemplate(JedisConnectionFactory redisConnectionFactory) { System.out.println("------------------------------------------"); System.out.println("-----------------local redis--------------"); System.out.println("------------------------------------------"); RedisTemplate<Serializable, Serializable> redisTemplate = new RedisTemplate<Serializable, Serializable>(); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer()); redisTemplate.setConnectionFactory(redisConnectionFactory); return redisTemplate; } @Bean public JedisConnectionFactory redisConnectionFactory() { JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(); redisConnectionFactory.setHostName("00.11.22.33"); redisConnectionFactory.setPort(1234); redisConnectionFactory.setPassword("xxxx"); return redisConnectionFactory; } /** * 实例化 HashOperations 对象,可以使用 Hash 类型操作 * * @param redisTemplate * @return */ @Bean public HashOperations<Serializable, Object, Object> hashOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForHash(); } /** * 实例化 ValueOperations 对象,可以使用 String 操作 * * @param redisTemplate * @return */ @Bean public ValueOperations<Serializable, Serializable> valueOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForValue(); } /** * 实例化 ListOperations 对象,可以使用 List 操作 * * @param redisTemplate * @return */ @Bean public ListOperations<Serializable, Serializable> listOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForList(); } /** * 实例化 SetOperations 对象,可以使用 Set 操作 * * @param redisTemplate * @return */ @Bean public SetOperations<Serializable, Serializable> setOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForSet(); } /** * 实例化 ZSetOperations 对象,可以使用 ZSet 操作 * * @param redisTemplate * @return */ @Bean public ZSetOperations<Serializable, Serializable> zSetOperations(RedisTemplate<Serializable, Serializable> redisTemplate) { return redisTemplate.opsForZSet(); } } }
@Profile(value={“dev”})是开发环境用的配置
@Profile(value={“cloud})是发布的容器中用的配置
3. 使用事例
import java.io.Serializable; import java.util.List; import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.github.pagehelper.PageHelper; @Slf4j @Transactional @Service public class UserServiceImpl implements IUserService { @Autowired private IUserDao userDao; @Resource private RedisTemplate<Serializable, Serializable> template; @Resource private ValueOperations<Serializable, Serializable> valueOperations; @Override public UserDto findProperty(String id) { UserDto user = null; Object obj = valueOperations.get(id); if (obj != null && obj instanceof userDto) { user = (UserDto) obj; log.info("从缓存中得到user, {}",DataConverterUtil.object2Json(user)); return user; } else { user = userDao.findUser(id); if (user != null) { valueOperations.set(id, user); } } return user; } }
到这里基本配置实用已经OK了,具体的使用方式,后续更新
相关文章推荐
- Spring boot下配置使用redis--注解形式
- Springboot+Redis 配置和使用
- springboot2.0 redis EnableCaching的配置和使用
- springboot restTemplate使用以及相关配置
- spring boot中使用resid-RedisTemplate
- [置顶] 在Springboot上使用jedis来操作缓存redis --jedis的配置
- Spring-boot通过redisTemplate使用redis(无须手动序列化)
- Spring boot 使用多个RedisTemplate
- springboot使用protostuff进行序列化和反序列化整合redis的redisTemplate的各种方法的写法
- Spring学习笔记之RedisTemplate的配置与使用教程
- spring boot下redis的配置使用
- 2 Springboot中使用redis,配置redis的key value生成策略
- springboot中配置restTemplate及简单使用
- (15)Spring Boot使用Druid和监控配置【从零开始学Spring Boot】
- 使用Spring-Data-Redis存储对象(redisTemplate)
- redis中的基本数据类型,以及在Spring-Boot对Redis的基本使用
- spring boot 使用application.properties 进行外部配置
- Spring Boot使用redis做数据缓存
- spring 整合 redis,以及spring的RedisTemplate如何使用
- spring 使用redis集群配置