Redis基础篇(三)Redis的java客户端

一、Jedis

1、普通jedis

(1)引入依赖

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

(2)建立连接

private Jedis jedis;

    @BeforeEach
    void setUp() {
          
   
        jedis = new Jedis("127.0.0.1", 6379);
        // 密码
        jedis.auth("123456");
        //选择库
        jedis.select(2);
    }

(3) 测试

@Test
    void jedisString() {
          
   
        String set = jedis.set("name", "allen");
        System.err.println(set);
        String name = jedis.get("name");
        System.err.println(name);
    }

(4) 释放资源

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

2、jedis连接池

public class JedisConFactory {
          
   
    private static JedisPool jedisPool = null;

    static {
          
   
        //配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //设置最大连接数
        poolConfig.setMaxTotal(8);
        //设置最大空闲数
        poolConfig.setMaxIdle(8);
        //设置最小空闲数
        poolConfig.setMinIdle(0);
        jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379);
    }

    public static Jedis getJedis(){
          
   
        return jedisPool.getResource();
    }
    
}

二、 SpirngDataReids

1、特点

    提供了对不同Redis客户端的整合(Lettuce和Jedis,默认Lettuce) 提供了RedisTemplate统一API来操作Redis 支持Redis的发布订阅模型 支持Redis哨兵和Redis集群 支持基于Lettuce的响应式编程 支持基于JDK、JSON、字符串、Spring对象的数据序列化和反序列化 支持基于Redis的JDKCollection实现

2、快速入门

(1) 引入依赖

<!-- spring boot redis缓存引入 -->
	 <dependency> 
		 <groupId>org.springframework.boot</groupId> 
		 <artifactId>spring-boot-starter-data-redis</artifactId> 
	 </dependency>
  <!-- lecttuce 缓存连接池-->
     <dependency>
	    <groupId>org.apache.commons</groupId> 
	    <artifactId>commons-pool2</artifactId> 
     </dependency>

(2) 添加application.yaml配置

spring:
  redis:
    host: 120.79.157.129
    port: 6379
    database: 2
    # password:  #默认为空
    lettuce:
      pool:
        max-active: 20  #最大连接数,负值表示没有限制,默认8
        max-wait: -1    #最大阻塞等待时间,负值表示没限制,默认-1
        max-idle: 8     #最大空闲连接,默认8
        min-idle: 0     #最小空闲连接,默认0

(3) 测试

@Configuration
public class RedisConfig {
          
   
    @Autowired
    private RedisTemplate redisTemplate;

	//有则取出key值所对应的值
	redisTemplate.opsForValue().get(key)
}

3、序列化问题

RedisTemplate可以接收任意Object作为值写入Redis,只不过写前会把Object写成字节形式,默认是JDK序列化,得到的结果如下: 解决办法(两种):

(1)自定义RedisTemplate序列化方式

实现效果:

(2)StringRedisTemplate

为了节省内存空间,统一使用String序列化器,要求只能存储String类型的key和value。当存储java对象时,手动完成序列化。

三、Redission

分布式 待。。。

经验分享 程序员 微信小程序 职场和发展