端口怎么设置,看我前一篇文章
前面使用jedis,通过Jedis对象中各种方法来操作redis的。
此处Spring中则是通过StringRedisTemplate来操作redis。
最原始提供的类是RedisTemplate
StringRedisTemplate是RedisTemplate的子类,专门处理文本数据的
这个类提供的方法,相比较于Jedis还是有区别的。
做了进一步封装,得到了专门操作字符串的对象,得到了专门操作xx的对象。初心是为了接口更简单。
字符串常用操作
set-get 设置,获取
有些操作封装来,有些没有封装,比如删库,比如ping
RedisTemplate留了一手,让我们随意执行redis的原操作
execute方法,RedisCallback函数式接口,相当于一个回调函数,就在回调里,写我们要执行的redis命令,这个回调就会被RedisTemplate内部进行执行了。
链表常用操作
leftpop和rightpop,头删,尾删
Set常用操作
Hash常用操作
Zset常用操作
package com.example.demo.Controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Set; //后续redis测试的各种功能,都通过这个Controller提供的http接口 @Controller public class MYController { @Autowired private StringRedisTemplate redisTemplate; @GetMapping("/testString") @ResponseBody public String testString() { redisTemplate.opsForValue().set("key", "111"); redisTemplate.opsForValue().set("key", "222"); redisTemplate.opsForValue().set("key", "333"); String value = redisTemplate.opsForValue().get("key"); System.out.println("value:" + value); return "ok"; } @GetMapping("/testList") @ResponseBody public String testList() { //先删库 redisTemplate.execute((RedisConnection connection) -> { connection.flushAll(); //execute要求回调方法中必须写return,返回个东西 //这个回调返回的对象,就会作为execute本身的返回值 return null; }); redisTemplate.opsForList().leftPush("key", "111"); redisTemplate.opsForList().rightPush("key", "222"); String value = redisTemplate.opsForList().rightPop("key"); System.out.println("value:" + value); value = redisTemplate.opsForList().leftPop("key"); System.out.println("value:" + value); return "OK"; } @GetMapping("/testSet") @ResponseBody public String testSet() { redisTemplate.execute((RedisConnection connecion) -> { connecion.flushAll(); return null; }); redisTemplate.opsForSet().add("key", "111", "222", "333"); Set<String> result = redisTemplate.opsForSet().members("key"); System.out.println("result:" + result); boolean exists = redisTemplate.opsForSet().isMember("key", "111"); System.out.println("exist:" + exists); Long count = redisTemplate.opsForSet().size("key"); System.out.println("count:" + count); redisTemplate.opsForSet().remove("key", "111", "222"); result = redisTemplate.opsForSet().members("key"); System.out.println("result:" + result); return "Ok"; } @GetMapping("/testHash") @ResponseBody public String testHash(){ redisTemplate.execute((RedisConnection connection)->{ connection.flushAll(); return null; }); redisTemplate.opsForHash().put("key","f1","111"); redisTemplate.opsForHash().put("key","f2","222"); redisTemplate.opsForHash().put("key","f3","333"); String value= (String) redisTemplate.opsForHash().get("key","f1"); Boolean exists=redisTemplate.opsForHash().hasKey("key","f1"); System.out.println("exists:"+exists); redisTemplate.opsForHash().delete("key","f1","f2"); Long size=redisTemplate.opsForHash().size("key"); System.out.println("size"+size); return "OK"; } @GetMapping("/testZSet") @ResponseBody public String testZSet(){ redisTemplate.execute((RedisConnection connection)->{ connection.flushAll(); return null; }); redisTemplate.opsForZSet().add("key","zhangsan",10); redisTemplate.opsForZSet().add("key","lisi",20); redisTemplate.opsForZSet().add("key","wangwu",30); Set<String>members= redisTemplate.opsForZSet().range("key",0,-1); System.out.println("members:"+members); Set<ZSetOperations.TypedTuple<String>>membersWithScore=redisTemplate.opsForZSet().rangeWithScores("key",0,-1); System.out.println("membersWithScore:"+membersWithScore); Double score= redisTemplate.opsForZSet().score("key","zhangsan"); System.out.println("score:"+score); redisTemplate.opsForZSet().remove("key","zhangsan"); Long size=redisTemplate.opsForZSet().size("key"); System.out.println("size:"+size); Long rank=redisTemplate.opsForZSet().rank("key","lisi"); System.out.println("rank:"+rank); return "OK"; } }