Redis数据结构为集合Set 的 存储、获取、判断是否存在、删除方法的操作

一.项目用redis-learn,文章参考

set (无序,唯一不重复)
数据元素不重复(过滤掉重复的元素;判断一个元素是否存在于一个大集合中)
实践:用户注册时过滤重复提交的信息。

本文我们实际操作下集合Set 的 存储、获取、判断是否存在、删除方法的操作

二. 存储、获取、判断是否存在、删除 代码操作

  1. members(key); 获取集合key的元素
  2. randomMember(key);集合key随机取1个元素
  3. randomMembers(key, 2L);集合key随机取n个元素
  4. size(key);集合key元素个数
  5. isMember(key, “盖伦”);元素盖伦是否为集合key的元素
  6. difference(key, key2); 集合key1和集合key2的差集元素
  7. intersect(key, key2); 集合key1和集合key2的交集元素
  8. union(key, key2); 集合key1和集合key2的并集元素
  9. pop(key); 从集合key1中弹出一个随机的元素
  10. remove(key, “赵信”); 将赵信从集合key的元素列表中移除

新建 RedisSetController类 ,代码如下:

package com.example.redislearn.controller;

import com.example.redislearn.entity.User;
import com.example.redislearn.response.BaseResponse;
import com.example.redislearn.response.StatusCode;
import com.example.redislearn.service.RedisSetService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * 数据结构为集合 Set  (无序,唯一不重复)
 * 数据元素不重复(过滤掉重复的元素;判断一个元素是否存在于一个大集合中)
 * 实践:用户注册时过滤重复提交的信息。
 */

@RestController
@RequestMapping("RedisSetController")
public class RedisSetController {

    private static final Logger log = LoggerFactory.getLogger(RedisSetController.class);

    @Autowired
    private RedisTemplate redisTemplate;

    @RequestMapping(value = "/setSet", method = RequestMethod.POST)
    public void setSet() {
        log.info("----开始集合Set测试");
        final String key1 = "SpringBootRedis:Set:德玛西亚";
        final String key2 = "SpringBootRedis:Set:诺克萨斯";

        redisTemplate.delete(key1);
        redisTemplate.delete(key2);

        SetOperations setOperations = redisTemplate.opsForSet();
        setOperations.add(key1, new String[]{"盖伦", "嘉文", "赵信"});
        setOperations.add(key2, new String[]{"德莱厄斯", "德莱文", "卡特"});

        log.info("---集合key1的元素:{}", setOperations.members(key1));
        log.info("---集合key2的元素:{}", setOperations.members(key2));

        log.info("---集合key1随机取1个元素:{}", setOperations.randomMember(key1));
        log.info("---集合key1随机取n个元素:{}", setOperations.randomMembers(key1, 2L));

        log.info("---集合key1元素个数:{}", setOperations.size(key1));
        log.info("---集合key2元素个数:{}", setOperations.size(key2));

        log.info("---元素盖伦是否为集合key1的元素:{}", setOperations.isMember(key1, "盖伦"));
        log.info("---元素德莱厄斯是否为集合key1的元素:{}", setOperations.isMember(key1, "德莱厄斯"));

        log.info("---集合key1和集合key2的差集元素:{}", setOperations.difference(key1, key2));
        log.info("---集合key1和集合key2的交集元素:{}", setOperations.intersect(key1, key2));
        log.info("---集合key1和集合key2的并集元素:{}", setOperations.union(key1, key2));

        log.info("---从集合key1中弹出一个随机的元素:{}", setOperations.pop(key1));
        log.info("---集合key1的元素:{}", setOperations.members(key1));
        log.info("---将赵信从集合key1的元素列表中移除:{}", setOperations.remove(key1, "赵信"));
    }
}

三.测试

启动项目,在浏览器或postman 上输入:http://127.0.0.1:8782/RedisSetController/setSet post请求
Redis数据结构为集合Set 的 存储、获取、判断是否存在、删除方法的操作_第1张图片

下个文章学习Redis数据结构为集合Set 的实践 之 用户注册时过滤重复提交的信息

你可能感兴趣的:(Redis)