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操作
        //管道操作
    }
}
相关推荐
神奇小汤圆12 小时前
2026大厂Java岗面试记录:八股+场景+项目+AI,一文讲透快速上岸路径(含答案)
后端
神奇小汤圆12 小时前
我说MySQL每张表最好不超过2000万条数据,面试官让我回去等通知?
后端
HuanYu13 小时前
JDK实现动态代理
后端
袋鱼不重13 小时前
解决 Web 端图片预览与下载颜色不一致的一种工程方案
前端·后端
lizhongxuan13 小时前
Agent 的 Code-driven Assembly
后端
稀土熊猫君13 小时前
一个人能做出什么开源项目?
vue.js·后端·开源
lizhongxuan13 小时前
Agent Runtime 中的 Code-driven Assembly
后端
货拉拉技术13 小时前
资损下降 99.96% 的背后: AI 资损防控平台实战
后端