pom文件依赖:
<!--redis数据库-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--spring2.0集成redis所需common-pool2-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
yml文件:
spring:
redis:
host: localhost
password:
port: 6379
jedis:
pool:
#最大连接数
max-active: 8
#最大阻塞等待时间(负数表示没限制)
max-wait: -1ms
#最大空闲
max-idle: 8
#最小空闲
min-idle: 0
#连接超时时间
timeout: 10000
# 0号数据库
database: 0
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class DigitalmallApplicationTests {
@Autowired
StringRedisTemplate srt;
@Test
public void contextLoads() {
/*Car c=new Car();
c.setGoodId(1000l);
c.setNum(1000);
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
c.setSo(list);*/
User u=new User();
u.setId(1001);
u.setName("我是name");
srt.opsForValue().set("1001:car",JSON.toJSONString(u));
String s = srt.opsForValue().get("1001:car");
System.err.println(s+">>>>>");
}
}
RedisTemplate使用需要自动生成key等其他的配置,在这里不再列出
补充(引用其他人的博文):
关于RedisTemplate和StringRedisTemplate的区别:
最近在开始在学习Redis以及如何在Java当中去使用Redis,Redis是什么我这里就不说了。
我主要想说的是Redis和Java当中Spring结合起来的时候,使用到的RedisTemplate和StringRedisTemplate
他们两者之间的区别,以及该怎么使用。
RedisTemplate看这个类的名字后缀是Template,如果了解过Spring如何连接关系型数据库的,大概不会难猜出这个类是做什么的 ,它跟JdbcTemplate一样封装了对Redis的一些常用的操作,当然StringRedisTemplate跟RedisTemplate功能类似那么肯定就会有人问,为什么会需要两个Template呢,一个不就够了吗?其实他们两者之间的区别主要在于他们使用的序列化类。
- RedisTemplate使用的是 JdkSerializationRedisSerializer
- StringRedisTemplate使用的是 StringRedisSerializer
当然从Redis获取数据的时候也会默认将数据当做字节数组转化,这样就会导致一个问题,当需要获取的
-
@Test
-
public void testRedisSerializer(){
-
User u =
new User();
-
u.setName(
"java");
-
u.setSex(
"male");
-
redisTemplate.opsForHash().put(
"user:",
"1",u);
-
/*查看redisTemplate 的Serializer*/
-
System.out.println(redisTemplate.getKeySerializer());
-
System.out.println(redisTemplate.getValueSerializer());
-
-
/*查看StringRedisTemplate 的Serializer*/
-
System.out.println(stringRedisTemplate.getValueSerializer());
-
System.out.println(stringRedisTemplate.getValueSerializer());
-
-
/*将stringRedisTemplate序列化类设置成RedisTemplate的序列化类*/
-
stringRedisTemplate.setKeySerializer(
new JdkSerializationRedisSerializer());
-
stringRedisTemplate.setValueSerializer(
new JdkSerializationRedisSerializer());
-
-
/*即使在更换stringRedisTemplate的的Serializer和redisTemplate一致的
-
* JdkSerializationRedisSerializer
-
* 最后还是无法从redis中获取序列化的数据
-
* */
-
System.out.println(stringRedisTemplate.getValueSerializer());
-
System.out.println(stringRedisTemplate.getValueSerializer());
-
-
User user = (User) redisTemplate.opsForHash().get(
"user:",
"1");
-
User user2 = (User) stringRedisTemplate.opsForHash().get(
"user:",
"1");
-
System.out.println(
"dsd");
-
}
附注:
最近在开始在学习Redis以及如何在Java当中去使用Redis,Redis是什么我这里就不说了。
我主要想说的是Redis和Java当中Spring结合起来的时候,使用到的RedisTemplate和StringRedisTemplate
他们两者之间的区别,以及该怎么使用。
RedisTemplate看这个类的名字后缀是Template,如果了解过Spring如何连接关系型数据库的,大概不会难猜出这个类是做什么的 ,它跟JdbcTemplate一样封装了对Redis的一些常用的操作,当然StringRedisTemplate跟RedisTemplate功能类似那么肯定就会有人问,为什么会需要两个Template呢,一个不就够了吗?其实他们两者之间的区别主要在于他们使用的序列化类。
- RedisTemplate使用的是 JdkSerializationRedisSerializer
- StringRedisTemplate使用的是 StringRedisSerializer
当然从Redis获取数据的时候也会默认将数据当做字节数组转化,这样就会导致一个问题,当需要获取的
-
@Test
-
public void testRedisSerializer(){
-
User u =
new User();
-
u.setName(
"java");
-
u.setSex(
"male");
-
redisTemplate.opsForHash().put(
"user:",
"1",u);
-
/*查看redisTemplate 的Serializer*/
-
System.out.println(redisTemplate.getKeySerializer());
-
System.out.println(redisTemplate.getValueSerializer());
-
-
/*查看StringRedisTemplate 的Serializer*/
-
System.out.println(stringRedisTemplate.getValueSerializer());
-
System.out.println(stringRedisTemplate.getValueSerializer());
-
-
/*将stringRedisTemplate序列化类设置成RedisTemplate的序列化类*/
-
stringRedisTemplate.setKeySerializer(
new JdkSerializationRedisSerializer());
-
stringRedisTemplate.setValueSerializer(
new JdkSerializationRedisSerializer());
-
-
/*即使在更换stringRedisTemplate的的Serializer和redisTemplate一致的
-
* JdkSerializationRedisSerializer
-
* 最后还是无法从redis中获取序列化的数据
-
* */
-
System.out.println(stringRedisTemplate.getValueSerializer());
-
System.out.println(stringRedisTemplate.getValueSerializer());
-
-
User user = (User) redisTemplate.opsForHash().get(
"user:",
"1");
-
User user2 = (User) stringRedisTemplate.opsForHash().get(
"user:",
"1");
-
System.out.println(
"dsd");
-
}