idea环境下Redis的Java客户端

一、Jedis的快速入门

1 、引入依赖

<dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>3.7.0</version>
    </dependency>

2 、创建Jedis对象,建立连接

在这里插入图片描述

private Jedis jedis;

    @BeforeEach
    void setUp(){
        //1.建立连接
        jedis = new Jedis("192.168.140.129",6379);
        //2.设置密码
        jedis.auth("123321");
        //3.选择库
        jedis.select(0);
    }

3、 测试string

字符串类型

@Test
    void testString(){
        //存入数据
        String result = jedis.set("name", "小志");
        System.out.println("result = " + result);
        
        //获取数据
        String name = jedis.get("name");
        System.out.println("name = " + name);

    }

Hash数据

@Test
    void  testHash(){
        //存入数据
        jedis.hset("user:1", "name", "xiaoxiaozhi");
        jedis.hset("user:1", "age", "21");

        //获取数据
        Map<String, String> map = jedis.hgetAll("user:1");
        System.out.println(map);
    }

测试结果
在这里插入图片描述

4 、释放资源

@AfterEach
    void tearDown(){
        if (jedis != null){
            jedis.close();
        }
    }

二、Jedis连接池

连接池配置

在这里插入图片描述

public class JedisConnectionFactory {
    private static final JedisPool jedisPool;
    static {
        //配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //连接池最多可以创建8个
        poolConfig.setMaxTotal(8);
        //最大空闲连接
        poolConfig.setMaxIdle(8);
        //最小空闲连接
        poolConfig.setMinIdle(0);
        //等待时长
        poolConfig.setMaxWaitMillis(1000);    //最多等待1000毫秒
        //创建连接池对象
        jedisPool = new JedisPool(poolConfig,
                "192.168.140.129",6379,1000,"123321");
    }
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

从连接池获取jedis
在这里插入图片描述

jedis = JedisConnectionFactory.getJedis();      //从连接池获取jedis

三、SpringDataRedis快速入门

1 、创建一个SpringBoot项目

勾选NoSQL下的Spring-Data-Redis,则pom文件中自动导入依赖

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2 、引入依赖

·······<!-- Redis依赖 --> 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--连接池依赖-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

3、 在application.yml中配置redis信息

在这里插入图片描述

spring:
    redis:
        host: 192.168.140.129
        port: 6379
        password: 123321
        lettuce:
            pool:
                max-active: 8
                max-idle: 8
                min-idle: 0
                max-wait: 1000ms

4 、注入RedisTemplate

在这里插入图片描述

@Autowired
    private RedisTemplate redisTemplate;

    @Test
    void testString() {
        //写入一条String数据
        redisTemplate.opsForValue().set("name","小志");
        //获取string数据
        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }

四、SpringDataRedis的序列化

方法一:JSON序列化(不推荐)

1、 JSON序列化工具

编写redisConfig文件
通过自定义RedisTemplate,修改RedisTemplate的序列化器为GenericJackson2JsonRedisSerializer
优点:自动进行序列化和反序列化
缺点:额外占用内存空间

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){
        //创建RedisTemplate对象
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //设置连接工厂
        template.setConnectionFactory(connectionFactory);
        //创建JSON序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
        //设置key的序列化
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());
        //设置Value的序列化
        template.setValueSerializer(jsonRedisSerializer);
        template.setHashValueSerializer(jsonRedisSerializer);
        //返回
        return template;
    }
}

2、 编写测试类

@Test
    void testString() {
        //写入一条String数据
        redisTemplate.opsForValue().set("name","小志");
        //获取string数据
        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }

    @Test
    void testSaveUser(){
        //写入数据
        redisTemplate.opsForValue().set("user:100",new User("晒会太阳",22));
        //获取数据
        User o = (User) redisTemplate.opsForValue().get("user:100");        //获取到的是user对象,进行强转
        System.out.println("o = " + o);
    }

图形化界面输出
在这里插入图片描述
在这里插入图片描述

方法二:String序列化(推荐,节省内存空间)

使用StringRedisTemplate,仅存储string类型的key和value,存储Java对象时,手动把对象序列化为JSON(写入Redis时),手动把读取到的JSON反序列化为对象(读取Redis时)。
Spring默认提供了一个SpringRedisTemplate类,它的key和value的序列化方式默认就是String方式,省去自定义RedisTemplate的过程。

1、string类型测试类

 @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Test
    void testString() {
        //写入一条String数据
        stringRedisTemplate.opsForValue().set("name","小志");
        //获取string数据
        Object name = stringRedisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }

在这里插入图片描述

2、Java对象测试类(推荐使用)

//Java对象
    //JSON序列化工具
    private static final ObjectMapper mapper = new ObjectMapper();
    @Test
    void testSaveUser() throws JsonProcessingException {
        //创建对象
        User user = new User("晒会太阳", 21);
        //手动序列化
        String json = mapper.writeValueAsString(user);
        //写入数据
        stringRedisTemplate.opsForValue().set("user:200",json);
        //获取数据
        String jsonUser = stringRedisTemplate.opsForValue().get("user:200");
        //手动反序列化
        User user1 = mapper.readValue(jsonUser, User.class);
        System.out.println("user1 = " + user1);
    }

在这里插入图片描述
图形化界面:
在这里插入图片描述

补充:

哈希结构

@Test
    void testHash(){
        //写入数据
        stringRedisTemplate.opsForHash().put("user:400","name","小五");
        stringRedisTemplate.opsForHash().put("user:400","age","6");
        //读取数据
        Map<Object, Object> entries = stringRedisTemplate.opsForHash().entries("user:400");
        System.out.println("entries  = " + entries );
    }

在这里插入图片描述
图形化界面:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值