目录
springboot对redis的操作封装了两个StringRedisTemplate和RedisTemplate类,StringRedisTemplate是RedisTemplate的子类,StringRedisTemplate它只能存储字符串类型,无法存储对象类型。要想用StringRedisTemplate存储对象必须把对象转为json字符串。
1.StringRedisTemplate
1.1.引入相关的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
1.2.注入StringRedisTemplate该类对象
@Autowired
private StringRedisTemplate redisTemplate;
1.3配置redis的地址
#配置 redis的地址
spring.redis.port=6379
spring.redis.host=192.168.74.152
1.4.使用StringRedisTemplate
1.4.1.字符串操作
//里面所有的key还是value field它的类型必须都是String类型。
//因为key和value获取field他们使用的都是String的序列化方式
@Autowired
private StringRedisTemplate redisTemplate;
@Test
void contextLoads() {
//对字符串进行操作
//删除指定的key
// redisTemplate.delete("k1");
//查看指定所有的key
// redisTemplate.keys("k1");
//是否存在指定的key
// redisTemplate.hasKey("k1");
//对字符数组进行操作 对每个类型的操作都封装成一个方法
ValueOperations<String, String> stringStringValueOperations = redisTemplate.opsForValue();
//第一个参数是key 第二个参数是key的值 第三个参数时间长度 第四个参数时间类型
stringStringValueOperations.set("k11","李四",30, TimeUnit.SECONDS);
//第一个参数是key 第二个参数是key的值 第三个参数时间长度 第四个参数时间类型 setIfAbsent等价于setnx,如果存入成功
//返回true 失败返回false
stringStringValueOperations.setIfAbsent("k1","张三",30,TimeUnit.SECONDS);
//最某个key进行追加值
stringStringValueOperations.append("k1","该吃饭了");
//递减
// stringStringValueOperations.decrement();
//获取指定的key
//stringStringValueOperations.get();
//递增
//stringStringValueOperations.increment();
//批量递增
//stringStringValueOperations.multiSet();
}
1.4.2.对hash类型的操作。
@Test
public void Test01(){
//对hash类型的操作。
HashOperations<String, Object, Object> forHash = redisTemplate.opsForHash();
forHash.put("k2","name","张三");
forHash.put("k2","age","15");
Map<String,String> map=new HashMap<>();
map.put("name","李四");
map.put("age","25");
forHash.putAll("k3",map);
//获取指定key和field获取对应value的值
Object o = forHash.get("k2", "name");
System.out.println(o);
//获取所有指定key 的field
Set<Object> k1 = forHash.keys("k2");
System.out.println(k1);
//获取指定key 的value
List<Object> k11 = forHash.values("k2");
System.out.println(k11);
//获取k2对于的所有的field和value
Map<Object, Object> k12 = forHash.entries("k2");
System.out.println(k12);
}