Java官方推荐使用Jedis作为Redis的连接开发工具
1、Jedis 使用
1.1、添加依赖
<dependencies>
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
</dependencies>
1.2、测试代码
package com.czxy;
import redis.clients.jedis.Jedis;
/**
* @author 庭前云落
* @Date 2020/3/24 11:32
* @description
*/
public class TestJava {
public static void main(String[] args) {
//1 连接redis,new Jedis(ip地址,端口号)
Jedis jedis = new Jedis("127.0.0.1", 6379);
//2 设置数据, set(键,值)
jedis.set("WTINGSSS","闲看庭前云落");
//3 获得数据,get(键)
String wtingsss = jedis.get("WTINGSSS");
System.out.println(wtingsss);
//4 释放资源
jedis.close();
}
}

2、与 Spring boot 整合
- 直接使用Jedis进行操作,功能单一且操作繁琐
- 与 SpringBoot 进行整合,整合后 Spring Boot 提供 RedisTemplate工具
- RedisTemplate 增强了 Jedis
- 在 redis 使用字符串操作最多,专门为字符串处理模板:StringRedisTemplate
2.1、在 yml 文件下,添加 redis 基本配置
redis:
database: 0
host: 127.0.0.1
port: 6379
完整yml
#端口号
server:
port: 8081
spring:
application:
name: cgwebservice #服务名
main:
allow-bean-definition-overriding: true
datasource: #数据源配置
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/changgou_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 1234
druid: #druid连接池配置
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 1000
test-on-borrow: true
redis:
database: 0
host: 127.0.0.1
port: 6379
#配置eureka(注册中心)
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
instance:
prefer-ip-address: true
ip-address: 127.0.0.1
instance-id: ${eureka.instance.ip-address}.${server.port}
lease-renewal-interval-in-seconds: 3
lease-expiration-duration-in-seconds: 10
2.2、启动类
package com.czxy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @author 庭前云落
* @Date 2020/3/20 17:08
* @description
*/
@SpringBootApplication
@EnableDiscoveryClient
public class CGWebServiceApplication {
public static void main(String[] args) {
SpringApplication.run(CGWebServiceApplication.class,args);
}
}
2.3、测试,让 spring 将 StringRedis 注入给测试类
package com.czxy.controller;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.czxy.pojo.User;
import com.czxy.utils.SmsUtil;
import com.czxy.vo.BaseResult;
import org.apache.commons.lang.RandomStringUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
/**
* @author 庭前云落
* @Date 2020/3/22 9:03
* @description
*/
@RestController
@RequestMapping("/sms")
public class SmsController {
@Resource
private StringRedisTemplate stringRedisTemplate;
@Test
public void testDemo(){
System.out.println(stringRedisTemplate);
}
}
3、StringRedisTemplate 常用方法
- Redis 一共有5中类型,StringRedisTemplate 提供5种类型操作。
方法 | 描述 |
---|
opsForValue() | 操作字符串 |
delete(key) | 根据key删除记录 |
opsForHash() | 操作hash |
opsForList() | 操作list |
opsForSet() | 操作set |
opsForZSet() | 操作有序set |
- 具体操作,通过 opsForValue()获得字符串操作对象
方法 | 描述 |
---|
ops.set(key,value); | 向redis中插入数据。因为这个没有设置过期时间所以是永久存储的 |
ops.set(key,value,time,timeUtil) | 向redis中插入数据。第三个参数是一个long型的时间。最后一个参数是时间的单位 |
ops.get(key) | 获取redis中指定key 的value值。 |
/**
* @author 庭前云落
* @Date 2020/3/24 11:32
* @description
*/
public class TestJava {
@Resource
private StringRedisTemplate stringRedisTemplate;
@Test
public void demo01() {
//添加字符串数据
stringRedisTemplate.opsForValue().set("w1", "庭前云落");
}
/**
* TimeUnit 时间单位
* TimeUnit.SECONDS 秒
* TimeUnit.MINUTES 分
* TimeUnit.HOURS 小时
* TimeUnit.DAYS 添加
* TimeUnit.MILLISECONDS 毫秒
* TimeUnit.MICROSECONDS 微秒
* TimeUnit.NANOSECONDS 纳秒
*/
@Test
public void demo02() {
//添加字符串数据,有效时间5分钟
stringRedisTemplate.opsForValue().set("w2", "王权", 5, TimeUnit.MINUTES);
}
@Test
public void demo03() {
//获得字符串数据
String str = stringRedisTemplate.opsForValue().get("w1");
System.out.println(str);
}
@Test
public void demo04() {
//删除数据
stringRedisTemplate.delete("w1");
}
}