Welcome everyone

Spring Boot redis 学习笔记

redis 汪明鑫 1110浏览 0评论

环境准备

先开个临时用的单机redis

 

修改配置文件:

1,把bind 127.0.0.1注释掉,这句话的意思时只有本机才能连接redis(绑定了本机);其他ip登录被拒绝,所以我们把它注释掉

2,port 6667

3,保护模式去掉  protected-mode  no

4,daemonize  yes 后台模式

 

为了让客户端访问,我们还需要添加安全组规则(非阿里云服务器不需要)

 

Spring Boot整合Redis

创建一个spring boot项目

引入下面的依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- 实现对 Spring Data Redis 的自动化配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <exclusions>
                <!-- 去掉对 Lettuce 的依赖,因为 Spring Boot 优先使用 Lettuce 作为 Redis 客户端 -->
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 引入 Jedis 的依赖,这样 Spring Boot 实现对 Jedis 的自动化配置 -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.61</version>
        </dependency>

        <!-- Spring Data Redis 默认使用 Jackson 作为 JSON 序列化的工具 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

本例我们用的是jedis

 

application.properties

## Redis
spring.redis.host=服务器ip
spring.redis.port=6667

 

/**
 * @author wmx
 * @date 2019-11-22
 */
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class RedisTests {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void testString(){
        stringRedisTemplate.opsForValue().set("fpx","win");
    }
}

跑一个单测

 

[root@xinyeshuaiqi tempRedis]# redis-cli  -p 6667      
127.0.0.1:6667> 
127.0.0.1:6667> keys *
1) "fpx"
127.0.0.1:6667> get fpx
"win"

完事

 

Redis  Pipelining

可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。

@Test
    public void testPipelined(){
        List<Object> objects = stringRedisTemplate.executePipelined(new RedisCallback<Object>() {
            @Override
            public Object doInRedis(RedisConnection connection) throws DataAccessException {

                connection.set("super carry".getBytes(), "doinb".getBytes());
                connection.set("tian".getBytes(), "神僧".getBytes());

                connection.get("super carry".getBytes());
                connection.get("tian".getBytes());

                return null;

            }
        });
        System.out.println(objects);

    }

输出:

[true, true, doinb, 神僧]

 

Redis事务

@Test
    public void testTransaction(){

        stringRedisTemplate.setEnableTransactionSupport(true);
        stringRedisTemplate.opsForValue().set("1","a");
        stringRedisTemplate.opsForValue().set("2","b");
        stringRedisTemplate.opsForValue().set("3","c");
    }

通过setEnableTransactionSupport 设置支持事务

不常用了解即可

 

Redission

<dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>3.11.3</version>
        </dependency>

可以使用RedissonClient获取redis分布式锁

 

 

lettuce

Spring Boot 优先使用 Lettuce 作为 Redis 客户端

如果不想使用,排包即可

 

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <exclusions>
                <!-- 去掉对 Lettuce 的依赖,因为 Spring Boot 优先使用 Lettuce 作为 Redis 客户端 -->
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

 

你无论使用jedis、redission、lettuce,底层来说透明的,用户是无感的

用户直接操作Spring提供的RedisTemplate

 

推荐阅读

http://www.iocoder.cn/Spring-Boot/Redis/

https://blog.csdn.net/zl_momomo/article/details/82788294

 

转载请注明:汪明鑫的个人博客 » Spring Boot redis 学习笔记

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz