【Java - demo】Redis开发入门

news/2025/4/1 6:17:07/文章来源:https://www.cnblogs.com/o-O-oO/p/18794181

Redis 是一个高性能的键值存储数据库,常用于缓存、消息队列等场景。

本文将以简单易懂的方式介绍 Redis 的基本概念和使用方法,并附上 Java 示例代码,帮助你快速上手。

一、Redis 是什么?

Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统。它支持多种数据结构(如字符串、哈希、列表、集合等),并且可以将数据持久化到磁盘中,确保数据安全。

Redis 的核心特点:

  • 高性能:数据存储在内存中,读写速度极快。

  • 丰富的数据结构:支持字符串、哈希、列表、集合、有序集合等。

  • 持久化:支持将内存中的数据保存到磁盘,防止数据丢失。

  • 简单易用:通过简单的命令即可操作数据。

二、安装 Redis

2.1 Linux 安装

# 更新包管理器
sudo apt update
# 安装 Redis
sudo apt install redis-server
# 启动 Redis 服务
sudo systemctl start redis
# 设置开机自启
sudo systemctl enable redis

2.2 Windows 安装

‌使用MS Open Tech提供的Windows版本‌:

微软的开源技术团队MS Open Tech提供了一个Windows版本的Redis安装程序。可以从其GitHub页面下载最新版本的Redis,解压后运行redis-server.exe来启动Redis服务器‌

2.3 Docker 安装

docker run -d --name redis -p 6379:6379 redis

三、Redis 基本命令

3.1 连接 Redis

redis-cli

3.2 常用命令

设置键值对

SET mykey "Hello Redis"

获取值

GET mykey

删除键

DEL mykey

检查键是否存在

EXISTS mykey

设置过期时间

EXPIRE mykey 10  # 10 秒后过期

四、Java 操作 Redis

4.1 添加 Redis 依赖

如果你使用 Maven,可以在 pom.xml 中添加以下依赖:

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.2.3</version>
</dependency>

4.2 连接 Redis

