spring-data-redis简介
Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作。
Spring-Data-Redis项目(简称SDR)对Redis的Key-Value数据存储操作提供了更高层次的抽象,类似于Spring Framework对JDBC支持一样。
spring-data-redis针对jedis提供了如下功能:
连接池自动管理,提供了一个高度封装的“RedisTemplate”类针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口ValueOperations:简单K-V操作SetOperations:set类型数据操作ZSetOperations:zset类型数据操作HashOperations:针对map类型的数据操作ListOperations:针对list类型的数据操作
//———————————Hash类型的操作:经常用————————————————-
//(1)存入值
@Test
public void boundHashOpsSet(){
redisTemplate.boundHashOps(“namehash”).put(“country1”,”中国”);
redisTemplate.boundHashOps(“namehash”).put(“country2”,”日本”);
redisTemplate.boundHashOps(“namehash”).put(“country3”,”韩国”);
}
//(2)提取所有的KEY
@Test
public void boundHashOpsKeys(){
Set keys = redisTemplate.boundHashOps(“namehash”).keys();
System.out.println(keys);
}
//(3)提取所有的值
@Test
public void boundHashOpsValues(){
List values = redisTemplate.boundHashOps(“namehash”).values();
System.out.println(values);
}
//(4) 根据KEY提取值
@Test
public void boundHashOpsByKey(){
Object name = redisTemplate.boundHashOps(“namehash”).get(“country1”);
System.out.println(name);
}
//根据KEY移除值
@Test
public void boundHashOpsDelByKey(){
redisTemplate.boundHashOps(“namehash”).delete(“country2”);
}
//——————————————值类型的操作:因为操作数量少,所以不常用————————————————-
@Test
public void setValue(){
redisTemplate.boundValueOps(“name”).set(“王五”);
}
@Test
public void getValue(){
Object name = redisTemplate.boundValueOps(“name”).get();
System.out.println(name);
}
@Test
public void deleteValue(){
redisTemplate.delete(“name”);
}
//———————————set类型的操作:因为操作数量少,所以不常用————————————————-
/
存入值
/
@Test
public void boundSetOpsAdd(){
redisTemplate.boundSetOps(“nameset”).add(“曹操”); //放入值
redisTemplate.boundSetOps(“nameset”).add(“刘备”);
redisTemplate.boundSetOps(“nameset”).add(“孙权”);
}
/
提取值
/
@Test
public void boundSetOpsGet(){
Set names= redisTemplate.boundSetOps(“nameset”).members();//取出值
System.out.println(names);
}
/*
删除集合中的某一个值
*/
@Test
public void boundSetOpsDelete(){
redisTemplate.boundSetOps(“nameset”).remove(“曹操”);
}
/**<br /> * 删除整个集合<br /> */<br /> @Test<br /> public void boundSetOpsDeleteAll(){<br /> redisTemplate.delete("nameset");<br /> }
**//----------------------list类型的操作:因为操作数量少,所以不常用---------------------------------**<br /> /**<br /> * 右压栈:后添加的对象排在后边<br /> * 右压栈用的多,因为快,原理是<br /> */<br /> @Test<br /> public void boundListrightPush(){<br /> redisTemplate.boundListOps("namelist").rightPush("赵子龙");<br /> redisTemplate.boundListOps("namelist").rightPush("张飞");<br /> redisTemplate.boundListOps("namelist").rightPush("关羽");<br /> }<br /> /**<br /> * 显示右压栈集合<br /> */<br /> @Test<br /> public void boundListRange(){<br /> List namelist = redisTemplate.boundListOps("namelist").range(0, 10);<br /> System.out.println(namelist);<br /> }<br />
/**<br /> * 查询:根据索引查询集合某个元素<br /> */<br /> @Test<br /> public void boundListIndex(){<br /> Object name = redisTemplate.boundListOps("namelist").index(1);<br /> System.out.println(name);<br /> }
/**<br /> * 删除: 根据值移除集合某个元素<br /> */<br /> @Test<br /> public void bondListRemove(){<br /> redisTemplate.boundListOps("namelist").remove(1,"关羽");<br /> }<br /> /**<br /> * 删除: 删除全部<br /> */<br /> @Test<br /> public void bondListDelete(){<br /> redisTemplate.delete("namelist");<br /> }
Docker 环境下redis安装
docker run ‐di ‐‐name=tensquare_redis ‐p 6379:6379 redis
spring-data-redis使用
(1)引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
(2)提供redis配置信息
redis:
host: 192.168.108.140
(3)在需要使用redis的类中注入模板对象
@Autowired
private RedisTemplate redisTemplate;
(4)调用模板对象中的方法
// 将验证码保存到redis中,方便后面验证使用,设置缓存过期时间,根据日常经验,验证码一般有效时长一分钟
redisTemplate.opsForValue().set(“SmsCode_” + mobile, checkCode);
