1、导入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
2、配置yml
redis:port: 6379host: 127.0.0.1database: 1 #使用的数据库timeout: 3000 #连接超时事件毫秒lettuce:pool:max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)max-idle: 10 # 连接池中的最大空闲连接min-idle: 5 # 连接池中的最小空闲连接
3、RedisTemplate模版序列化
在不使用序列化配置之前Java数据序列化底层使用的是默认序列化存入Redis中是解析过乱码的数据,存到Redis中可视化太低!使用之后可以显示中文
在SpringBoot中集成了两个模版一个是 RedisTemplate,另一个为 StringRedisTemplate 而虽然StringRedisTempate帮助我们做了序列化,但是存储数据的时候只能存储Sting类型的数据,而RedisTemplate可以存储Object类型,所以我们一个使用RedisTemplate比较多一些!
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(lettuceConnectionFactory);//设置key序列化方法StringredisTemplate.setKeySerializer(new StringRedisSerializer());//设置value的序列化方式json,使用GenericJackson2JsonRedisSerializer替换默认的序列化redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());redisTemplate.afterPropertiesSet();return redisTemplate;}
}
三、编写工具类
package com.example.fcy.util;import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.TimeoutUtils;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;/*** <p>* Redis工具类* </p>** @author fcy* @since 2023-11-28*/
@Component
@RequiredArgsConstructor
public class RedisUtil {@Resourceprivate RedisTemplate redisTemplate;/*** 获取值* @param key key* @return*/public Object get(String key) {return key == null ? null : redisTemplate.opsForValue().get(key);}/*** 设置值* @param key* @param object* @return*/public boolean set(String key, Object object) {try {redisTemplate.opsForValue().set(key, object);return true;} catch (Exception e) {e.printStackTrace();return false;}}public boolean hashKey(String key) {try {return redisTemplate.hasKey(key);} catch (Exception e) {e.printStackTrace();return false;}}public boolean expire(String key, long time) {try {if (time > 0) {redisTemplate.expire(key, time, TimeUnit.SECONDS);}return true;} catch (Exception e) {e.printStackTrace();return false;}}public boolean hset(String key, String item, Object value) {try {redisTemplate.opsForHash().put(key, item, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}public boolean hset(String key, String item, Object value, long time) {try {redisTemplate.opsForHash().put(key, item, value);if (time > 0) {expire(key, time);}return true;} catch (Exception e) {e.printStackTrace();return false;}}public Object hget(String key, String item) {return redisTemplate.opsForHash().get(key, item);}public long hdal(String key, String item) {return redisTemplate.opsForHash().delete(key, item);}
}