springboot集成redis -RedisTemplate使用

1.安装redis单机

2.引入pom依赖

java 复制代码
 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

3.application.yml文件

复制代码
server:
  port: 9999
spring:
  redis:
    host: 192.168.18.132
    port: 6379
    password:
    database: 0
    timeout: 2000ms

4.redisconfig配置

java 复制代码
@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);

        // 设置 key 和 value 的序列化方式
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());

        return template;
    }
}

5.RedisTemplate使用(5种基本类型,3种特殊类型,管道类型)

java 复制代码
@SpringBootTest
public class RedisTestService {

    @Autowired
    private RedisTemplate redisTemplate;


    @Test
    public void  test01(){
        //字符串操作
        redisTemplate.opsForValue().set("name1","tony");
        redisTemplate.opsForValue().set("name2","lucy",10, TimeUnit.MINUTES);
        String value = redisTemplate.opsForValue().get("name1");
        System.out.println(value);
        
        //集合操作 list是一个双端队列
        redisTemplate.opsForList().leftPush("messages", "msg3");
        redisTemplate.opsForList().rightPush("messages", "msg-1");
        redisTemplate.opsForList().leftPop("messages");
        redisTemplate.opsForList().rightPop("messages");
        List<Object> range = redisTemplate.opsForList().range("messages", 0, -1);
        
        //集合操作 栈 lpush+lpop=Stack(栈)
		redisTemplate.opsForList().leftPush("messages", "msg1");
        redisTemplate.opsForList().leftPush("messages", "msg2");
        redisTemplate.opsForList().leftPush("messages", "msg3");
        redisTemplate.opsForList().leftPush("messages", "msg4");
        redisTemplate.opsForList().leftPush("messages", "msg5");
        redisTemplate.opsForList().leftPop("messages");
        
        //集合操作 队列 lpush+rpop=Queue(队列)
        redisTemplate.opsForList().leftPush("messages", "msg1");
        redisTemplate.opsForList().rightpop("messages");
        
        //集合操作 lpush+ltrim=Capped Collection(有限集合)
        redisTemplate.opsForList().leftPush("limit-message", "msg1");
        redisTemplate.opsForList().leftPush("limit-message", "msg2");
        redisTemplate.opsForList().leftPush("limit-message", "msg3");
        redisTemplate.opsForList().leftPush("limit-message", "msg4");
        redisTemplate.opsForList().leftPush("limit-message", "msg5");
        redisTemplate.opsForList().leftPush("limit-message", "msg6");
        redisTemplate.opsForList().leftPush("limit-message", "msg7");
        redisTemplate.opsForList().leftPush("limit-message", "msg8");
        redisTemplate.opsForList().trim("limit-message",0,3);

        //hash操作 优势 比整体序列化更节省空间
        redisTemplate.opsForHash().put("user:1001", "name", "Alice");
        redisTemplate.opsForHash().put("user:1001", "age", "18");
        redisTemplate.opsForHash().put("user:1001", "name", "Alice2");

        //set操作
        redisTemplate.opsForSet().add("message-set", "message-set-01");
        redisTemplate.opsForSet().add("message-set", "message-set-02");
        redisTemplate.opsForSet().add("message-set", "message-set-03");
        redisTemplate.opsForSet().add("message-set", "message-set-04");

        redisTemplate.opsForSet().isMember("message-set", "message-set");
        redisTemplate.opsForSet().size("message-set");
        redisTemplate.opsForSet().members("message-set");
        redisTemplate.opsForSet().randomMember("message-set");
        redisTemplate.opsForSet().randomMembers("message-set", 6);

        redisTemplate.opsForSet().pop("message-set");
        redisTemplate.opsForSet().remove("message-set", "message-set");
        //zset操作
        //管道操作
    }
}
相关推荐
金銀銅鐵9 分钟前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端
uzong1 小时前
我研读了 500 个 Spring Boot 生产级代码库,90% 都犯了这 7 个致命错误
后端
虹科网络安全1 小时前
艾体宝产品|深度解读 Redis 8.4 新增功能:原子化 Slot 迁移(上)
数据库·redis·bootstrap
xiaobaoyu2 小时前
ssm知识点梳理
后端
IT_陈寒2 小时前
Vite的public文件夹放静态资源?这坑我替你踩了
前端·人工智能·后端
浮游本尊2 小时前
合同同步逻辑
后端
子兮曰3 小时前
别让爬虫白嫖你的导航站了:纯免费,手把手实现加密字体防爬
前端·javascript·后端
阿苟3 小时前
JAVA重点难点
后端
uzong3 小时前
TIOBE 指数:2026 年编程语言排行榜
后端
小村儿3 小时前
连载06 - Hooks 源码深度解析:Claude Code 的确定性自动化体系
前端·后端·ai编程