(Redis的使用)一文带你了解如何在Java中操作Redis

53 阅读3分钟

前言

为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 一、 Redis客户端简介

  1. Redis客户端分类

    Redis的Java 客户端很多,官方推荐的有三种

     Jedis
     Lettuce
     Redisson
    
  2. Spring 整合 Redis 的两种方式

    Spring 对 Redis 客户端进行了整合,提供了 Spring Data Redis,在spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis 二、 使用 Jedis 操作 Redis

  3. Jedis的maven坐标

redis.clients jedis 2.8.0
  1. 使用Jedis操作Redis的步骤

     获取连接
     执行操作
     关闭连接
    
  2. Jedis 操作 Redis 示例

  3. 新建maven工程,导入相关坐标

    junit junit 4.12
     <dependency>
         <groupId>redis.clients</groupId>
         <artifactId>jedis</artifactId>
         <version>2.8.0</version>
     </dependency>
    
  4. 编写测试方法

/**

  • 使用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();
    

    } }

  1. 启动redis服务(windows),连接客户端,测试获取 key username

在这里插入图片描述

  1. 启动测试类,通过后再次获取key username

在这里插入图片描述 三、 使用 Spring Data Redis 操作 Redis

  1. Spring Data Redis 的 maven 坐标
org.springframework.boot spring-boot-starter-data-redis
  1. spring Data Redis 中 operation 接口的分类

    spring Data Redis中提供了一个高度封装的类RedisTemplate,针对iedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下

     ValueOperations ---- 简单K-V操作
     SetOperations ---- set类型数据操作
     ZSetOperations ---- zset类型数据操作
     HashOperations ---- 针对map类型的数据操作
     ListOperations ---- 针对list类型的数据操作
    
  2. Spring Data Redis 操作 Redis String 类型示例(ValueOperations ---- 简单K-V操作)

  3. 新建 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>
    
  4. 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 #连接池中的最小空闲连接

  1. 了解如何修改默认数据库数量(16)配置

在这里插入图片描述

  1. 编写测试方法

@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

  1. 其他测试 @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);

    } }