Redis集成到SpingBoot 的数据结构常见操作

打印 上一主题 下一主题

主题 1041|帖子 1041|积分 3123

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一.情况配置

1.依赖注入

 

2.yaml文件配置 



3.启动本地Redis服务

(或在虚拟机上启动,这里为了方便演示在本地启动)


4.启动乐成案例 



5.创建一个Controller我们开始演示 

  1. @RestController
  2. public class MyController {
  3. @Autowired
  4. private StringRedisTemplate redisTemplate;
  5. }
复制代码

二 String操作

  1.   @GetMapping("/testString")
  2.     public String test1String() throws JsonProcessingException {
  3.         // 存储字符串
  4.             //key为键,value为值,这里就像Map<String,String>
  5.         redisTemplate.opsForValue().set("greeting", "Hello, World!");
  6.             //获取key对应的值
  7.         String valueString = redisTemplate.opsForValue().get("greeting");
  8.         log.info("valueString:"+valueString);
  9.             //删除key
  10.         redisTemplate.delete("greeting");
  11.         String valueString2 = redisTemplate.opsForValue().get("greeting");
  12.         log.info("valueString2:"+valueString2);
  13.         // 存储整数
  14.         int counter = 42;
  15.         redisTemplate.opsForValue().set("counter", String.valueOf(counter));
  16.         String valueInteger = redisTemplate.opsForValue().get("counter");
  17.         log.info("valueInteger:"+valueInteger);
  18.         // 存储字节数组
  19.         byte[] binaryData = "some binary data".getBytes();
  20.         redisTemplate.opsForValue().set("binary:key", Arrays.toString(binaryData));
  21.         String valueArray = redisTemplate.opsForValue().get("binary:key");
  22.         log.info("valueArray:"+valueArray);
  23.         // 存储 JSON 对象
  24.         User user = new User("John", "123");
  25.             //Json序列化
  26.         ObjectMapper objectMapper = new ObjectMapper();
  27.         String jsonString = objectMapper.writeValueAsString(user);
  28.         redisTemplate.opsForValue().set("user:123", jsonString);
  29.         String valueJson = redisTemplate.opsForValue().get("user:123");
  30.         log.info("valueJson:"+valueJson);
  31.     /*    //存储空值null
  32.         redisTemplate.opsForValue().set("key", null);//报错:Value must not be null
  33.         String valueNull = redisTemplate.opsForValue().get("key");
  34.         log.info("valueNull:"+valueNull);*/
  35.         return "OK";
  36.     }
复制代码
 运行结果
 


三.List操作

  1.     @GetMapping("/testList")
  2.     @ResponseBody
  3.     public String testList() {
  4.         //清空redis中所有数据,防止影响其他测试,慎用
  5.         redisTemplate.getConnectionFactory().getConnection().flushAll();
  6.         String ListNull = redisTemplate.opsForList().leftPop("key");
  7.         System.out.println("ListNull:  "+ListNull);
  8.         //存储一个值,键是key,值是a
  9.         redisTemplate.opsForList().leftPush("key", "a");
  10.         //存储多个值,但是键值键一样都是key,值是b,c,d
  11.         redisTemplate.opsForList().leftPushAll("key", "b", "c", "d");
  12.         //获取第一个元素
  13.         String firstElement = redisTemplate.opsForList().leftPop("key");
  14.         System.out.println("frist:"+firstElement);
  15.         //获取列表key的第2到第3个元素(索引从0开始),但是这里获取之后并未取出来
  16.         List<String> values = redisTemplate.opsForList().range("key", 1, 2);
  17.         System.out.println(values);
  18.         //获取列表key的最后一个元素
  19.         String finalElement = redisTemplate.opsForList().leftPop("key");
  20.         System.out.println("finalElement:  "+finalElement);
  21.         return "OK";
  22.     }
复制代码
运行结果
  1. ListNull:  null
  2. frist:d
  3. [b, a]
  4. finalElement:  c
复制代码
注意:leftPush()是往左存储,终极存储后顺序是的,d,c,b,a
 
四.Hash操作

  1. @GetMapping("/testHashmap")
  2.     @ResponseBody
  3.     public String testHashmap() {
  4.         //清空redis中所有数据,防止影响其他测试,慎用
  5.         redisTemplate.getConnectionFactory().getConnection().flushAll();
  6.         //向Redis中插入一个Hash键值对,键为 "key",字段为 "name",值为 "zhangsan"
  7.         redisTemplate.opsForHash().put("key", "name", "zhangsan");
  8.         //从Redis中获取刚刚插入的Hash值
  9.         String value = (String) redisTemplate.opsForHash().get("key", "name");
  10.         System.out.println(value);
  11.         //删除Hash中的字段 "name"
  12.         redisTemplate.opsForHash().delete("key", "name");
  13.         //检查字段 "name" 是否还存在于Hash中
  14.         boolean ok = redisTemplate.opsForHash().hasKey("key", "name");
  15.         System.out.println(ok);
  16.         //删除整个Hash键 "key"
  17.         redisTemplate.delete("key");
  18.         return "OK";
  19.     }
复制代码

运行结果
  1. zhangsan
  2. false
复制代码
 
五.Set

  1. @GetMapping("/testSet")
  2.     @ResponseBody
  3.     public String testSet() {
  4.         //清空redis中所有数据,防止影响其他测试,慎用
  5.         redisTemplate.getConnectionFactory().getConnection().flushAll();
  6.         //向Redis的key中添加三个元素:aaa、bbb、ccc
  7.         redisTemplate.opsForSet().add("key", "aaa", "bbb", "ccc");
  8.         //检查key中是否包含aaa
  9.         boolean ok = redisTemplate.opsForSet().isMember("key", "aaa");
  10.         System.out.println(ok);
  11.         //从key中移除aaa
  12.         redisTemplate.opsForSet().remove("key", "aaa");
  13.         //获取key中剩余元素的数量
  14.         long n = redisTemplate.opsForSet().size("key");
  15.         System.out.println(n);
  16.         //删除key
  17.         redisTemplate.delete("key");
  18.         return "OK";
  19.     }
复制代码
运行结果
  1. true
  2. 2
复制代码
 
六.ZSet

  1. @GetMapping("/testZSet")
  2.     @ResponseBody
  3.     public String testZSet() {
  4.         //向Redis中名为key的有序集合添加三个成员:吕布、赵云和典韦,分别赋予不同的分数
  5.         redisTemplate.opsForZSet().add("key", "吕布", 100);
  6.         redisTemplate.opsForZSet().add("key", "赵云", 98);
  7.         redisTemplate.opsForZSet().add("key", "典⻙", 95);
  8.         //获取并打印分数最高的前3个成员,切记ZSet是有序集合
  9.         Set<String> values = redisTemplate.opsForZSet().range("key", 0, 2);
  10.         System.out.println(values);
  11.         //统计并打印分数在95到100之间的成员数量
  12.         long n = redisTemplate.opsForZSet().count("key", 95, 100);
  13.         System.out.println(n);
  14.         redisTemplate.delete("key");
  15.         return "OK";
  16.     }
复制代码
运行结果 
  1. [典⻙, 赵云, 吕布]
  2. 3
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表