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操作
        //管道操作
    }
}
相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
大勇前进1 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
vipxieliang1 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
yuzhi_liu1 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile1 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白801 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端
二月龙1 天前
PHP 接口返回统一响应封装,让前后端对接更省心
后端