返回顶部
首页 > 资讯 > 后端开发 > JAVA >Redis在Java中的基本使用
  • 508
分享到

Redis在Java中的基本使用

redisjava数据库 2023-08-21 09:08:31 508人浏览 独家记忆
摘要

本片将介绍 Redis 在 Java 中的基本使用 文章目录 1、使用jedis操作redis1.1、Jedis简介1.2、引入jedis的Maven依赖1.2、获取连接1.3、使用实例 2、对于JedisPool

本片将介绍 Redis 在 Java 中的基本使用



1、使用jedis操作redis

1.1、Jedis简介

Jedis 是 Java 语言开发的 Redis 客户端工具包,用于 Java 语言与 Redis 数据进行交互。

Jedis 在 GitHub 官网地址:https://github.com/redis/jedis

Jedis 只是对 Redis 命令的封装,掌握 Redis 命令便可轻易上手 Jedis。

Jedis 遵循 RESP 协议规范开发,具有良好的通用性与可读性。

1.2、引入jedis的Maven依赖
                <dependency>            <groupId>redis.clientsgroupId>            <artifactId>jedisartifactId>            <version>4.4.3version>        dependency>
1.2、获取连接

对于许多应用程序,需要连接到 Redis 时。最好使用连接池。可以像这样实例化一个 Jedis 连接池:

JedisPool pool = new JedisPool("localhost", 6379);

对于 JedisPool 实例,可以使用 try-With-resources 块获得连接并运行 Redis 命令(这种方式无须自己手动 close)。

