• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

redis开发测试简易代码

武飞扬头像
SongJingzhou
帮助1

import com.谷歌.common.collect.Sets;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.ScanOptions;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author song
 * @version 1.0
 */

@RestController
@RequestMapping(value = "/myRedis")
@Slf4j
public class RedisController implements BaseController {

  private final StringRedisTemplate thisClient;

  public RedisController(StringRedisTemplate stringRedisTemplate) {
    this.thisClient = stringRedisTemplate;
  }

  @Value("${customize.redis.devops.passwd:}")
  private String myPasswd;

  @PostMapping("/get")
  public Object get(@RequestBody getParam getParam) {
    if (check(getParam)) {
      return thisClient.opsForValue().get(getParam.key);
    } else {
      log.error("attentionSomebody,wantToGet,{}", getParam);
      return null;
    }
  }

  @PostMapping(value = "/delByKeys")
  public void delByKeys(@RequestBody DelParam delParam) {
    if (check(delParam)) {
      thisClient.delete(delParam.keys);
    } else {
      log.error("attentionSomebody,wantToDel,{}", delParam);
    }
  }

  @PostMapping(value = "/scan")
  public Set<String> scan(@RequestBody ScanParam scanParam) {
    if (check(scanParam)) {
      return thisClient.execute((RedisCallback<Set<String>>) connection -> {
        Set<String> keysTmp = Sets.newHashSet();
        ScanOptions scanOptions = ScanOptions.scanOptions().match(scanParam.pattern)
            .count(scanParam.count).build();

        Cursor<byte[]> cursor = connection.scan(scanOptions);
        while (cursor.hasNext()) {
          keysTmp.add(new String(cursor.next()));
          if (!scanParam.all) {
            break;
          }
        }
        cursor.close();
        return keysTmp;
      });

    } else {
      log.error("attentionSomebody,wantToScan,{}", scanParam);
      return null;
    }
  }

  private <T extends Passwd> boolean check(T passwdParam) {
    if (StringUtils.isBlank(myPasswd)) {
      return false;
    }
    return Objects.equals(passwdParam.getPasswd(), myPasswd);
  }

  @Getter
  @Setter
  private static class ScanParam extends Passwd {

    private String pattern;
    private Long count = 200L;
    private boolean all = false;
  }

  @Getter
  @Setter
  private static class DelParam extends Passwd {

    private List<String> keys;
  }

  @Getter
  @Setter
  private static class getParam extends Passwd {

    private String key;
  }

  @Getter
  @Setter
  private static class Passwd extends BaseBean {

    private String passwd;
  }

学新通
public static class BaseBean implements Serializable {
...
}
}

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibhfhb
系列文章
更多 icon
同类精品
更多 icon
继续加载