Jedis 使用及 StringRedisTemplate 常用方法

原创
2020/03/24 21:21
阅读数 1.5K

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");
    }
}
展开阅读全文
打赏
2
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
2
分享
返回顶部
顶部