redisTemplate直接调用 opsFor… 来操作redis数据库,每执行一条命令是要重新拿一个连接,很耗资源:

redisTemplate.opsForValue().set("key0", "value0");
redisTemplate.opsForHash().put("hash0", "field", "test");


SessionCallback & RedisCallback :在同一条连接下执行多个Redis命令。

RedisCallback

需要处理底层的转换规则,如果不考虑改写底层,尽量不使用它!

redisTemplate.execute(new RedisCallback() {
    @Override
    public Object doInRedis(RedisConnection redisConnection) throws DataAccessException {
    	redisConnection.set("key1".getBytes(), "value1".getBytes());
    	redisConnection.hSet("hash1".getBytes(), "field".getBytes(), "test".getBytes());
    	return null;
    }
});

在这里插入图片描述

SessionCallback

高级接口,比较友好,一般情况下,优先使用它!

redisTemplate.execute(new SessionCallback() {
    @Override
    public Object execute(RedisOperations redisOperations) throws DataAccessException {
        redisOperations.opsForValue().set("key2", "value2");
        redisOperations.opsForHash().put("hash2", "field", "test");
        return null;
    }
});

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