SpringDataRedis 属于Spring Data 家族一员,用于对redis的操作进行封装的框架 Spring Data ----- Spring 的一个子项目。Spring 官方提供一套数据层综合解决方案,用 于简化数据库访问,支持NoSQL和关系数据库存储。包括Spring Data JPA 、Spring Data Redis 、SpringDataSolr 、SpringDataElasticsearch 、Spring DataMongodb 等 框架。
首先在类中注入RedisTemplate @Autowired private RedisTemplate redisTemplate; 1.值类型操作 存值 redisTemplate.boundValueOps(“name”).set(“itcast”); 取值 String str = (String) redisTemplate.boundValueOps(“name”).get();
2.Set类型操作 /**
存入值 */ redisTemplate.boundSetOps(“nameset”).add(“曹操”); redisTemplate.boundSetOps(“nameset”).add(“刘备”); redisTemplate.boundSetOps(“nameset”).add(“孙权”);/**
提取值 */ Set members = redisTemplate.boundSetOps(“nameset”).members(); set类型取出的值没有顺序/**
删除集合中的某一个值 */ redisTemplate.boundSetOps(“nameset”).remove(“孙权”);/**
删除整个集合 */ redisTemplate.delete(“nameset”);3.List类型操作 (1)右压栈 后添加的对象排在后边 /**
右压栈:后添加的对象排在后边 */ redisTemplate.boundListOps(“namelist1”).rightPush(“刘备”); redisTemplate.boundListOps(“namelist1”).rightPush(“关羽”); redisTemplate.boundListOps(“namelist1”).rightPush(“张飞”);/**
显示右压栈集合 */ List list = redisTemplate.boundListOps(“namelist1”).range(0, 10); 获取索引为0-10的元素,如果要获取集合中所有的元素,则使用range(0,-1) 运行结果: [刘备, 关羽, 张飞](2)左压栈 后添加的对象排在前边 /**
左压栈:后添加的对象排在前边 */ redisTemplate.boundListOps(“namelist2”).leftPush(“刘备”); redisTemplate.boundListOps(“namelist2”).leftPush(“关羽”); redisTemplate.boundListOps(“namelist2”).leftPush(“张飞”);/**
显示左压栈集合 */ List list = redisTemplate.boundListOps(“namelist2”).range(0, 10);运行结果: [张飞, 关羽, 刘备]
(3)根据索引查询元素 /**
查询集合某个元素 */ String s = (String)redisTemplate.boundListOps(“namelist1”).index(1);(4)移除指定个数的值 /**
移除集合某个元素 */ redisTemplate.boundListOps(“namelist1”).remove(1, “关羽”); 按顺序移除集合中的一个"关羽"4.Hash类型操作 (1)存入值 redisTemplate.boundHashOps(“namehash”).put(“a”, “唐僧”); redisTemplate.boundHashOps(“namehash”).put(“b”, “悟空”); redisTemplate.boundHashOps(“namehash”).put(“c”, “八戒”); redisTemplate.boundHashOps(“namehash”).put(“d”, “沙僧”);
(2)提取所有的KEY Set s = redisTemplate.boundHashOps(“namehash”).keys(); 运行结果: [a, b, c, d]
(3)提取所有的值 List values = redisTemplate.boundHashOps(“namehash”).values(); 运行结果: [唐僧, 悟空, 八戒, 沙僧]
(4)根据KEY提取值 Object object = redisTemplate.boundHashOps(“namehash”).get(“b”); 运行结果: 悟空
(5)根据KEY移除值 redisTemplate.boundHashOps(“namehash”).delete(“c”);
5.ZSet类型操作 zset是set的升级版本,它在set的基础上增加了一格顺序属性,这一属性在添加元素 的同时可以指定,每次指定后,zset会自动重新按照新的值调整顺序。可以理解为有两列 的mysql表,一列存储value,一列存储分值。 (1)存值 ,指定分值 redisTemplate.boundZSetOps(“namezset”).add(“曹操”,100000); redisTemplate.boundZSetOps(“namezset”).add(“孙权”,0); redisTemplate.boundZSetOps(“namezset”).add(“刘备”,1000);
(2)查询,由低到高 /**
由低到高排序 */ Set namezset = redisTemplate.boundZSetOps(“namezset”).range(0,‐1);(3)查询,由高到低,土豪榜前10 /**
由高到底排序(土豪榜) */ Set namezset =redisTemplate.boundZSetOps(“namezset”).reverseRange(0,9);(4)增加分数 /**
增加分值 */ redisTemplate.boundZSetOps(“namezset”).incrementScore(“孙权”,2000);(5)查询值和分数 /**
查询值和分数 */ Set<ZSetOperations.TypedTuple> namezset = redisTemplate.boundZSetOps(“namezset”).reverseRangeWithScores(0, ‐1); for(ZSetOperations.TypedTuple typedTuple:namezset){ System.out.print(“姓名:”+typedTuple.getValue()); System.out.println(“金币:”+typedTuple.getScore()); } TypedTuple是值与分数的封装。过期时间设置 /**
存值 / redisTemplate.boundValueOps(“name”).set(“itcast”); /*设置过期时间 */ redisTemplate.boundValueOps(“name”).expire(10,TimeUnit.SECONDS); 比如验证码,一般都会设置过期时间