Spring与Spring boot对redis的简单使用
一、Spring简单使用redis
1.导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
2.使用普通连接操作测试
package com.hy.test;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class JedisTest {
public static void main(String[] args) {
Jedis jedis=new Jedis("你的redis所在主机的ip",开启的redis端口号);//必须运行远程连接 必须防火墙放行该端口号
//设置数据
jedis.set("name","张三");
jedis.set("age","李四");
jedis.set("sex","男");
//获得所有的key
Set<String> keys = jedis.keys("*");
System.out.println("所有的key:"+keys);
}
}
连接redis查看结果:
3.使用jedis连接池测试
package com.hy.test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolTest {
public static void main(String[] args) {
//连接池的配置
JedisPoolConfig config=new JedisPoolConfig();
config.setMaxTotal(100);//设置连接池的最大连接数
config.setMaxIdle(10);//设置最大空闲的个数
config.setTestOnBorrow(true);//在从连接池这种获取连接对象前是否测试该对象可以。
//创建连接池对象
JedisPool jedisPool=new JedisPool(config,"你的redis所在主机的ip",开启的redis端口号);
//获取jedis对象
Jedis jedis = jedisPool.getResource();
//前面创建的数据
System.out.println(jedis.get("name"));
jedis.close();//释放资源
}
}
结果:
二、Spring boot简单使用redis
1.Spring boot快速建立
先选择Web,勾选Spring Web,再勾选spring boot的redis整合包
2.配置appliation.properties文件
#主机ip
spring.redis.host=你自己的IP
#端口号
spring.redis.port=6379
#连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=20
#连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
#连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
#连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=20000
#连接超时时间(毫秒)
spring.redis.timeout=0
3.对Redis操作的两个类StringRedisTemplate和RedisTemplate
他们两者之间的区别,以及该怎么使用。
虽然连个类都是对redis的操作,但是StringRedisTemplate是RedisTemplate的子类,我们知道一般情况子类都是对父类的增强与扩展,他们两者之间的区别主要在于他们使用的序列化类。
RedisTemplate使用的是 JdkSerializationRedisSerializer
StringRedisTemplate使用的是 StringRedisSerializer
RedisTemplate使用的序列类在在操作数据的时候,比如说存入数据会将数据先序列化成字节数组
然后在存入Redis数据库,这个时候打开Redis查看的时候,你会看到你的数据不是以可读的形式
展现的,而是以字节数组显示,类似下面
这里因为name已经被删除,所以显示为nil(空)
使用时注意事项:
当你的redis数据库里面本来存的是字符串数据或者你要存取的数据就是字符串类型数据的时候,那么你就使用StringRedisTemplate即可。
但是如果你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象,那么使用RedisTemplate是更好的选择。
RedisTemplate使用时常见问题:
redisTemplate 中存取数据都是字节数组。当redis中存入的数据是可读形式而非字节数组时,使用redisTemplate取值的时候会无法获取导出数据,获得的值为null。可以使用 StringRedisTemplate 试试。
4.连接测试
package com.hy.test;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import java.util.*;
import java.util.concurrent.TimeUnit;
@SpringBootTest
class SpringbootRedisApplicationTests {
@Autowired
private StringRedisTemplate redisTemplate;
@Test
public void testString(){
//操作字符串类型
ValueOperations<String, String> forValue = redisTemplate.opsForValue();
//设置数据
forValue.set("name","李四");
forValue.set("age","18");
forValue.set("sex","男");
//获取数据
List<String> list = new ArrayList<>();
list.add("name");
list.add("age");
list.add("sex");
List<String> strings = forValue.multiGet(list);
System.out.println(strings);
}
}
测试结果:
总结
以上就是今天要讲的内容,本文仅仅简单介绍了redis的连接,后面将介绍redis的使用场景及如何使用,想要更好的使用redis还需要我们更深入的学习。