RedisTemplate Pipelined的簡單使用


簡單理解【貨物批發】:
第一種方式:想到一件商品就聯系批發廠商送一件,勞命傷財;
第二種方式:將想要的商品列出清單讓批發廠商一次性送來,成本節約;
第二種方式就可以看作是 pipelined。

@Slf4j
@Component
public class RedisUtil {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    /**
     * @title: strAddPipelined
     * @author: admin
     * @createDate: 2022/2/25 21:50
     * @version: 1.0
     * @param map:
     * @param seconds:
     * @return: void
     * @description: 使用pipelined批量存儲
     */
    public void strAddPipelined(Map<String, String> map, long seconds) {
        RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
        redisTemplate.executePipelined(new RedisCallback<String>() {
            @Override
            public String doInRedis(RedisConnection connection) throws DataAccessException {
                map.forEach((key, value) -> {
                    connection.setNX(serializer.serialize(key), serializer.serialize(value));
                    connection.expire(serializer.serialize(key),seconds);
                });
                return null;
            }
        },serializer);
    }

    /**
     * @title: strGetPipelined
     * @author: admin
     * @createDate: 2022/2/28 11:28
     * @version: 1.0
     * @param keyList:
     * @return: java.util.List<java.lang.String>
     * @description: 使用pipelined批量獲取
     */
    public List<String> strGetPipelined(List<String> keyList) {
        RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
        List<Object> objects = redisTemplate.executePipelined(new RedisCallback<String>() {
            @Override
            public String doInRedis(RedisConnection redisConnection) throws DataAccessException {
                for (String key : keyList) {
                    redisConnection.get(serializer.serialize(key));
                }
                return null;
            }
        },serializer);
        List<String> collect = objects.stream().map(val -> (String)(val)).collect(Collectors.toList());
        return collect;
    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM