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操作
        //管道操作
    }
}
相关推荐
希望永不加班8 分钟前
SpringBoot 集成测试:@SpringBootTest 与 MockMvc
java·spring boot·后端·log4j·集成测试
uzong13 分钟前
软件人员可以关注的 Skill,亲测确实不错,值得试一下
人工智能·后端
掘金虾16 分钟前
Hono 框架入门到实战:用 Node.js 写一个支持工具调用的流式对话 Agent
后端
用户83562907805117 分钟前
Python 自动拆分 Word 文档教程:按分节符与分页符处理
后端·python
树獭叔叔22 分钟前
Claude Code 工具系统深度剖析:从静态注册到动态发现
后端·aigc·openai
树獭叔叔37 分钟前
Claude Code 的上下文管理:多层渐进式压缩架构深度解析
后端·aigc·openai
计算机学姐37 分钟前
基于SpringBoot的高校竞赛管理系统
java·spring boot·后端·spring·信息可视化·tomcat·mybatis
nghxni40 分钟前
LightESB PlatformHttp v1.0.0:DS 数据转换实践
后端
卷毛的小庄44 分钟前
被 AI 惯坏后踩的坑:Spring 代理对象 + 反射 = NPE
后端
leo_messi941 小时前
RabbitMq(五) -- SpringBoot整合 RabbitMQ 完整实现
spring boot·rabbitmq·java-rabbitmq