在Redis官网中提供了很多语言的客户端:Redis官网
所以我们大致是要了解3种客户端 Jedis、lettuce、Redisson
其中Spring帮我们做了整合,将Jedis与lettuce进行了封装成了它特有的Spring Data Redis
至于Redisson是用在分布式的场景中,在学习分布式锁的时候小伙伴可以自行去了解一下,这里不做赘述。
- 引入依赖
- 建立连接
- 编写测试方法
- 释放资源
- <!--redis的依赖-->
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>3.7.0</version>
- </dependency>
-
- <!--测试-->
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter</artifactId>
- <version>5.8.2</version>
- <scope>test</scope>
- </dependency>
- public class JedisTest {
-
- private Jedis jedis;
-
- // 在Junit5中使用了 @BeforeEach注解替代了 在Junit4的@Before
- // 表示应在当前类中的每个@Test方法之前执行注解方法
- @BeforeEach
- void setUp() {
- // 建立连接
- jedis = new Jedis("192.168.88.130",6379);
- // 设置密码
- jedis.auth("888888");
- // 选择库
- jedis.select(0);
- }
-
- @Test
- void testString() {
- // 插入数据
- String set = jedis.set("name", "天狼");
- System.out.println(set);
- // 获取数据
- String name = jedis.get("name");
- System.out.println(name);
- }
-
- @AfterEach
- void setDown() {
- if (jedis != null) {
- jedis.close();
- }
- }
- }
注意:
在Junit5中使用 @BeforeEach注解替代了 在Junit4的@Before。表示应在当前类中的每个@Test方法之前执行注解方法。
后面的@AfterEach也类似,表示在@Test方法之后执行注解方法。
Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此推荐使用Jedis连接池的方式代替直连。
我们通常会创建一个工具类JedisConnectFactory ,用于创建其连接池,设置参数。
JedisConnectFactory 用于设置连接池的属性
- public class JedisConnectFactory {
- private static final JedisPool jedisPoll;
-
- static {
- // 配置连接池
- JedisPoolConfig poolConfig = new JedisPoolConfig();
- // 最大连接数
- poolConfig.setMaxTotal(8);
- // 最大空闲连接(没有人访问,池子中仍存在的连接数)
- poolConfig.setMaxIdle(8);
- // 最小空闲时间(超过一段时间,要是一直没有访问...)
- poolConfig.setMinIdle(0);
- // 等待时长
- poolConfig.setMaxWaitMillis(1000);
-
- //创建连接池对象
- jedisPoll = new JedisPool(poolConfig,
- "192.168.88.130",
- 6379,
- 1000,
- "888888");
- }
-
- public static Jedis getJedis() {
- return jedisPoll.getResource();
- }
- }
和上述的Test方法相比 只是将new Jedis("192.168.88.130",6379) 转变为调用刚刚创建的工具类中的静态方法JedisConnectFactory.getJedis();
- public class JedisTest {
- private Jedis jedis;
-
- // 在Junit5中使用了 @BeforeEach注解替代了 在Junit4的@Before
- // 表示应在当前类中的每个@Test方法之前执行注解方法
- @BeforeEach
- void setUp() {
- // 建立连接(连接池!!!)
- jedis = JedisConnectFactory.getJedis();
- // 设置密码
- jedis.auth("888888");
- // 选择库
- jedis.select(0);
- }
-
- @Test
- void testString() {
- // 插入数据
- String set = jedis.set("name", "天狼");
- System.out.println(set);
- // 获取数据
- String name = jedis.get("name");
- System.out.println(name);
- }
-
- @AfterEach
- void setDown() {
- if (jedis != null) {
- jedis.close();
- }
- }
- }