import redis.clients.jedis.Jedis;
public class RedisExample {    public static void main(String[] args) {        // 创建连接        Jedis jedis = new Jedis("localhost", 6379);        // 测试连接       System.out.println("连接成功:" + jedis.ping());  // 输出:PONG        // 关闭连接        jedis.close();    }}

如果出现错误,可能是redis没有启动。

1、打开 CMD:
按 Win + R 键,输入 cmd 并回车,打开命令提示符窗口。
2、导航到 Redis 安装目录:
使用 cd 命令切换到 Redis 的安装目录。例如,如果 Redis 安装在 C:\Redis 目录下,可以输入 cd C:\Redis 并回车。
3、启动 Redis 服务器:

输入redis-server.exe redis.windows.conf并回车。这里的 redis.windows.conf 是 Redis 的配置文件,它包含了 Redis 服务器的各种配置选项。如果该文件不存在或你想使用不同的配置文件,可以指定相应的文件路径。

如果 Redis 服务器成功启动,你将在 CMD 窗口中看到一些启动信息和日志输出。

4.3 基本操作示例

import redis.clients.jedis.Jedis;
public class RedisExample {public static void main(String[] args) {Jedis jedis = new Jedis("localhost", 6379);// 设置键值对jedis.set("mykey", "Hello Redis");// 获取值String value = jedis.get("mykey");System.out.println("获取的值:" + value);  // 输出:Hello Redis// 删除键jedis.del("mykey");// 检查键是否存在boolean exists = jedis.exists("mykey");System.out.println("键是否存在:" + exists);  // 输出:falsejedis.close();}
}

4.4 操作哈希

import redis.clients.jedis.Jedis;
import java.util.Map;public class RedisExample {public static void main(String[] args) {Jedis jedis = null;try {jedis = new Jedis("localhost", 6379);// 设置哈希字段jedis.hset("user:1", "name", "Alice");jedis.hset("user:1", "age", "30");// 获取哈希字段String name = jedis.hget("user:1", "name");System.out.println("用户姓名:" + name);  // 输出:Alice// 获取所有字段Map<String, String> userData = jedis.hgetAll("user:1");System.out.println("用户数据:" + userData);  // 输出:{name=Alice, age=30}} catch (Exception e) {e.printStackTrace();} finally {if (jedis != null) {jedis.close();}}}
}


如果没有数据显示,再次启动redis就好了。

4.5 操作列表

import redis.clients.jedis.Jedis;
import java.util.List;public class RedisExample {public static void main(String[] args) {Jedis jedis = null;try {jedis = new Jedis("localhost", 6379);// 向左插入元素jedis.lpush("mylist", "item1");jedis.lpush("mylist", "item2");// 获取列表元素List<String> items = jedis.lrange("mylist", 0, -1);System.out.println("列表元素:" + items);  // 输出:[item2, item1]} catch (Exception e) {e.printStackTrace();} finally {if (jedis != null) {jedis.close();}}}
}

4.6 操作集合

import redis.clients.jedis.Jedis;
import java.util.Set;public class RedisExample {public static void main(String[] args) {Jedis jedis = null;try {jedis = new Jedis("localhost", 6379);// 添加元素jedis.sadd("myset", "item1");jedis.sadd("myset", "item2");// 获取所有元素Set<String> members = jedis.smembers("myset");System.out.println("集合元素:" + members);  // 输出:[item1, item2]} catch (Exception e) {e.printStackTrace();} finally {if (jedis != null) {jedis.close();}}}
}

五、Redis 应用场景

缓存:将热点数据存储在 Redis 中,减轻数据库压力。

消息队列:使用 Redis 的列表数据结构实现简单的消息队列。

排行榜:使用有序集合实现实时排行榜功能。

会话存储:将用户会话信息存储在 Redis 中,实现分布式会话管理。

六、总结

本文介绍了 Redis 的基本概念、安装方法、常用命令以及如何在 Java 中使用 Redis。通过简单的示例代码,你可以快速上手 Redis,并将其应用到实际项目中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/907835.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【流量预警】装了UU远程/GameViewer的小心了

前言 月末了,没流量了,不过我今天怎么跑了4个G的流量? 我倒要看看是谁干的好事。热点跑的?但是我一整天都挂着手机连电脑没动啊,最多也就偶尔用了一下。 别让我找到是谁偷跑我流量跑这么多 好啊好,UU远程,得,你清高,你偷偷上传我电脑数据是吧。虽说没抓到现行也只能怀…

注释、关键字、标识符

1、Java的注释有几种? 单行注释 使用双斜杠//,仅注释该行//后的内容。 多行注释(块注释) 使用/*开始,*/结束,中间所有内容均为注释,可跨越多行。 文档注释 使用/**开始,*/结束,通常用于生成API文档(通过Javadoc工具)。支持特定标签(如@param、@return等)。 关键区…

Mysql全量安装配置教程(超详细window版本无需配置环境变量)尊享篇

官网下载注册 注册 官网地址:https://www.oracle.com/mysql/technologies/mysql-enterprise-edition-downloads.html#windows 下载需要注册登录 注册可以用临时邮箱地址:https://www.suiyongsuiqi.com/zh/mail/ 如果显示400badrequest 打开无痕浏览窗口重新访问即可 解压所需…

Linux基本命令-1

Linux路径的描述方式Windows中,以\表示层级关系.有C盘,D盘等多个根目录.Linux中,以/表示层级关系./为根目录.eg:/usr/local/hello.txtLinux基础命令 命令的通用格式:命令+[选项]+[参数],其中用[ ]选中的选项,参数表示可省略. eg: ls -l /home/hu ==> 以列表形…

[Vue] Vue 模板编译原理解析 part 2

转换器 主要的目的是将模板的 AST 转换为 JS 的 AST,整个模板的编译过程如下: // Vue 的模板编译器 function compile(template) {// 1. 得到模板的 ASTconst ast = parse(template);// 2. 将模板 AST 转为 JS ASTtransform(ast); }整个转换实际上可以分为两个大的部分:模板…

Flasher V5 JLink Pro V6

原帖链接:https://nicemcu.github.io/2025/03/29/PSoC4/FlasherV5/ 2025年3月29日,神变月最后一天,我们参加了放生~ 在这个特殊的日子里,我完成了Flasher V5和JLink Pro V6的crack,难掩内心的喜悦与激动,记录下这一时刻。 前不久小黄鱼上收了一枚Flasher ARM,硬件版本V5…

[Vue] Vue模板编译原理解析 part 1

模板编译整体流程 首先我们看一下什么是编译? 所谓编译(Compile),指的是将语言 A 翻译成语言 B,语言 A 就被称之为源码(source code),语言 B 就被称之为目标代码(target code),这个事情谁来做?编译器来做。编译器你也不用想得那么神秘,就是一段程序而已。 完整的编…

[P] 结对项目:影蛇舞

项目 内容这个作业属于哪个课程 2025年春季软件工程(罗杰、任健) 这个作业的要求在哪里 [P] 结对项目:影蛇舞 我在这个课程的目标是 学习软件工程知识,通过团队协作开发一个具备实际应用价值的软件,从需求分析、设计、开发到测试和部署,完整经历软件开发生命周期,提高工…

0329-Never Give Up

前言 用LCD1602 去打印一段话吧。 就当作激励和安慰,毕竟,我今天被坏情绪传染了一下,有点点失落和悲伤。 参考 5-2 LCD1602调试器 效果 Never Give UpAttitude Is Everything代码 LCD1602.h #ifndef __LCD1602_H__ #define __LCD1602_H__//用户调用函数: void LCD_Init(); …

JavaScript 数据结构与算法 — 单向链表

链表(Linked List)是一种基本的数据结构,用于表示一组按顺序排列的元素。链表中的每个元素都与下一个元素连接,元素在内存中并不是连续的,而是通过指针来链接在一起。每个元素都包含两部分:自己的数据和指向下一个元素的指针。我们常说的链表指的是单向链表,第一个元素的…

Ethernaut通关(智能合约漏洞)(有缘更新)

SnowSword笑传之出错币Ethernaut通关 参考文章:文章 - Ethernaut闯关录(上) - 先知社区、 智能合约是什么?把智能合约想象成网络上的赛博自动售货机,每个人都可以写自己的智能合约,使用虚拟货币交易物品,并且网络区块链中的所有节点都在为你的交易记账不怕商家提桶跑路……