springboot连接redis并完成缓存操作
1.连接方式
(1)jedis----传统的项目如ssm等
(2)lettuce—刚出现就被springboot整合
(3)springboot连接redis
2.jedis操作redis服务器
2.1引入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.1</version>
</dependency>
2.2 编写测试代码
void testJedis(){
Jedis jedis=new Jedis("192.168.109.130",6379);
//该类包含很多对redis操作的方法--而这些方法和原来我们使用的命令一样。
Set<String> keys = jedis.keys("*");
System.out.println(keys);
//对string数据类型操作
String set = jedis.set(;"k3", "dongdong");
System.out.println("set:"+set);
String v3 = jedis.get("k3");
System.out.println("v3:"+v3);
jedis.setex("s1",99,"laila");
jedis.close();
}
我们会发现每次使用都需要自己新建一个jedis对象,当使用完之后需要关闭对象,这时我们可以引入jedis的连接池
2.3连接池的使用
//连接池的配置信息
JedisPoolConfig config=new JedisPoolConfig();
config.setMaxTotal(100);//最多的连接个数
config.setMaxIdle(10); //最多空闲的连接个数
config.setMinIdle(2); //最小的空闲个数
config.setTestOnBorrow(true);//在获取连接对象时是否验证该连接对象的连通性
//创建连接池对象
JedisPool jedisPool=new JedisPool(config,"192.168.109.130",6379);
long start = System.currentTimeMillis();
for(int i=0;i<1000;i++){
Jedis jedis = jedisPool.getResource();
String ping = jedis.ping();
jedis.close();
}
long end = System.currentTimeMillis();
System.out.println("耗时:"+(end-start));
long start = System.currentTimeMillis();
//Jedis(String host, int port)
for(int i=0;i<1000;i++){
Jedis jedis=new Jedis("192.168.109.130",6379);
String ping = jedis.ping();
jedis.close();
}
long end = System.currentTimeMillis();
System.out.println("耗时:"+(end-start));
这是我们会发现,使用连接池和不适用连接池是有效率区别的
3.springboot整合redis
3.1引入依赖
<!--redis相关的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
springboot在整合redis时提高两个模板类,StringRedisTemplate和RedisTemplate.以后对redis的操作都在该模板类中。StringRedisTemplate是RedisTemplate的子类。
3.2修改配置文件
#redis的配置信息
spring.redis.host=192.168.1.87
spring.redis.port=6379
#最多获取数
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=-1ms
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
3.3 编写测试的代码
//因为springboot整合redis时会把StringRedisTemplate创建并交于spring容器管理
@Autowired
private StringRedisTemplate redisTemplate;
@Test
void contextLoads() {
//关于key的操作
Set<String> keys = redisTemplate.keys("*");//获取所有的key
System.out.println("keys:"+keys);
Boolean hasKey = redisTemplate.hasKey("k1");//判断是否存在指定的key
System.out.println("判断是否存在指定的key:"+hasKey);
Boolean k1 = redisTemplate.delete("k1");//删除指定的key
System.out.println