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
分布式 待。。。

