org.springframework.data.redis.core.SessionCallback Java Examples

The following examples show how to use org.springframework.data.redis.core.SessionCallback. 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: RedisTemplateTransactional.java    From sdmq with Apache License 2.0 7 votes vote down vote up
@Test
    public void test2() {
        System.out.println(11);
        List<Object> results = (List<Object>) redisTemplate.execute(new SessionCallback<List<Object>>() {
            @SuppressWarnings({"rawtypes", "unchecked"})
            public List<Object> execute(RedisOperations operations) {
                operations.multi();
                //new Jedis().multi();
                operations.opsForValue().set("abb", "233332");
                if (true) {
                    throw new eeee("xx");
                }
                operations.opsForValue().set("abb", "2");
//                operations.opsForValue().set("11", "22");
//                operations.opsForValue().get("11");
//                operations.opsForList().leftPush("aaa", 1);
//                operations.opsForList().range("aaa", 0l, 1l);
//                operations.opsForSet().add("bbbb", 12);
//                operations.opsForSet().members("bbbb");
                return operations.exec();
            }
        });
        for (Object o : results) {
            System.out.println(o);
        }
    }
 
Example #2
Source File: FollowServiceImpl.java    From MyCommunity with Apache License 2.0 6 votes vote down vote up
@Override
public void follow(int userId, int entityType, int entityId) {
    // 自己的关注者key
    String followeeKey = RedisKeyUtil.getFolloweeKey(userId, entityType);
    // 被关注对象的粉丝key
    String followerKey = RedisKeyUtil.getFollowerKey(entityType, entityId);

    redisTemplate.execute(new SessionCallback() {
        @Override
        public Object execute(RedisOperations redisOperations) throws DataAccessException {

            redisOperations.multi();
            // 自己的关注列表
            redisTemplate.opsForZSet().add(followeeKey, entityId, System.currentTimeMillis());
            // 被关注对象的粉丝列表
            redisTemplate.opsForZSet().add(followerKey, userId, System.currentTimeMillis());

            return redisOperations.exec();
        }
    });
}
 
Example #3
Source File: FollowServiceImpl.java    From MyCommunity with Apache License 2.0 6 votes vote down vote up
@Override
public void unfollow(int userId, int entityType, int entityId) {

    String followeeKey = RedisKeyUtil.getFolloweeKey(userId, entityType);
    String followerKey = RedisKeyUtil.getFollowerKey(entityType, entityId);

    redisTemplate.execute(new SessionCallback() {
        @Override
        public Object execute(RedisOperations redisOperations) throws DataAccessException {

            redisOperations.multi();
            // 自己的关注列表
            redisTemplate.opsForZSet().remove(followeeKey, entityId, System.currentTimeMillis());
            // 被关注对象的粉丝列表
            redisTemplate.opsForZSet().remove(followerKey, userId, System.currentTimeMillis());

            return redisOperations.exec();
        }
    });

}
 
Example #4
Source File: RedisTemplateTransactionalTest.java    From mykit-delay with Apache License 2.0 6 votes vote down vote up
@Test
    public void test2() {
        System.out.println(11);
        List<Object> results = (List<Object>) redisTemplate.execute(new SessionCallback<List<Object>>() {
            @SuppressWarnings({"rawtypes", "unchecked"})
            public List<Object> execute(RedisOperations operations) {
                operations.multi();
                //new Jedis().multi();
                operations.opsForValue().set("abb", "233332");
                if (true) {
                    throw new eeee("xx");
                }
                operations.opsForValue().set("abb", "2");
//                operations.opsForValue().set("11", "22");
//                operations.opsForValue().get("11");
//                operations.opsForList().leftPush("aaa", 1);
//                operations.opsForList().range("aaa", 0l, 1l);
//                operations.opsForSet().add("bbbb", 12);
//                operations.opsForSet().members("bbbb");
                return operations.exec();
            }
        });
        for (Object o : results) {
            System.out.println(o);
        }
    }
 
Example #5
Source File: AppTest.java    From Breakpoint-http with Apache License 2.0 6 votes vote down vote up
@Test
public void testRedisMap() {
    Object object = redisTemplate.execute(new SessionCallback() {
        @Override
        public Object execute(RedisOperations operations) throws DataAccessException {
            operations.multi();
            operations.opsForValue().get("test");
            operations.delete("test");
            operations.opsForValue().set("test", "6");
            List<String> rs = operations.exec();
            System.out.println(" rs:" + rs.toString());
            return rs;
        }
    });
    List<Object> strings = (List<Object>) object;
    for (Object str : strings) {
        System.err.println(str.toString());
    }
}
 
