Springboot整合RedisTemplate、RedisTemplate使用

本文详细介绍了如何在SpringBoot应用中整合RedisTemplate,并展示了使用RedisTemplate操作String、List、Hash和Set的方法,包括设置缓存、增删改查等基本操作。

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

概述:

Redis是一个基于内存的数据库,提供了字符串(String), 哈希(Map), 列表(list), 集合(sets)多种数据类型。而RedisTemplate是Spring Data Redis提供给用户的最高级的抽象客户端,用户可直接通过RedisTemplate进行多种操作。

依赖文件:

<!-- springboot整合redis -->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

RedisConfig(redis配置类,数据序列化设置):

/**
 * @Author: zjh
 * @Description:
 * @Date: Create in 16:23 2019/11/27
 */
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        // 配置redisTemplate
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        //设置序列化
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        RedisSerializer stringSerializer = new StringRedisSerializer();

        // key序列化
        redisTemplate.setKeySerializer(stringSerializer);
        // value序列化
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        // Hash key序列化
        redisTemplate.setHashKeySerializer(stringSerializer);
        // Hash value序列化
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

application.properties

#redis配置
#Matser的ip地址
spring.redis.host=127.0.0.1
#端口号
spring.redis.port=6379
#如果有密码
spring.redis.password=admin
#客户端超时时间单位是毫秒 默认是2000
spring.redis.timeout=10000
#最大空闲数
spring.redis.maxIdle=300
#连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
#redis.maxActive=600
#控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
spring.redis.maxTotal=1000
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
spring.redis.maxWaitMillis=1000
#连接的最小空闲时间 默认1800000毫秒(30分钟)
spring.redis.minEvictableIdleTimeMillis=300000
#每次释放连接的最大数目,默认3
spring.redis.numTestsPerEvictionRun=1024
#逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
spring.redis.timeBetweenEvictionRunsMillis=30000
#是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
spring.redis.testOnBorrow=true
#在空闲时检查有效性, 默认false
spring.redis.testWhileIdle=true

常用数据类型:

String:

  • 设置缓存过期时间:redisTemplate.expire(String key, Long time, TimeUnit timeUnit)
  • 判断key是否存在:redisTemplate.hasKey(String key)
  • 设置key和Value:redisTemplate.opsForValue().set(String key,Object value)
  • 根据key获取value:redisTemplate.opsForValue().get(String key)
  • 根据key删除缓存:redisTemplate.delete(String key)
  • 根据key,自增value:redisTemplate.opsForValue().increment(String key,Long num)
  • 根据key,自减value:redisTemplate.opsForValue().decrement(String key,Long num)

List:

  • 根据key获取List的长度:redisTemplate.opsForList().size(String key)
  • 从List左边插入值:redisTemplate.opsForList().leftPush(String key,Object value)
  • 从List左边插入一个数组:redisTemplate.opsForList().leftPushAll(String key,String[] strs)
  • 从List右边插入值:redisTemplate.opsForList().rightPush(String key,Object value)
  • 从List右边插入一个数组:redisTemplate.opsForList().rightPushAll(String key,String[] strs)
  • 根据索引位置设置值:redisTemplate.opsForList().set(String key,Long index,Object value)
  • 根据索引位置获取值:redisTemplate.opsForList().index(String key,Long index)
  • 根据key获取List所有值:redisTemplate.opsForList().range(String key,0,-1)
  • 根据key从List左边删除一个value:redisTemplate.opsForList().leftPop(String key)
  • 根据key从List右边删除一个value:redisTemplate.opsForList().rightPop(String key)

Hash

  • 根据key设置HashMap指定项的值:redisTemplate.opsForHash().put(String key,String hashKey,Object hashValue)
  • 根据key设置HashMap值:redisTemplate.opsForHash().putAll(String key, HashMap<String, Object> hashMap)
  • 删除指定hashKey和hashValue,可以是多个:redisTemplate.opsForHash().delete(String key,String… hashKeys)
  • 判断指定key下的hashkey是否存在:redisTemplate.opsForHash().hasKey(String key,String hashKey)
  • 获取指定key和hashkey下的value值:redisTemplate.opsForHash().get(String key,String hashKey)
  • 获取指定key的Hash表长度:redisTemplate.opsForHash().size(String key)
  • 获取指定hash的所有key:redisTemplate.opsForHash().keys(String key)
  • 获取指定hash的所有的value:redisTemplate.opsForHash().values(String key)
  • 获取指定hash表的所有键值对:redisTemplate.opsForHash().entries(String key)

Set

  • 根据key获取所有的Set集合:redisTemplate.opsForSet().members(String key)
  • 根据key和value判断是否存在value:redisTemplate.opsForSet().isMember(String key,Object value)
  • 设置value值,可以是多个:redisTemplate.opsForSet().add(String key,Object… values)
  • 删除指定的values,可以是多个:redisTemplate.opsForSet().remove(String key,Object… values)
  • 获取Set的长度:redisTemplate.opsForSet().size(String key)

测试类:

@SpringBootTest
public class RedisTests {
    @Autowired
    RedisTemplate redisTemplate;
    @Test
    public void redisTest(){
        redisTemplate.opsForHash().put("hashMap","hashKey","hashValue");
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值