Java Code Examples for org.springframework.data.redis.core.Cursor#hasNext()

The following examples show how to use org.springframework.data.redis.core.Cursor#hasNext() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: RedisService.java    From Blog with Apache License 2.0 6 votes vote down vote up
/**
* @Description: 从Redis获取博文点赞数
* @Param: []
* @return: java.util.List<com.zzx.model.pojo.Blog>
* @Author: Tyson
* @Date: 2020/5/30/0030 11:35
*/
public List<Blog> getBlogLikeCountFromRedis() {
    List<Blog> blogList = new ArrayList<>();
    try {
        Cursor<Map.Entry<Object, Object>> cursor = redisTemplate.opsForHash().scan(RedisConfig.MAP_BLOG_LIKE_COUNT_KEY, ScanOptions.NONE);
        while (cursor.hasNext()) {
            Map.Entry<Object, Object> entry = cursor.next();

            String key = (String)entry.getKey();
            int blogId = Integer.parseInt(key);
            int count = Integer.parseInt((String)entry.getValue());

            Blog blog = new Blog(blogId, count);

            blogList.add(blog);
            //从redis删除key
            redisTemplate.opsForHash().delete(RedisConfig.MAP_BLOG_LIKE_COUNT_KEY, key);
        }
        cursor.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    return blogList;
}
 
Example 2
Source File: RedisUtils.java    From fw-spring-cloud with Apache License 2.0 6 votes vote down vote up
/**
 * 根据匹配删除redis key,如想删除 notify_ 开头的所有key match就为notify_*
 * 
 * @author xuyisu
 * @date 2018年7月18日
 * 
 * @param match
 */
public void deleteByMatch(String match){
	redisConnection = redisConnectionFactory.getConnection();
    Cursor<byte[]> cursor = redisConnection.scan(new ScanOptions.ScanOptionsBuilder().match(match).build());
    Set<String> set = new HashSet<String>();
    while (cursor.hasNext()){
        set.add((new String(cursor.next())));
        if (set.size() >= 3000){
            redisTemplate.delete(set);
            set.clear();
        }
    }
    if (set.size() > 0){
        System.out.println(set.size());
        redisTemplate.delete(set);
    }
    redisConnection.close();
}
 
Example 3
Source File: RedisUtils.java    From yshopmall with Apache License 2.0 6 votes vote down vote up
/**
 * 查找匹配key
 * @param pattern key
 * @return /
 */
public List<String> scan(String pattern) {
    ScanOptions options = ScanOptions.scanOptions().match(pattern).build();
    RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
    RedisConnection rc = Objects.requireNonNull(factory).getConnection();
    Cursor<byte[]> cursor = rc.scan(options);
    List<String> result = new ArrayList<>();
    while (cursor.hasNext()) {
        result.add(new String(cursor.next()));
    }
    try {
        RedisConnectionUtils.releaseConnection(rc, factory);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}
 
Example 4
Source File: IllustHistoryService.java    From Pixiv-Illustration-Collection-Backend with Apache License 2.0 6 votes vote down vote up
@Scheduled(cron = "0 10 2 * * ?")
@Transactional(rollbackFor = Exception.class)
public void clear() {
    System.out.println("开始清理收藏");
    //获取keylist
    final ScanOptions scanOptions = ScanOptions.scanOptions().match(RedisKeyConstant.ILLUST_BROWSING_HISTORY_REDIS_PRE + "*").build();
    RedisConnection connection = stringRedisTemplate.getConnectionFactory().getConnection();
    Cursor<byte[]> cursor = connection.scan(scanOptions);
    int i = 0;
    while (cursor.hasNext()) {
        connection.zRemRangeByScore(cursor.next(), LocalDateTime.now().plusDays(-3).toEpochSecond(ZoneOffset.of("+8")), -Integer.MAX_VALUE);
        i++;
    }
    illustHistoryMapper.deleteIllustHistory();
    illustHistoryMapper.tempToIllustHistory();
    illustHistoryMapper.truncateTemp();
}
 
Example 5
Source File: TestRedisTemplate.java    From ad with Apache License 2.0 5 votes vote down vote up
@Test
public void testScanCommand() {
    RedisConnection connection = Objects.requireNonNull(stringRedisTemplate.getConnectionFactory()).getConnection();
    Cursor<byte[]> cursor = connection.scan(ScanOptions.scanOptions().match("*").count(Integer.MAX_VALUE).build());
    while (cursor.hasNext()) {
        byte[] next = cursor.next();
        log.info(new String(next));
    }
}
 
Example 6
Source File: RedisService.java    From Blog with Apache License 2.0 5 votes vote down vote up
/**
* @Description: 从Redis获取用户点赞数据
* @Param: []
* @return: java.util.List<com.zzx.model.pojo.UserLike>
* @Author: Tyson
* @Date: 2020/5/30/0030 11:37
*/
public List<UserLike> getUserLikeFromRedis() {
    List<UserLike> userLikeList = new ArrayList<>();
    try {
        Cursor<Map.Entry<Object, Object>> cursor = redisTemplate.opsForHash().scan(RedisConfig.MAP_USER_LIKE_KEY, ScanOptions.NONE);
        while (cursor.hasNext()) {
            Map.Entry<Object, Object> entry = cursor.next();

            String key = (String)entry.getKey();
            //拆分key,blogId::userId
            String[] keyArr = key.split(RedisConfig.REDIS_LIKE_MID);
            int blogId  = Integer.parseInt(keyArr[0]);
            int userId= Integer.parseInt(keyArr[1]);
            int status = Integer.parseInt((String)entry.getValue());

            UserLike userLike = new UserLike(blogId, userId, status);

            userLikeList.add(userLike);
            //从redis删除key
            redisTemplate.opsForHash().delete(RedisConfig.MAP_USER_LIKE_KEY, key);
        }
        cursor.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    return userLikeList;
}
 
Example 7
Source File: RedisUtil.java    From spring-boot-demo with MIT License 5 votes vote down vote up
/**
 * 分页获取指定格式key,使用 scan 命令代替 keys 命令,在大数据量的情况下可以提高查询效率
 *
 * @param patternKey  key格式
 * @param currentPage 当前页码
 * @param pageSize    每页条数
 * @return 分页获取指定格式key
 */
public PageResult<String> findKeysForPage(String patternKey, int currentPage, int pageSize) {
    ScanOptions options = ScanOptions.scanOptions()
            .match(patternKey)
            .build();
    RedisConnectionFactory factory = stringRedisTemplate.getConnectionFactory();
    RedisConnection rc = factory.getConnection();
    Cursor<byte[]> cursor = rc.scan(options);

    List<String> result = Lists.newArrayList();

    long tmpIndex = 0;
    int startIndex = (currentPage - 1) * pageSize;
    int end = currentPage * pageSize;
    while (cursor.hasNext()) {
        String key = new String(cursor.next());
        if (tmpIndex >= startIndex && tmpIndex < end) {
            result.add(key);
        }
        tmpIndex++;
    }

    try {
        cursor.close();
        RedisConnectionUtils.releaseConnection(rc, factory);
    } catch (Exception e) {
        log.warn("Redis连接关闭异常,", e);
    }

    return new PageResult<>(result, tmpIndex);
}
 
Example 8
Source File: RedisUtils.java    From yshopmall with Apache License 2.0 5 votes vote down vote up
/**
 * 分页查询 key
 * @param patternKey key
 * @param page 页码
 * @param size 每页数目
 * @return /
 */
public List<String> findKeysForPage(String patternKey, int page, int size) {
    ScanOptions options = ScanOptions.scanOptions().match(patternKey).build();
    RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
    RedisConnection rc = Objects.requireNonNull(factory).getConnection();
    Cursor<byte[]> cursor = rc.scan(options);
    List<String> result = new ArrayList<>(size);
    int tmpIndex = 0;
    int fromIndex = page * size;
    int toIndex = page * size + size;
    while (cursor.hasNext()) {
        if (tmpIndex >= fromIndex && tmpIndex < toIndex) {
            result.add(new String(cursor.next()));
            tmpIndex++;
            continue;
        }
        // 获取到满足条件的数据后,就可以退出了
        if(tmpIndex >=toIndex) {
            break;
        }
        tmpIndex++;
        cursor.next();
    }
    try {
        RedisConnectionUtils.releaseConnection(rc, factory);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}
 
Example 9
Source File: RedisUtil.java    From spring-boot-demo with MIT License 5 votes vote down vote up
/**
 * 分页获取指定格式key,使用 scan 命令代替 keys 命令,在大数据量的情况下可以提高查询效率
 *
 * @param patternKey  key格式
 * @param currentPage 当前页码
 * @param pageSize    每页条数
 * @return 分页获取指定格式key
 */
public PageResult<String> findKeysForPage(String patternKey, int currentPage, int pageSize) {
    ScanOptions options = ScanOptions.scanOptions()
            .match(patternKey)
            .build();
    RedisConnectionFactory factory = stringRedisTemplate.getConnectionFactory();
    RedisConnection rc = factory.getConnection();
    Cursor<byte[]> cursor = rc.scan(options);

    List<String> result = Lists.newArrayList();

    long tmpIndex = 0;
    int startIndex = (currentPage - 1) * pageSize;
    int end = currentPage * pageSize;
    while (cursor.hasNext()) {
        String key = new String(cursor.next());
        if (tmpIndex >= startIndex && tmpIndex < end) {
            result.add(key);
        }
        tmpIndex++;
    }

    try {
        cursor.close();
        RedisConnectionUtils.releaseConnection(rc, factory);
    } catch (Exception e) {
        log.warn("Redis连接关闭异常,", e);
    }

    return new PageResult<>(result, tmpIndex);
}
 
Example 10
Source File: RedisUtil.java    From spring-boot-demo with MIT License 5 votes vote down vote up
/**
 * 分页获取指定格式key,使用 scan 命令代替 keys 命令,在大数据量的情况下可以提高查询效率
 *
 * @param patternKey  key格式
 * @param currentPage 当前页码
 * @param pageSize    每页条数
 * @return 分页获取指定格式key
 */
public PageResult<String> findKeysForPage(String patternKey, int currentPage, int pageSize) {
    ScanOptions options = ScanOptions.scanOptions()
            .match(patternKey)
            .build();
    RedisConnectionFactory factory = stringRedisTemplate.getConnectionFactory();
    RedisConnection rc = factory.getConnection();
    Cursor<byte[]> cursor = rc.scan(options);

    List<String> result = Lists.newArrayList();

    long tmpIndex = 0;
    int startIndex = (currentPage - 1) * pageSize;
    int end = currentPage * pageSize;
    while (cursor.hasNext()) {
        String key = new String(cursor.next());
        if (tmpIndex >= startIndex && tmpIndex < end) {
            result.add(key);
        }
        tmpIndex++;
    }

    try {
        cursor.close();
        RedisConnectionUtils.releaseConnection(rc, factory);
    } catch (Exception e) {
        log.warn("Redis连接关闭异常,", e);
    }

    return new PageResult<>(result, tmpIndex);
}