[置顶] spring boot项目实战:redis
2017-09-30 18:26
549 查看
《spring boot项目实战》之redis使用,本人搭建好的spring boot web后端开发框架已上传至GitHub,欢迎吐槽!
https://github.com/q7322068/rest-base
在application-local.properties(本地配置)内添加redis配置:
如果本地redis没有密码,删除spring.redis.password这行就可以了。
测试&正式环境(哨兵)
在application-dev.properties(测试环境)和application-prod.properties(正式环境)内添加redis配置:
使用RedisTemplate进行操作:
StringRedisTemplate对redis操作进行了很好的封装,为键、字符串、哈希、列表、集合、有序集合、HyperLogLog的操作提供了良好的支持。基本使用形式就是redisTemplate.opsForXXX,XXX是类型,opsForValue是操作字符串;opsForSet是操作集合,opsForList是操作列表,opsForZSet是操作有序集合,opsForHyperLogLog是操作HyperLogLog,基本上其方法和redis命令是对应的,可以根据名字和方法注释快速确定方法对应的redis命令。
2、 配置redisTemplate
创建RedisConfig.java
3、 使用RedisTemplate
https://github.com/q7322068/rest-base
1、 添加maven依赖
<!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2、 添加redis配置
本地(单点redis)在application-local.properties(本地配置)内添加redis配置:
###redis配置### spring.redis.host=127.0.0.1 spring.redis.port=7001 spring.redis.database=0 spring.redis.password=pwd # pool settings ...池配置 spring.redis.pool.max-idle=4 spring.redis.pool.min-idle=1 spring.redis.pool.max-active=4 spring.redis.pool.max-wait=2000
如果本地redis没有密码,删除spring.redis.password这行就可以了。
测试&正式环境(哨兵)
在application-dev.properties(测试环境)和application-prod.properties(正式环境)内添加redis配置:
###redis配置### spring.redis.database=0 spring.redis.password=pwd # pool settings ...池配置 spring.redis.pool.max-idle=4 spring.redis.pool.min-idle=1 spring.redis.pool.max-active=4 spring.redis.pool.max-wait=2000 #哨兵监听redis server名称 spring.redis.sentinel.master=mymaster #哨兵的配置列表 spring.redis.sentinel.nodes=host:port,host2:port2
3、使用StringRedisTemplate进行操作
注入StringRedisTemplate:@Autowired private StringRedisTemplate redisTemplate;
使用RedisTemplate进行操作:
//设置缓存,建议每个键都设置过期时间 redisTemplate.opsForValue().set("test", "test", 10, TimeUnit.SECONDS); //获取缓存值 String value = redisTemplate.opsForValue().get("test"); //删除某个键 redisTemplate.delete("test"); //操作set redisTemplate.opsForSet().add("testSet", "1"); Set<String> members = redisTemplate.opsForSet().members("testSet");//获取set内的所有值 redisTemplate.opsForSet().remove("testSet", "1","2");//移除set内的多个对象 //操作list redisTemplate.opsForList().rightPush("testList", "1"); List<String> list = redisTemplate.opsForList().range("testList", 0, -1);//获取list内的所有元素
StringRedisTemplate对redis操作进行了很好的封装,为键、字符串、哈希、列表、集合、有序集合、HyperLogLog的操作提供了良好的支持。基本使用形式就是redisTemplate.opsForXXX,XXX是类型,opsForValue是操作字符串;opsForSet是操作集合,opsForList是操作列表,opsForZSet是操作有序集合,opsForHyperLogLog是操作HyperLogLog,基本上其方法和redis命令是对应的,可以根据名字和方法注释快速确定方法对应的redis命令。
4、使用RedisTemplate进行操作
1、 创建RedisObjectSerializer.javaimport org.springframework.core.convert.converter.Converter; import org.springframework.core.serializer.support.DeserializingConverter; import org.springframework.core.serializer.support.SerializingConverter; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.SerializationException; public class RedisObjectSerializer implements RedisSerializer<Object> { private Converter<Object, byte[]> serializer = new SerializingConverter(); private Converter<byte[], Object> deserializer = new DeserializingConverter(); static final byte[] EMPTY_ARRAY = new byte[0]; public Object deserialize(byte[] bytes) { if (isEmpty(bytes)) { return null; } try { return deserializer.convert(bytes); } catch (Exception ex) { throw new SerializationException("Cannot deserialize", ex); } } public byte[] serialize(Object object) { if (object == null) { return EMPTY_ARRAY; } try { return serializer.convert(object); } catch (Exception ex) { return EMPTY_ARRAY; } } private boolean isEmpty(byte[] data) { return (data == null || data.length == 0); } }
2、 配置redisTemplate
创建RedisConfig.java
@Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<String, Object>(); template.setConnectionFactory(factory); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(new RedisObjectSerializer()); return template; } }
3、 使用RedisTemplate
//注入RedisTemplate对象 @Autowired private RedisTemplate<String, Object> objRedisTemplate; //使用RedisTemplate User user = new User(); user.setId(1); user.setName("test"); objRedisTemplate.opsForValue().set("user", user,10,TimeUnit.SECONDS); user = (User) objRedisTemplate.opsForValue().get("user");
相关文章推荐
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:redis
- [置顶] spring boot项目实战:跨域问题解决
- [置顶] spring boot项目实战:JPA
- [置顶] spring boot项目实战:分布式锁