1.Redis的Java客户端
Redis的Java客户端有很多,常用的有以下几种:
Jedis:是Redis官方推荐的Java连接开发工具,只是将Redis的所有命令封装成了Java可直接调用的方法Lettuce:是 Redis 的一款高级 Java 客户端,目前已成为 SpringBoot 2.0 版本默认的 redis 客户端Spring Data Redis:是Spring的一部分,对Redis底层开发包(如Jedis、Lettuce)进行了高度封装,在Spring项目中,可使用Spring Data Redis来简化操作
Spring Data Redis与spring的整合,更像mybatis与spring整合,通过工厂,创建实例,再操作实例。而Jedis,更像spring与MySQL结合,通过操作连接池,获取实例操作数据库
2.Spring Data Redis的使用方式
操作步骤:
- 导入Spring Data Redis的maven坐标
- 配置Redis数据源
- 编写配置类,创建RedisTemplate对象
- 通过RedisTemplate对象操作Redis
2.1 导入maven坐标
在项目pom.xml文件中导入maven坐标:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.2 配置Redis数据源
在项目application.yml中配置数据源:
spring:
redis:
host:localhost
port:6379
password:qing
database:0
2.3 编写配置类,创建RedisTemplate对象
在项目config文件夹下创建RedisConfiguration.java:
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate redisTemplate = new RedisTemplate();
//设置redis的连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置redis key的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}
2.4 通过RedisTemplate对象操作Redis
通过RedisTemplate对象创建常用redis类型:
@SpringBootTest
public class SpringDataRedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testRedisTemplate(){
//操作String
ValueOperations valueOperations = redisTemplate.opsForValue();
//操作hash
HashOperations hashOperations = redisTemplate.opsForHash();
//操作list
ListOperations listOperations = redisTemplate.opsForList();
//操作set
SetOperations setOperations = redisTemplate.opsForSet();
//操作zset
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
}
}
通过RedisTemlpate对象操作Redis String类型:
@Test
public void testString(){
//set
redisTemplate.opsForValue().set("city","北京");
//get
String city = (String) redisTemplate.opsForValue().get("city");
//setex
redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);
//setnx
redisTemplate.opsForValue().setIfAbsent("lock","1");
}
通过RedisTemlpate对象操作Redis Hash类型:
@Test
public void testHash(){
HashOperations hashOperations = redisTemplate.opsForHash();
//hset
hashOperations.put("100","name","qing");
hashOperations.put("100","age","23");
//hget
String name = (String)hashOperations.get("100","name");
System.out.println(name);
//hkeys
Set keys = hashOperations.keys("100");
System.out.println(keys);
//hvals
List values = hashOperations.values("100");
//hdel
hashOperations.delete("100","age");
}
其余Redis数据类型操作与之类似,这里不再复述