文章16 | 阅读 8284 | 点赞0
redis环境安装:
我使用的是docker容器安装,方便快捷。安装教程:
https://blog.csdn.net/xu12387/article/details/85003227
新建项目:springboot-redis ,打开pom.xml文件加入相关依赖
springboot2.0的redis整合包多出lettuce连接池,需要commons-pool2,所以项目pom依赖要添加commons-pool2
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 高版本redis的lettuce需要commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.0</version>
</dependency>
打开src/main/resoucs/application.properties配置文件加入redis相关配置
server.port=8082
# REDIS
# 连接工厂使用的数据库索引。
spring.redis.database=0
# IP地址
spring.redis.host=10.24.247.23
# 端口
spring.redis.port=6379
# 密码
spring.redis.password=123456
#连接超时时间
spring.redis.timeout= 10000ms
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.lettuce.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.lettuce.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.lettuce.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.lettuce.pool.min-idle=0
新建config包以及新建redisConfig.java文件src\main\java\com\example\springbootredis\config\redisConfig.java,内容如下:
@Configuration
@EnableCaching // 开启缓存支持
public class RedisConfig extends CachingConfigurerSupport {
/**
* RedisTemplate配置
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
// 设置序列化
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(
Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
// 配置redisTemplate
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
RedisSerializer<?> stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);// key序列化
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// value序列化
redisTemplate.setHashKeySerializer(stringSerializer);// Hash key序列化
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);// Hash value序列化
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
新建在src\main\java\com\example\springbootredis\utils\redisredisService.java工具类,写入我们常用的方法,内容如下:
@Component
public class RedisService {
private Logger logger = LoggerFactory.getLogger(RedisService.class);
@Autowired
private RedisTemplate redisTemplate;
/**
* set value
*
* @param key
* @param value
* @return
*/
public boolean set(final String key, Object value) {
boolean result = false;
try {
ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
operations.set(key, value);
result = true;
} catch (Exception e) {
logger.error("set error: key {}, value {}", key, value, e);
}
return result;
}
/**
* set value with expireTime
*
* @param key
* @param value
* @param expireTime
* @return
*/
public boolean set(final String key, Object value, Long expireTime) {
boolean result = false;
try {
ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
operations.set(key, value);
redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
result = true;
} catch (Exception e) {
logger.error("set error: key {}, value {},expireTime {}", key, value, expireTime, e);
}
return result;
}
/**
* @param key
* @return
*/
public boolean exists(final String key) {
return redisTemplate.hasKey(key);
}
/**
* @param key
* @return
*/
public Object get(final String key) {
Object result = null;
ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
result = operations.get(key);
return result;
}
/**
* remove single key
*
* @param key
*/
public void remove(final String key) {
if (exists(key)) {
redisTemplate.delete(key);
}
}
/**
* batch delete
*
* @param keys
*/
public void remove(final String... keys) {
for (String key : keys) {
remove(key);
}
}
/**
* batch delete with pattern
*
* @param pattern
*/
public void removePattern(final String pattern) {
Set<Serializable> keys = redisTemplate.keys(pattern);
if (keys.size() > 0) {
redisTemplate.delete(keys);
}
}
/**
* hash set
*
* @param key
* @param hashKey
* @param value
*/
public void hashSet(String key, Object hashKey, Object value) {
HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
hash.put(key, hashKey, value);
}
/**
* hash get
*
* @param key
* @param hashKey
* @return
*/
public Object hashGet(String key, Object hashKey) {
HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
return hash.get(key, hashKey);
}
/**
* list push
*
* @param k
* @param v
*/
public void push(String k, Object v) {
ListOperations<String, Object> list = redisTemplate.opsForList();
list.rightPush(k, v);
}
/**
* list range
*
* @param k
* @param l
* @param l1
* @return
*/
public List<Object> range(String k, long l, long l1) {
ListOperations<String, Object> list = redisTemplate.opsForList();
return list.range(k, l, l1);
}
/**
* set add
*
* @param key
* @param value
*/
public void setAdd(String key, Object value) {
SetOperations<String, Object> set = redisTemplate.opsForSet();
set.add(key, value);
}
/**
* set get
*
* @param key
* @return
*/
public Set<Object> setMembers(String key) {
SetOperations<String, Object> set = redisTemplate.opsForSet();
return set.members(key);
}
/**
* ordered set add
*
* @param key
* @param value
* @param scoure
*/
public void zAdd(String key, Object value, double scoure) {
ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
zset.add(key, value, scoure);
}
/**
* rangeByScore
*
* @param key
* @param scoure
* @param scoure1
* @return
*/
public Set<Object> rangeByScore(String key, double scoure, double scoure1) {
ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
return zset.rangeByScore(key, scoure, scoure1);
}
新建src\main\java\com\example\springbootredis\model\User.java对象,这里我使用了lombok插件,节省了get、set等方法的书写。
引入lombok依赖
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.22</version>
</dependency>
当然idea开发工具使用lombok还需要安装插件哦!
搜索出Lombok Plugin 旁边点Install就可以啦 ,我这里是安装好的。接下来就来使用lombok插件吧!在对象上加入@Data注解就可以啦。就自动帮我们把set、get、无参构造方法加进去了。
@Data
public class User {
private int id;
private String userName;
private int age;
}
这里我们使用alibaba的fastJson来做json的转换,加入fastjson依赖
<!--fastJson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
接下来我们编写一个测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
@Autowired
private RedisService redisService;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void setUser() {
User user = new User();
user.setId(1);
user.setAge(15);
user.setUserName("张三");
System.out.println(redisService.set("user", user));
User userR = (User) redisService.get("user");
System.out.println(userR);
stringRedisTemplate.opsForValue().set("user1", JSON.toJSONString(user));
User user1= JSONObject.toJavaObject(JSON.parseObject(stringRedisTemplate.opsForValue().get("user1")),User.class);
System.out.println("user1:"+user1);
}
}
项目整体目录结构如下
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/xu12387/article/details/88331549
内容来源于网络,如有侵权,请联系作者删除!