SpringBoot项目Redis使用

SpringBoot项目Redis使用

引入依赖

xml 复制代码
<!-- redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

对Redis的信息进行配置

yaml 复制代码
  redis:
    database: 0 # 使用Redis的哪一个数据库,0-15 任选
    port: 6379 # 自己的Redis配置的端口
    host: localhost # 自己Redis的网络自己,我这里是本地
    password: xxxxxxx # 自己Redis配置的密码
    lettuce: # 关于lettuce这个默认也行
      pool:
        min-idle: 1
        max-active: 10
        max-idle: 10

为方便使用设置序列化器,使用时统一用RedisTemplate<String,Object>模式

这里就是注册一个Redis序列化的Bean方便使用

java 复制代码
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        // 我们为了自己开发方便,一般直接使用 <String, Object>
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(redisConnectionFactory);
        // Json序列化配置
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        // String 的序列化
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        // key采用String的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        // hash的key也采用String的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        // value序列化方式采用jackson
        template.setValueSerializer(jackson2JsonRedisSerializer);
        // hash的value序列化方式采用jackson
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

到这里基本就可以使用了

使用

我这里进行测试使用

使用key:string-value:string模式

首先直接使用一般的设置Value,这里的代码就是设置一对键值

java 复制代码
@SpringBootTest
class SpringbootTemplateApplicationTests {

	@Resource
	RedisTemplate<String,Object> redisTemplate ;
	@Test
	void testRedis(){
		String phone = "12345678901";
		redisTemplate.opsForValue().set("test:code:"+ phone,"123456");
 		System.out.println(redisTemplate.opsForValue().get("test:code:"+phone));
	}
}

结果:

用图形化工具查看

符合预期的结果

使用Hash模式

使用代码:

java 复制代码
@Test
	void testRedisHashValue(){
		String token = UUID.randomUUID().toString();
		User user = new User(1235432l,"xwhking","password","xiaoxiaowei");
		Map<String, Object> stringObjectMap = BeanUtil.beanToMap(user);
		redisTemplate.opsForHash().putAll("test:user:"+token,stringObjectMap);
		System.out.println(redisTemplate.opsForHash().entries("test:user:"+token));
	}

打印结果:

图形化结果查看:

直接存一个一个对象呢?会转化为JSON进行存储

只不过对这里取出来的值进行使用的时候要进行强制类型转换

使用代码:

java 复制代码
void testRedisJson(){
		String token = UUID.randomUUID().toString();
		User user = new User(1235432l,"xwhking","password","xiaoxiaowei");
		redisTemplate.opsForValue().set("test:user:"+token,user);
		System.out.println(redisTemplate.opsForValue().get("test:user:"+token));  
	}

运行结果:

图形化结果:

相关推荐
FelixBitSoul18 分钟前
缓存淘汰策略全解:从原理到手写实现(Java / Go / Python)
后端·面试
AI人工智能+电脑小能手39 分钟前
【大白话说Java面试题】【Java基础篇】第29题:静态代理和动态代理的区别是什么
java·开发语言·后端·面试·代理模式
小编码上说40 分钟前
LSH(局部敏感哈希)分桶,海量数据下的相似性搜索解决方案
java·spring boot·缓存·langchain4j·lsh·局部敏感哈希·ai调用优化
计算机_毕业设计1 小时前
java-springboot数字藏品系统 基于 SpringBoot 的区块链数字艺术品交易平台 Java 微服务架构下的加密藏品展示与拍卖系统计算机毕业设计
java·spring boot·课程设计
dovens2 小时前
SpringBoot集成MQTT客户端
java·spring boot·后端
❀͜͡傀儡师2 小时前
Spring Boot 集成 RocksDB 实战:打造高性能 KV 存储加速层
java·spring boot·后端·rocksdb
TeamDev2 小时前
如何在 DotNetBrowser 中使用本地 AI 模型
前端·后端·.net
Rust语言中文社区2 小时前
【Rust日报】2026-05-02 Temper - 用 Rust 编写的 Minecraft 服务器项目发布 0.1.0 版
运维·服务器·开发语言·后端·rust
NaMM CHIN2 小时前
Spring Boot + Spring AI快速体验
人工智能·spring boot·spring