springboot连接Redis的教程详解
作者:触初
这篇文章主要介绍了springboot连接Redis的教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
创建springboot项目


在NoSQL中选择Redis


项目目录

pom.xml中还需要加入下面的jar包
org.springframework.boot spring-boot-starter-json
在application.properties文件中添加Redis服务器信息
spring.redis.host=192.168.5.132 spring.redis.port=6379
剩下4个test类,我直接以源码的方式粘出来,里面有些代码是非必须的,我保留了测试的验证过程,所以里面会有冗余代码。(这些代码在我GitHub上的练习项目中也有)
package com.myspringboot.redis;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(DemoApplication.class, args);
RedisTest redisTest = configurableApplicationContext.getBean(RedisTest.class);
redisTest.testRedis();
}
}
package com.myspringboot.redis;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
@Configuration
public class MyTemplate {
@Bean
public StringRedisTemplate getMyTemplate(RedisConnectionFactory redisConnectionFactory){
StringRedisTemplate stringRedisTemplate = new StringRedisTemplate(redisConnectionFactory);
stringRedisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
return stringRedisTemplate;
}
}
package com.myspringboot.redis;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.hash.Jackson2HashMapper;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class RedisTest {
@Autowired
RedisTemplate redisTemplate;
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
ObjectMapper objectMapper;
// 自定义模板
@Autowired
@Qualifier("getMyTemplate")
StringRedisTemplate myStringRedisTemplate;
public void testRedis() {
//redis中直接查看时,乱码
redisTemplate.opsForValue().set("key1", "hello1");
System.out.println(redisTemplate.opsForValue().get("key1"));
//redis中直接查看时,正常
stringRedisTemplate.opsForValue().set("key2", "hello2");
System.out.println(stringRedisTemplate.opsForValue().get("key2"));
RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
connection.set("key3".getBytes(), "hello3".getBytes());
System.out.println(new String(connection.get("key3".getBytes())));
HashOperations<String, Object, Object> hash = stringRedisTemplate.opsForHash();
hash.put("key4", "name", "张三");
hash.put("key4", "age", "18");
System.out.println(hash.get("key4", "name"));
System.out.println(hash.entries("key4"));
stringRedisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
Jackson2HashMapper jackson2HashMapper = new Jackson2HashMapper(objectMapper, false);// true 扁平化(将对象中的参数展开)
User user = new User();
user.setId(123);
user.setName("zhangsan");
stringRedisTemplate.opsForHash().putAll("key5", jackson2HashMapper.toHash(user));
Map map = stringRedisTemplate.opsForHash().entries("key5");
User user1 = objectMapper.convertValue(map, User.class);
System.out.println(user1.getId());
System.out.println(user1.getName());
myStringRedisTemplate.opsForHash().putAll("key6", jackson2HashMapper.toHash(user));
Map map1 = myStringRedisTemplate.opsForHash().entries("key6");
User user2 = objectMapper.convertValue(map, User.class);
System.out.println(user2.getId());
System.out.println(user2.getName());
//发布订阅
myStringRedisTemplate.convertAndSend("qunliao", "hello");
RedisConnection connection1 = myStringRedisTemplate.getConnectionFactory().getConnection();
connection1.subscribe(new MessageListener() {
@Override
public void onMessage(Message message, byte[] bytes) {
byte[] body = message.getBody();
System.out.println(new String(body));
}
}, "qunliao".getBytes());
while (true){
myStringRedisTemplate.convertAndSend("qunliao", "hello");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.myspringboot.redis;
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
到此这篇关于springboot连接Redis的教程详解的文章就介绍到这了,更多相关springboot连接Redis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- SpringBoot实现自定义Redis的连接的流程步骤
- SpringBoot无法连接redis的解决方案
- springBoot连接远程Redis连接失败的问题解决
- 关于SpringBoot集成Lettuce连接Redis的方法和案例
- springboot连接不上redis的三种解决办法
- springboot连接redis并动态切换database的实现方法
- springboot 如何使用jedis连接Redis数据库
- springboot2整合redis使用lettuce连接池的方法(解决lettuce连接池无效问题)
- 基于SpringBoot2.0默认使用Redis连接池的配置操作
- Springboot2.X集成redis集群(Lettuce)连接的方法
- Spring Boot2 整合连接 Redis的操作方法