Example #6
Source File: UEditorFileDataInspect.java    From sanshanblog with Apache License 2.0 6 votes vote down vote up
/**
 *
 从数据库恢复数据
 */
public void inspectDataConsistency() {
    if(checkIsNeedRollback()) {
        //数据库与BlogIdGenerate的事物完整性检查
        Long initTime = System.currentTimeMillis();
        log.info("ueditor的文件数据从数据库中回滚");
        //开启事务
        SessionCallback sessionCallback = new SessionCallback() {
            @Override
            public Object execute(RedisOperations redisOperations) throws DataAccessException {
                redisOperations.multi();
                rollbackData();
                return redisOperations.exec();
            }
        };
        //事务执行
        redisTemplate.execute(sessionCallback);
        log.info("ueditor上传文件数据中的数据回滚完成 耗时:{}ms", System.currentTimeMillis() - initTime);
    }
}
 
Example #7
Source File: VoteDataInspect.java    From sanshanblog with Apache License 2.0 6 votes vote down vote up
/**
 * 从数据库恢复数据
 */
public void inspectDataConsistency() {
    if(checkIsNeedRollback()) {
        Long initTime = System.currentTimeMillis();
        //进行点赞数据的事务完整性检查
        log.info("投票数据进行数据回滚");
        List<BlogVoteDO> blogVoteDOS = blogVoteMapper.selectAll();
        List<IpBlogVoteDO> ipBlogVoteDOS = ipBlogVoteMapper.selectAll();
        //开启事务
        SessionCallback sessionCallback = new SessionCallback() {
            @Override
            public Object execute(RedisOperations redisOperations) throws DataAccessException {
                redisOperations.multi();
                rollbackData(blogVoteDOS, ipBlogVoteDOS);
                return redisOperations.exec();
            }
        };
        //执行
        redisTemplate.execute(sessionCallback);
        log.info("从数据库中回滚投票数据的完成 耗时:{}ms", System.currentTimeMillis() - initTime);
    }else {

    }
}
 
Example #8
Source File: RedisSignUpRepository.java    From flex-poker with GNU General Public License v2.0 6 votes vote down vote up
@Override
public void storeSignUpInformation(UUID aggregateId, String username, UUID signUpCode) {
    var signUpCodeKey = SIGN_UP_CODE_NAMESPACE + signUpCode.toString();

    redisTemplate.execute(new SessionCallback<List<Object>>() {
        @Override
        public List<Object> execute(RedisOperations operations) throws DataAccessException {
            operations.multi();
            operations.opsForHash().put(signUpCodeKey, "username", username);
            operations.opsForHash().put(signUpCodeKey, "aggregateid",
                    aggregateId.toString());
            operations.expire(signUpCodeKey, EXPIRATION_IN_MINUTES, TimeUnit.MINUTES);
            return redisTemplate.exec();
        }
    });
}
 
Example #9
Source File: RedisSignUpRepository.java    From flex-poker with GNU General Public License v2.0 6 votes vote down vote up
@Override
public void saveSignUpUser(SignUpUser signUpUser) {
    final var signUpUserKey = SIGN_UP_USER_NAMESPACE + signUpUser.getAggregateId();
    final var signUpUserMap = Map.of(
            "username", signUpUser.getUsername(),
            "email", signUpUser.getEmail(),
            "aggregateId", signUpUser.getAggregateId().toString(),
            "signUpCode", signUpUser.getSignUpCode().toString(),
            "confirmed", String.valueOf(signUpUser.isConfirmed()),
            "encryptedPassword", signUpUser.getEncryptedPassword());

    redisTemplate.execute(new SessionCallback<List<Object>>() {
        @Override
        public List<Object> execute(RedisOperations operations) throws DataAccessException {
            operations.multi();
            operations.opsForHash().putAll(signUpUserKey, signUpUserMap);
            return redisTemplate.exec();
        }
    });
}
 
Example #10
Source File: RedisUtil.java    From Milkomeda with MIT License 5 votes vote down vote up
/**
 * 批量操作
 * @param runnable      业务体
 * @param redisTemplate RedisTemplate
 */
