(1)认识Redis
安装Redis可以参考下面的文章
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)_redis安装-CSDN博客
(1)redis可以储存多种数据类型
(2)Redis的操作命令
Redis的各种数据类型有不同的操作语句
字符串操作命令
哈希操作命令
列表操作命令
集合操作命令
有序集合操作命令
通用命令
(2)如何在Java中操作redis
要在IDEA中操作redis 首先要启动Redis服务 才可以在IDEA中链接Redis数据库
启动Redis的服务端
redis-server.exe redis.windows.conf
启动Redis的客户端
redis-cli.exe -h localhost -p 6379 -a 123456
利用Spring Data Redis 操作redis
(1)导入maven坐标
<dependency>
<groupId>aven-repository.org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.7.3</version>
</dependency>
(2)配置Redis数据源
(3)编写配置类
/**
* @Author: Sakura
* @Date: 2024/8/31 16:08
* @Version: v1.0.0
* @Description: TODO
**/
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate redisTemplate = new RedisTemplate();
// 设置Redis连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 设置RedisTemplate的Key序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}
(4)在测试类中操作Redis
对String的数据进行操作
/**
* 测试String类型
*/
@Test
public void testString() {
redisTemplate.opsForValue().set("name", "lyh");
String name = (String) redisTemplate.opsForValue().get("name");
System.out.println(name);
redisTemplate.opsForValue().set("code", "123456", 60, TimeUnit.MINUTES);
redisTemplate.opsForValue().setIfAbsent("lock" , "1");
redisTemplate.opsForValue().setIfAbsent("lock" , "1");
}
对Hash的数据进行操作
/**
* 测试Hash类型
*/
@Test
public void testHash() {
HashOperations hashOperations = redisTemplate.opsForHash();
hashOperations.put("user", "name", "lyh");
hashOperations.put("user", "age", "18");
String name = (String) hashOperations.get("user", "name");
System.out.println(name);
String age = (String) hashOperations.get("user", "age");
System.out.println(age);
Set keys = hashOperations.keys("user");
System.out.println(keys);
List values = hashOperations.values("user");
System.out.println(values);
hashOperations.delete("user", "age");
}
对Set的数据进行操作
/**
* 测试Set类型
*/
@Test
public void testSet() {
SetOperations setOperations = redisTemplate.opsForSet();
setOperations.add("set1", "a", "b", "c", "d", "e");
setOperations.add("set2", "f", "g", "h");
Set members = setOperations.members("set1");
System.out.println(members);
Long size = setOperations.size("set1");
System.out.println(size);
Set intersect = setOperations.intersect("set1", "set2");
System.out.println(intersect);
Set union = setOperations.union("set1", "set2");
System.out.println(union);
setOperations.remove("set1", "a", "b");
}
对ZSet的数据进行操作
/**
* 测试ZSet类型
*/
@Test
public void testZSet() {
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
zSetOperations.add("zset", "a", 1);
zSetOperations.add("zset", "b", 2);
zSetOperations.add("zset", "c", 3);
Set zset = zSetOperations.range("zset", 0, -1);
System.out.println(zset);
zSetOperations.incrementScore("zset", "b", 1);
zSetOperations.remove("zset", "a");
}
使用通用命令
/**
* 测试通用方法
*/
@Test
public void testCommon() {
Set keys = redisTemplate.keys("*");
System.out.println(keys);
Boolean name = redisTemplate.hasKey("name");
Boolean set = redisTemplate.hasKey("set");
for (Object key : keys) {
DataType type = redisTemplate.type(key);
System.out.println(type.name());
}
redisTemplate.delete("list");
}