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));  
	}

运行结果:

图形化结果:

相关推荐
兆子龙4 分钟前
Raft 共识算法与 etcd 实践:从选主到日志复制的完整链路
后端·架构
csdn_aspnet7 分钟前
技术难题:高并发场景下的“超卖”现象(库存一致性)
redis·lua·秒杀
Dinwork7 分钟前
Skills 开发指南-结合示例详细讲解skills原理和使用方法
后端
生锈的键盘8 分钟前
rk3588目标检测:Jupyter中OpenCV实时预览方法
后端
舒一笑11 分钟前
Windows 使用 Codex / AI 编程时 IDEA 中文乱码?一篇文章彻底解决
后端·程序员·intellij idea
兆子龙16 分钟前
Linux 网络栈与 epoll:从网卡到用户态的高性能 I/O 模型剖析
后端·架构
ZZZKKKRTSAE27 分钟前
快速上手NoSql数据库Redis集群
redis·nosql
若水不如远方33 分钟前
分布式一致性协议(五):殊途同归 —— ZAB 协议与 ZooKeeper 架构
分布式·后端·zookeeper
我叫黑大帅33 分钟前
如何使用WebSocket实现一个公域聊天室? --Go
后端·面试·go
只做人间不老仙34 分钟前
C++ grpc rpc取消示例学习
后端·grpc