• Redis(三) Redis的java客户端


    一、Jedis

    1、普通jedis

    (1)引入依赖

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>4.2.0</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (2)建立连接

        private Jedis jedis;
    
        @BeforeEach
        void setUp() {
            jedis = new Jedis("127.0.0.1", 6379);
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    (3) 测试

        @Test
        void jedisString() {
            String set = jedis.set("name", "allen");
            System.err.println(set);
            String name = jedis.get("name");
            System.err.println(name);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    (4) 释放资源

        @AfterEach
        void tearDown() {
            if (jedis != null) {
                jedis.close();
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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();
        }
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    二、 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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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						
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3、测试

    @Configuration
    public class RedisConfig {
        @Autowired
        private RedisTemplate redisTemplate;
    
    	//有则取出key值所对应的值
    	redisTemplate.opsForValue().get(key)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3、序列化问题

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

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

    在这里插入图片描述
    实现效果:
    在这里插入图片描述

    (2)StringRedisTemplate

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

  • 相关阅读:
    Flask框架中Jinja2模板配置静态文件(url_for)
    33岁程序员的年中总结
    一种解决多旅行商问题的改进的遗传算法
    Linux用户/用户组管理
    电力电子转战数字IC20220824day68——uvm实战3
    SpringCloud详解
    数字化企业各业务模块模型
    双十一期间如何抢占流量,打造品牌爆款产品
    dotnet 融合 Avalonia 和 UNO 框架
    c++递归分析出依赖的头文件
  • 原文地址:https://blog.csdn.net/qq_38618691/article/details/125212081