redis应用之springboot集成redis

本文介绍了如何在Spring Boot项目中集成Redis,并通过示例演示了基本的配置步骤及常用操作,包括依赖引入、属性配置、模板化应用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:redis作为NOSQL的典型代表,已经在我们的应用服务系统中扮演着重要的角色。redis作为NOSQL数据库的一种,在数据缓存、分布式锁、SSO设计、原子操作(集成Lua脚本)承担着重要的作用。今天就spring boot中有关redis的模板化应用做一个简要总结。(更多的有关redis的内容和应用请继续关注该博客)

下面开始spring-boot 集成 redis的应用实例。

1、在pom中引用spring -boot-starter-redis的依赖包

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.2.4</version>
</dependency>
2、在application.properties文件中配置相关属性内容

(本机单机测试,如需要进行集群配置,请参考redis集群配置)

#redis相关配置
spring.redis.database=1
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
3、配置conf

@Configuration
@EnableAutoConfiguration
public class RedisConfig {
    @Bean
    public RedisTemplate<String,String> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        StringRedisTemplate template = new StringRedisTemplate(redisConnectionFactory);
        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;
    }
}
4、我们就可以使用redisTemplate去完成数据的操作,就不用去关心底层的实现问题(如果不喜欢这种配置操作,方可采取原生jedis API进行数据操作)

@Repository
public class UserRedis {
    @Autowired
    private RedisTemplate<String,String> redisTemplate;
    public void add(String key,Long time,User user){
        Gson gson = new Gson();
        redisTemplate.opsForValue().set(key,gson.toJson(user),time, TimeUnit.MINUTES);
    }
    public void add(String key,Long time, List<User> users){
        Gson gson = new Gson();
        redisTemplate.opsForValue().set(key,gson.toJson(users),time,TimeUnit.MINUTES);
    }
    public User get(String key){
        Gson gson = new Gson();
        User user = null;
        String userJson = redisTemplate.opsForValue().get(key);
        if(!StringUtils.isEmpty(userJson)){
            user = gson.fromJson(userJson,User.class);
        }
        return user;
    }
    public List<User> getUserList(String key){
        Gson gson = new Gson();
        List<User> userList = null;
        String userListJson = redisTemplate.opsForValue().get(key);
        if(!StringUtils.isEmpty(userListJson)){
            userList = gson.fromJson(userListJson,new TypeToken<List<User>>(){}.getType());
        }
        return userList;
    }
    public void delete(String key){
        redisTemplate.opsForValue().getOperations().delete(key);
    }
}
注:redis的数据格式有五种(String 、list 、set、hash、zset)。目前的实例demo仅就String一种数据格式做了简单介绍。具体的其他类型数据操作于此大同小异,要明白redisTemplate带给我们的便利性。

redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set

---------------------------------------------------------------------------------------------------------

更多有关redisTemplate的相关操作请参考如何使用redisTemplate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值