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