redis提供了多重相关操作,以前只会简单的get、set,当项目用到rightPush、rightPop以及leftPush、leftPop处理优先级任务时,我才发现这个功能的好用,善用工具类,坚决很多问题,看完有惊喜
/**
* redis 的get和set方法
*/
@Test
public void test01() {
CacheUtils.set("jarvins:robot:" + 1, initRobotRole(1));
CacheUtils.set("jarvins:robot:" + 2, initRobotRole(2));
CacheUtils.set("jarvins:robot:" + 3, "jarvins");
System.out.println(CacheUtils.get("jarvins:robot:1", RobotRole.class));
RobotRole robotRole = CacheUtils.get("jarvins:robot:2", RobotRole.class);
System.out.println(robotRole.getRoleName());
System.out.println(CacheUtils.get("jarvins:robot:3",String.class));
}
/**
* redis 的del方法: 可以输入多个key
*/
@Test
public void test02() {
CacheUtils.del("jarvins:robot:" + 2,"jarvins:robot:" + 1);
}
/**
* getObj的使用
*/
@Test
public void test03() {
Object obj = CacheUtils.getObj("jarvins:robot:1");
System.out.println(obj);
}
/**
* getObj
* retain true保留,false取完直接删掉
*/
@Test
public void test04() {
Object obj = CacheUtils.getObj("jarvins:robot:1", false);
System.out.println("============" + obj);
}
@Test
public void test05(){
CacheUtils.set("jarvins:robot:num",100);
CacheUtils.incr("jarvins:robot:num",4);
final double decr = CacheUtils.decr("jarvins:robot:num", 2);
System.out.println(decr);
}
// ------------------------------------------以下针对map进行操作-------------------------------------------------//
/**
* 向key对应的map中添加缓存对象
* addMap(String key, String field, T obj)
*/
@Test
public void test06() {
CacheUtils.addMap("jarvins:robot:robotName", initRobot("robotCuqi").getLoginName(), initRobotRole(1));
}
/**
* CacheUtils.getMapField
*/
@Test
public void test07() {
RobotRole jarvins = CacheUtils.getMapField("jarvins:robot:robotName", initRobot("jarvins1").getLoginName(), RobotRole.class);
System.out.println(jarvins);
}
/**
* 获取所有的map集合
*/
@Test
public void test08(){
Map<String, RobotRole> robotRoleMap = CacheUtils.mget("jarvins:robot:robotName", RobotRole.class);
System.out.println(robotRoleMap);
System.out.println(robotRoleMap.get("jarvins1"));
System.out.println(robotRoleMap.get("jarvins1").getRoleName());
}
/**
* 根据key值删除map元素
*/
@Test
public void test09() {
CacheUtils.delMapField("jarvins:robot:robotName","robotCuqi");
}
/**
* 设置失效时间
*/
@Test
public void test10() {
CacheUtils.expire("jarvins:robot:3", 10000);
}
//------------------------------------set操作-----------------------------------//
@Test
public void test11() {
CacheUtils.sadd("jarvins:fans:keys","fans","cars","robotic");
Set<String> keys = CacheUtils.keys("jarvins:fans:keys");
}
//-----------------------------------list-------------------------------------//
/**
* rightPush
*/
@Test
public void test12(){
CacheUtils.rightPush("jarvins:fans:robotList", initRobotUserList1());
List<Object> objectList = CacheUtils.returnList("jarvins:fans:robotList");
System.out.println(objectList);
}
/**
* 从list左侧插入
*/
@Test
public void test13() {
CacheUtils.leftPush("jarvins:fans:robotList", initRobotUserList2());
}
/**
* 取出所有的list内容
*/
@Test
public void test14() {
List<Object> objects = CacheUtils.returnList("jarvins:fans:robotList");
Object o = objects.get(0);
System.out.println(objects);
System.out.println(o);
}
@Test
public void test15(){
CacheUtils.leftPop("jarvins:fans:robotList");
}
// 初始化
public RobotRole initRobotRole(Integer robotId) {
RobotRole robotRole = new RobotRole();
robotRole.setRoleName("ai机器人");
robotRole.setLastEditorId(123);
robotRole.setCreateTime(new Date());
robotRole.setId(robotId);
return robotRole;
}
public RobotUser initRobot(String robotName){
RobotUser robotUser = new RobotUser();
robotUser.setLoginName(robotName);
robotUser.setRobotName(robotName);
return robotUser;
}
public List<RobotUser> initRobotUserList1(){
List<RobotUser> userList = Lists.newArrayList();
userList.add(initRobot("BruceLee1"));
userList.add(initRobot("BruceLee2"));
userList.add(initRobot("BruceLee3"));
return userList;
}
public List<RobotUser> initRobotUserList2(){
List<RobotUser> userList = Lists.newArrayList();
userList.add(initRobot("BruceLee7"));
userList.add(initRobot("BruceLee8"));
userList.add(initRobot("BruceLee9"));
return userList;
}
此测试类拿去就可以用,但是不能跑,相关的代码有点多,可以看看下面的这个地址
https://gitee.com/SmileLsf/jarvins_redis.git