public static void batchOps(Runnable runnable, RedisTemplate<String, String> redisTemplate) {
    redisTemplate.executePipelined(new SessionCallback<Object>() {
        @Override
        public <K, V> Object execute(@NonNull RedisOperations<K, V> operations) throws DataAccessException {
            runnable.run();
            return null;
        }
    });
}
 
Example #11
Source File: BusinessService.java    From Pixiv-Illustration-Collection-Backend with Apache License 2.0 5 votes vote down vote up
@Transactional(rollbackFor = Exception.class)
    @CacheEvict(value = "illust_bookmarked", key = "#illustId+'1'+'30'")
    public void bookmarkOperation(int userId, String username, int illustId, int increment, int relationId) {
        //redis修改联系以及修改redis中该画作收藏数(事务)
//        Boolean isMember = stringRedisTemplate.opsForSet().isMember(RedisKeyConstant.BOOKMARK_REDIS_PRE + userId, String.valueOf(illustId));
//        if ((increment > 0 && isMember)
//                || (increment < 0 && !isMember)
//        ) {
//            throw new BusinessException(HttpStatus.BAD_REQUEST, "用户与画作的收藏关系请求错误");
//        }
        stringRedisTemplate.execute(new SessionCallback<>() {
            @Override
            public List<Object> execute(RedisOperations operations) throws DataAccessException {
                operations.multi();
                if (increment > 0) {
                    operations.opsForSet().add(RedisKeyConstant.BOOKMARK_REDIS_PRE + userId, String.valueOf(illustId));
                    //异步往mysql中写入
                    businessMapper.bookmark(userId, illustId, username, LocalDateTime.now());
                } else {
                    operations.opsForSet().remove(RedisKeyConstant.BOOKMARK_REDIS_PRE + userId, String.valueOf(illustId));
                    //异步往mysql中移除
                    businessMapper.cancelBookmark(userId, illustId);
                }
                operations.opsForHash().increment(RedisKeyConstant.BOOKMARK_COUNT_MAP_REDIS_PRE, String.valueOf(illustId), increment);
                return operations.exec();
            }
        });
    }
 
Example #12
Source File: RedisServiceImpl.java    From tom-crawler with Apache License 2.0 5 votes vote down vote up
@Override
public void addTaskToQueue(String queueKey, String url, String itemKey, String field, String value, Request request) {
    List<Object> txResults = redisTemplate.execute(new SessionCallback<List<Object>>() {
        @Override
        public List<Object> execute(RedisOperations operations) throws DataAccessException {
            operations.multi();
            operations.opsForList().rightPush(queueKey, url);
            if (request != null && request.getExtras() != null) {
                operations.opsForHash().put(itemKey, field, value);
            }
            // This will contain the results of all ops in the transaction
            return operations.exec();
        }
    });
}
 
Example #13
Source File: RedisTemplateDriver.java    From redis-scheduler with MIT License 5 votes vote down vote up
@Override
public <T> T fetch(Function<Commands, T> block) {
    try {
        return redisTemplate.execute(new SessionCallback<T>() {
            @Override
            @SuppressWarnings("unchecked")
            public <K, V> T execute(RedisOperations<K, V> operations) throws DataAccessException {
                RedisConnectionCommands commands = new RedisConnectionCommands((RedisOperations<String, String>) operations);
                return block.apply(commands);
            }
        });
    } catch (RedisConnectionFailureException e) {
        throw new RedisConnectException(e);
    }
}
 
Example #14
Source File: LikeServiceImpl.java    From MyCommunity with Apache License 2.0 4 votes vote down vote up
@Override
public void like(int userId, int entityType, int entityId, int entityUserId) {

    redisTemplate.execute(new SessionCallback() {
        @Override
        public Object execute(RedisOperations redisOperations) throws DataAccessException {

            String entityLikeKey = RedisKeyUtil.getEntityLikeKey(entityType, entityId);
            String userLikeKey = RedisKeyUtil.getUserLikeKey(entityUserId);
            // 当前用户是否点过赞
            Boolean isMember = redisTemplate.opsForSet().isMember(entityLikeKey, userId);

            // 开启事务
            redisOperations.multi();

            if (isMember) {
                redisTemplate.opsForSet().remove(entityLikeKey, userId);
                redisTemplate.opsForValue().increment(userLikeKey, -1);
            } else {
                redisTemplate.opsForSet().add(entityLikeKey, userId);
                redisTemplate.opsForValue().increment(userLikeKey, 1);
            }
            return redisOperations.exec();
        }
    });

}