try (Jedis jedis = pool.getResource()) {// 运行单个 SET 命令  jedis.set("clientName", "Jedis");}
1.3、使用实例

编写以下代码:

    public static void main(String[] args) {        // Redis服务端IP和端口号        JedisPool pool = new JedisPool("127.0.0.1", 6379);        try (Jedis jedis = pool.getResource()) {            // 使用相关Redis的命令            // 选择第0个数据库进行操作            jedis.select(0);            // 向0号数据库写入,字符串数据            jedis.set("Java", "best");            jedis.set("PHP", "Good");            // 查询是否写入            System.out.println(jedis.get("Java"));            System.out.println(jedis.get("php"));        }    }

运行测试用例:

image-20230812233428661

Jedis 实例实现了大多数 Redis 命令,这些命令可以在 https://www.javadoc.io/doc/redis.clients/jedis/latest/redis/clients/jedis/Jedis.htmlApI 中查询命令对应的方法。

image-20230812233859534


2、对于JedisPooled的使用

2.1、使用JedisPooled

对每个命令使用 try-with-resources 块可能比较麻烦,因此我们可以考虑使用 JedisPooled。

JedisPooled jedis = new JedisPooled("localhost", 6379);

详细代码:

    public static void main(String[] args) {        JedisPooled pool = new JedisPooled("127.0.0.1", 6379, null, null);        pool.set("Java", "best");        pool.set("PHP", "good");        System.out.println(pool.get("Java"));        System.out.println(pool.get("PHP"));    }

运行效果:

image-20230812233428661

2.2、关于连接池

使用链接池是官方推荐的使用方式,通过连接池可以更好的使用 Jedis 的,我们可以通过 GenericObjectPoolConfig 对连接池进行相关配置,GenericObjectPoolConfig api 文档:https://commons.apache.org/proper/commons-pool/apidocs/org/apache/commons/pool2/impl/GenericObjectPoolConfig.html

通过 GenericObjectPoolConfig 对象对连接池进行配置,具体代码如下:

    public static void main(String[] args) {        GenericObjectPoolConfig config = new JedisPoolConfig();        // 设置连接池中最多允许放100个Jedis对象        config.setMaxTotal(100);        // 设置连接池中最大允许空闲连接        config.setMaxIdle(100);        // 设置连接池中最小允许的连接数        config.setMinIdle(10);        // 借出连接的时候是否测试有效性,推荐false        config.setTestOnBorrow(false);        // 归还时是否测试,推荐false        config.setTestOnReturn(false);        // 创建时是否测试有效  开发的时候设置为false,实践运行的时候设置为true        config.setTestOnCreate(false);        // 当连接池内jedis无可用资源时,是否等待资源,true        config.setBlockWhenExhausted(true);        // 没有获取资源时最长等待1秒,1秒后没有还没有的话就报错        config.setMaxWaitMillis(1000);        JedisPool pool = new JedisPool(config, "127.0.0.1", 6379);        try (Jedis jedis = pool.getResource()) {            // 使用相关Redis的命令            // 选择第0个数据库进行操作            jedis.select(0);            // 向0号数据库写入,字符串数据            jedis.set("Java", "best");            jedis.set("PHP", "good");            // 查询是否写入            System.out.println(jedis.get("Java"));            System.out.println(jedis.get("PHP"));        }    }

运行效果:

image-20230812233428661


3、SpringBoot下使用Redis

3.1、引入Maven依赖

首先,需要在 pom.xml 文件中添加 Redis 依赖:

    org.springframework.boot    spring-boot-starter-data-redis

这个依赖包含了 Spring Data Redis,以及 Jedis 和 Lettuce 这两种 Redis 客户端的实现。

3.2、配置Redis连接

在 SpringBoot 项目中,可以通过在 application.properties 或 application.yml 文件中配置 Redis 连接信息。以下是一个示例:

spring:  data:    redis:      timeout: 3000      database: 0      passWord: password      port: 6379      host: localhost

其中,host 和 port 分别是 Redis 服务器的地址和端口号,password 是 Redis的密码(如果没有密码,可以不填),timeout 是 Redis 连接超时时间,jedis.pool 是连接池的相关设置。

3.3、创建RedisTemplate

使用 Spring Data Redis 操作 Redis,通常会使用 RedisTemplate 类。为了方便起见,我们可以创建一个工具类来管理 RedisTemplate 的创建和使用。以下是一个示例:

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.ValueOperations;import org.springframework.stereotype.Component;import javax.annotation.Resource;import java.util.Set;import java.util.concurrent.TimeUnit;@Componentpublic class RedisUtils {        @Resource    private RedisTemplate<String,Object> redisTemplate;    private Logger logger = LoggerFactory.getLogger(this.getClass());        public boolean cacheValue(String key, Object value, long time) {        try {            ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();            valueOperations.set(key, value);            if (time > 0) {                // 如果有设置超时时间的话                redisTemplate.expire(key, time, TimeUnit.SECONDS);            }            return true;        } catch (Throwable e) {            logger.error("缓存[" + key + "]失败, value[" + value + "] " + e.getMessage());        }        return false;    }        public boolean cacheValue(String key, Object value) {        return cacheValue(key, value, -1);    }        public boolean containsKey(String key) {        try {            return redisTemplate.hasKey(key);        } catch (Throwable e) {            logger.error("判断缓存是否存在时失败key[" + key + "]", "err[" + e.getMessage() + "]");        }        return false;    }        public Object getValue(String key) {        try {            ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();            return valueOperations.get(key);        } catch (Throwable e) {            logger.error("获取缓存时失败key[" + key + "]", "err[" + e.getMessage() + "]");        }        return null;    }        public boolean removeValue(String key) {        try {            redisTemplate.delete(key);            return true;        } catch (Throwable e) {            logger.error("移除缓存时失败key[" + key + "]", "err[" + e.getMessage() + "]");        }        return false;    }        public boolean removeKeys(String pattern) {        try {            Set<String> keySet = redisTemplate.keys(pattern + "*");            redisTemplate.delete(keySet);            return true;        } catch (Throwable e) {            logger.error("移除key[" + pattern + "]前缀的缓存时失败", "err[" + e.getMessage() + "]");        }        return false;    }}

在这个示例中,我们使用 @Resource 注解自动注入了一个 RedisTemplate 对象。然后,我们提供了三个方法来对 Redis 进行操作:cacheValue 方法用于缓存数据,getValue 方法用于获取缓存数据,removeValue 方法用于删除缓存数据。这些方法都是通过 redisTemplate 对象来实现的。

需要注意的是,在使用 RedisTemplate 时,需要指定键值对的类型。在这个示例中,我们指定了键的类型为 String,值的类型为 Object。

3.4、使用RedisTemplate

在上面的示例中,我们已经创建了一个 RedisTemplate 对象,并提供了一些方法来对 Redis 进行操作。现在,我们可以在 SpringBoot 项目中的任何地方使用这个工具类来进行缓存操作。以下是一个示例:

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.WEB.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class UserController {    @Autowired    private RedisUtils redisUtils;    @Autowired    private UserService userService;    @GetMapping("/users/{id}")    public User getUserById(@PathVariable Long id) {        String key = "user_" + id;        User user = (User) redisUtils.getValue(key);        if (user == null) {            user = userService.getUserById(id);            redisUtils.cacheValue(key, user);        }        return user;    }}

在这个示例中,我们创建了一个 UserController 类,用于处理 Http 请求。在 getUserById 方法中,我们首先构造了一个缓存的 key,然后使用 redisUtils.getValue 方法从 Redis 中获取缓存数据。如果缓存中没有数据,我们调用 userService.getUserById 方法从数据库中获取数据,并使用 redisUtils.cacheValue 方法将数据存入Redis缓存中。最后,返回获取到的数据。

通过这个示例,我们可以看到,在S pringBoot 项目中使用 Redis 作为缓存的流程。我们首先需要添加 Redis 依赖,然后在配置文件中配置 Redis 连接信息。接着,我们创建了一个 RedisUtil s工具类来管理 RedisTemplate 的创建和使用。最后,我们在控制器中使用 RedisUtils 来对 Redis 进行缓存操作。

来源地址:https://blog.csdn.net/weixin_45187434/article/details/132373648

--结束END--

本文标题: Redis在Java中的基本使用

本文链接: https://lsjlt.com/news/376823.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Redis在Java中的基本使用
    本片将介绍 Redis 在 Java 中的基本使用 文章目录 1、使用jedis操作redis1.1、Jedis简介1.2、引入jedis的Maven依赖1.2、获取连接1.3、使用实例 2、对于JedisPool...
    99+
    2023-08-21
    redis java 数据库
  • Redis实战:Redis在Java中的基本使用
    本片将介绍 Redis 在 Java 中的基本使用 文章目录 1、使用jedis操作redis1.1、Jedis简介1.2、引入jedis的Maven依赖1.2、获取连接1.3、使用实...
    99+
    2023-08-31
    redis java 数据库
  • Java中redis的基本类型
    redis存储数据的基本类型有:string(字符串类型)、hash(散列类型)、list(列表类型)、set(集合类型)、zset(有序集合类型)。 redis中的每个对象都由一个...
    99+
    2024-04-02
  • Redis的基本使用 - 纪宇
    简介 Redis是由意大利人开发的一款内存高速缓存数据库,是一个高性能的键值对(key- value)存储数据库 Redis全称为: Remote Dictionary Server(远程数据服务),使用C语言编写,并以内存作为数据存储介质...
    99+
    2019-06-13
    Redis的基本使用 - 纪宇
  • 在Java中使用基本的正则表达式
    一、正则表达式简介 正则表达式是使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。爬虫中解析html可以使用正则来方便的提取信息 二、正则表达式匹配规则 ...
    99+
    2024-04-02
  • Java中Jedis基本使用
    在前面我们已经学习了Redis命令行客户端redis-cli的使用,接下来我们了解一下Redis基于Java编程语言的客户端。 在Java语言体系下,有三个常用的Redis客户端Je...
    99+
    2024-04-02
  • Redis中Scan命令的基本使用教程
    前言 Redis中有一个经典的问题,在巨大的数据量的情况下,做类似于查找符合某种规则的Key的信息,这里就有两种方式, 一是keys命令,简单粗暴,由于Redis单线程这一特性,keys命令是以阻塞的方式执...
    99+
    2024-04-02
  • Java中JSR303的基本使用详情
    目录1.关于JSR-3032. 基本使用3. 级联验证4. 分组验证4.1定义接口,充当标识4.2 指定校验的组5. 组序列6. 自定义校验注解7. 校验结果的处理7.1 全局异常处...
    99+
    2024-04-02
  • minio的基本使用——java
    第一步:下载minio服务安装包 去官网下载:MinIO | 用于创建高性能对象存储的代码和下载内容 minio的使用文档:MinIO Object Storage for Kubernetes — MinIO Object Storag...
    99+
    2023-09-01
    java 开发语言
  • redis安装和基本使用
    redis的概念: Redis是一个开源的基于内存亦可持久化的日志型、Key-Value数据库 redis工具: redis-benchmark #用于进行redis性能测试的工具 redis-sent...
    99+
    2024-04-02
  • hansontable在vue中的基本使用教程
    目录简介代码效果图参考文档简介 Vue Handsontable是一个具有Spreadsheet外观的Vue数据表格组件,是Handsontable的官方封装。 Handsontab...
    99+
    2022-11-13
    vue  hansontable使用 vue  hansontable
  • 如何在java项目中使用redis
    本篇文章给大家分享的是有关如何在java项目中使用redis,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、首先下载jar包放到你的工程中2、练习package c...
    99+
    2023-05-31
    redis java ava
  • Linux、Windows下Redis的安装即Redis的基本使用详解
    目录前言什么是Redis使用Redis能做什么Redis入门Redis简介Redis下载与安装Redis下载Redis安装Redis服务启动与停止Ctrl + C停止Redis服务Ctrl + C停止Redis服务Red...
    99+
    2024-04-02
  • Java NIO的基本使用实例
    这篇文章主要介绍“Java NIO的基本使用实例”,在日常操作中,相信很多人在Java NIO的基本使用实例问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java NIO的基本使用实例”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • Java生态/Redis中如何使用Lua脚本
    文章目录 一、安装LUA1)简单使用 二、lua语法简介1、注释1)单行注释2)多行注释 2、关键字3、变量1)全局变量2)局部变量 4、数据类型1)Lua数组2)字符串操作 5、if-else6、循环1)fo...
    99+
    2023-08-19
    lua java redis
  • Java生态/Redis中怎么使用Lua脚本
    本篇内容主要讲解“Java生态/Redis中怎么使用Lua脚本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java生态/Redis中怎么使用Lua脚本”吧!一、安装LUAMac上安装LUA很简...
    99+
    2023-07-05
  • Java中线程的基本方法使用技巧
    java中线程的基本方法的熟练使用是精通多线程编程的必经之路,线程相关的基本方法有wait,notify,notifyAll,sleep,join,yield等,本文浅要的介绍一下它们的使用方式。线程的状态图java将操作系统中的就绪和运行...
    99+
    2023-05-31
    java 线程 使用
  • sass在react中的基本使用(实例详解)
    目录1. 安装sass2. 编写App.tsx中的基本DOM3. sass变量4. sass中的选择器嵌套和属性嵌套5. sass中的@import和Partials6. Sass中...
    99+
    2024-04-02
  • Redis - Python 客户端基本使用指南
    概述 参考:python 模块Redis模块,连接Redis数据库 Python 中的 Redis 客户端库允许开发者与 Redis 数据库进行交互。这些库允许在 Python 中连接到 Redis、...
    99+
    2023-10-27
    python 数据库 1024程序员节 redis
  • 怎么使用java中的redis
    怎么使用java中的redis?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一步在我们的电脑上安装好redis之后,进去redis目录,双击...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作