前言
为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 一、 Redis客户端简介
-
Redis客户端分类
Redis的Java 客户端很多,官方推荐的有三种
Jedis Lettuce Redisson
-
Spring 整合 Redis 的两种方式
Spring 对 Redis 客户端进行了整合,提供了 Spring Data Redis,在spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis 二、 使用 Jedis 操作 Redis
-
Jedis的maven坐标
-
使用Jedis操作Redis的步骤
获取连接 执行操作 关闭连接
-
Jedis 操作 Redis 示例
-
新建maven工程,导入相关坐标
junit junit 4.12<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.0</version> </dependency>
-
编写测试方法
/**
-
使用Jedis操作Redis */ public class JedisTest {
@Test public void testRedis(){ //1 获取连接 Jedis jedis = new Jedis("localhost",6379);
//2 执行具体的操作 jedis.set("username","xiaoming"); //输出打印 String value = jedis.get("username"); System.out.println(value); //删除操作 //jedis.del("username"); //哈希存储 jedis.hset("myhash","addr","bj"); //输出打印 String hValue = jedis.hget("myhash", "addr"); System.out.println(hValue); //keys * 输出打印 Set<String> keys = jedis.keys("*"); for (String key : keys) { System.out.println(key); } //3 关闭连接 jedis.close();
} }
- 启动redis服务(windows),连接客户端,测试获取 key username
在这里插入图片描述
- 启动测试类,通过后再次获取key username
在这里插入图片描述 三、 使用 Spring Data Redis 操作 Redis
- Spring Data Redis 的 maven 坐标
-
spring Data Redis 中 operation 接口的分类
spring Data Redis中提供了一个高度封装的类RedisTemplate,针对iedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下
ValueOperations ---- 简单K-V操作 SetOperations ---- set类型数据操作 ZSetOperations ---- zset类型数据操作 HashOperations ---- 针对map类型的数据操作 ListOperations ---- 针对list类型的数据操作
-
Spring Data Redis 操作 Redis String 类型示例(ValueOperations ---- 简单K-V操作)
-
新建 SpringBoot 工程,导入相关坐标
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
-
yml 配置文件
spring: application: name: springdataredis_demo #Redis相关配置 redis: host: localhost port: 6379 #password: 123456 database: 0 #默认操作的是0号数据库 jedis: #Redis连接池配置 pool: max-active: 8 #最大连接数 max-wait: 1ms #连接池最大阻塞等待时间 max-idle: 4 #连接池中的最大空闲连接 min-idle: 0 #连接池中的最小空闲连接
- 了解如何修改默认数据库数量(16)配置
在这里插入图片描述
- 编写测试方法
@SpringBootTest @RunWith(SpringRunner.class) public class SpringDataRedisTest {
//yml中配置支持RedisTemplate对象自动装配
@Autowired
private RedisTemplate redisTemplate;
/**
* 操作String类型数据
*/
@Test
public void testString(){
//ValueOperations valueOperations = redisTemplate.opsForValue();
redisTemplate.opsForValue().set("city","beijing");
}
} 5. 运行并访问设置的 key 值 6. 设置配置类配置Redis序列化方式 7. 修改添加的 key 为 city123,再次运行测试类并访问新设置的 key
-
其他测试 @SpringBootTest @RunWith(SpringRunner.class) public class SpringDataRedisTest {
//yml中配置支持RedisTemplate对象自动装配 @Autowired private RedisTemplate redisTemplate;
/**
-
操作String类型数据 */ @Test public void testString(){ //ValueOperations valueOperations = redisTemplate.opsForValue(); redisTemplate.opsForValue().set("city123","beijing");
//打印输出 String value = (String) redisTemplate.opsForValue().get("city123"); System.out.println(value);
//设置超时时间 redisTemplate.opsForValue().set("key1","value1",10l, TimeUnit.SECONDS);
//当key不存在才设置value Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city1234", "nanjing"); System.out.println(aBoolean);
} }
-