网站制作公司北京网站建设公司辽宁建设工程信息网联合体怎么报名
2026/5/21 11:56:59 网站建设 项目流程
网站制作公司北京网站建设公司,辽宁建设工程信息网联合体怎么报名,有没有可以做兼职的网站吗,多网站系统#x1f4bb; Hello World, 我是 予枫。 代码不止#xff0c;折腾不息。作为一个正在升级打怪的 Java 后端练习生#xff0c;我喜欢把踩过的坑和学到的招式记录下来。 保持空杯心态#xff0c;让我们开始今天的技术分享。 在日常开发中#xff0c;不管是面试还是实际业务 Hello World, 我是 予枫。代码不止折腾不息。作为一个正在升级打怪的Java 后端练习生我喜欢把踩过的坑和学到的招式记录下来。 保持空杯心态让我们开始今天的技术分享。在日常开发中不管是面试还是实际业务Redis 绝对是绕不开的核心工具——小到接口缓存、验证码存储大到分布式锁、排行榜功能几乎所有高并发场景都有它的身影。这篇文章作为 Redis 系列入门的第一篇全程避开复杂底层原理只聚焦「实用」从“Redis 到底是什么”“为什么后端必须学”到 Linux/WindowsWSL环境下的完整安装步骤再到 Java 客户端Jedis/Lettuce的快速连接示例每一步都配命令行演示和注意事项新手跟着做就能搞定 Redis 入门一、Redis 到底是什么一句话讲透官方定义RedisRemote Dictionary Server远程字典服务是一款开源的、高性能的键值对Key-Value内存数据库支持多种数据结构同时提供持久化机制可将内存中的数据同步到磁盘避免重启后数据丢失。用大白话翻译它是一个“数据库”但和 MySQL 这种存硬盘的关系型数据库不一样Redis 主要存内存所以读写速度极快它存数据的格式是“键值对”比如 keyuser:1001value{name:张三, age:25}类似 Java 里的 Map它不仅能存数据还支持过期时间、原子操作等实用功能而且能通过持久化把数据“备份”到硬盘不怕断电丢数据。补充Redis 是用 C 语言写的诞生于 2009 年现在已经是后端开发的“标配工具”几乎所有大厂阿里、腾讯、字节等都在大规模使用。二、Redis 核心特性为什么大家都在用Redis 能火核心是它的特性完美适配后端高频场景每个特性都对应实际业务需求咱们逐个讲清楚不搞虚的只说“能用来做什么”1. 高性能读写速度快到离谱这是 Redis 最核心的优势官方测试数据读请求GET每秒能处理 11 万 次写请求SET每秒能处理 8 万 次实际生产环境中单机 Redis 支撑每秒几万并发完全没问题。为什么这么快核心原因不用深究原理记住结论即可数据存在内存中避免了硬盘 I/O 的耗时硬盘读写速度比内存慢 1000 倍采用单线程模型避免了多线程上下文切换的开销底层用了高效的 I/O 多路复用机制能同时处理大量网络连接。实用场景高频访问的接口比如商品详情页、用户信息查询用 Redis 做缓存能把接口响应时间从几百毫秒压到几毫秒。2. 支持多种数据结构不止存字符串Redis 不止支持 String字符串这种简单结构还支持 4 种常用复杂结构每种结构都对应特定场景这也是它比 Memcached只能存字符串更强大的原因。5 种核心数据结构及实用场景入门阶段先记这些后续详细讲数据结构核心用途示例场景String字符串存单个值、计数器、验证码手机验证码keycode:138xxxx1234value668899、接口访问计数Hash哈希存对象多字段用户信息keyuser:1001value{name:张三, age:25, gender:男}List列表存有序数据、消息队列用户消息列表、简单的任务队列Set集合存无序去重数据、交集/并集计算用户标签去重、共同好友计算Sorted Set有序集合存有序数据、排行榜商品销量排行榜、用户积分排名3. 持久化内存数据不怕丢虽然 Redis 数据存在内存中但它支持两种持久化机制能把内存数据同步到硬盘重启后自动恢复解决了“内存断电丢数据”的问题RDB快照持久化定期把内存中的所有数据拍成“快照”存到硬盘文件里比如每小时存一次AOF日志持久化把每一条写操作SET、DEL 等记录到日志文件里重启后重新执行日志中的命令恢复数据。实用建议入门阶段不用纠结两者的区别生产环境中一般开启“混合持久化”Redis 4.0 支持兼顾性能和数据安全性后续文章会详细讲配置。4. 其他实用特性入门必知支持键过期时间比如设置验证码 5 分钟后失效EXPIRE 命令完美适配临时数据场景原子性操作所有命令都是原子性的要么执行完要么不执行比如用 INCR 命令做计数器不会出现并发计数错误支持集群/主从复制可以搭建多节点集群实现高可用一台机器挂了另一台顶上和读写分离主节点写从节点读。三、Redis 典型应用场景这些业务场景必用 Redis知道了特性再看实际业务中哪里会用到 Redis新手可以对着场景记特性更容易理解1. 缓存最常用场景核心目的减轻数据库压力提高接口响应速度。流程用户请求接口时先查 Redis如果有数据缓存命中直接返回如果没有缓存未命中再查数据库然后把数据库的结果存到 Redis下次请求直接走缓存。示例电商商品详情页每天几百万访问不可能每次都查 MySQL、用户个人信息查询。2. 分布式锁核心目的解决分布式系统中“并发修改数据”的问题比如多个服务同时扣减库存。原理利用 Redis 的 SETNX 命令key 不存在则设置存在则失败实现“同一时间只有一个服务能获取锁”。示例电商秒杀库存扣减、分布式任务调度避免多个节点重复执行任务。3. 计数器/限流核心目的统计数据或限制接口访问频率。原理用 Redis 的 INCR自增、DECR自减命令实现计数器用 EXPIRE 配合 INCR 实现限流比如 1 分钟内接口最多访问 100 次。示例接口访问次数统计、短信验证码限流同一手机号 1 分钟内最多发 1 条。4. 排行榜/社交场景核心目的实现有序排名或社交关系计算。示例用 Sorted Set 实现商品销量排行榜、用户积分排名用 Set 实现共同好友、用户标签去重。5. 临时数据存储核心目的存储短期有效数据自动过期无需手动清理。示例手机验证码5 分钟过期、用户登录会话2 小时过期替代 Session、购物车未登录用户的购物车数据7 天过期。四、Redis 安装步骤Linux WindowsWSL全教程入门阶段咱们优先安装 Redis 最新稳定版截止 2024 年 10 月稳定版为 7.2.x分别讲解 Linux 原生安装和 Windows 下 WSL 安装Windows 原生版本维护不及时优先推荐 WSL和 Linux 环境完全一致后续开发无坑。注意安装过程中每一步命令都建议截图留存方便后续排查问题前置准备确认环境LinuxCentOS 7/8 或 Ubuntu 20.04推荐 Ubuntu命令更简洁Windows已安装 WSL安装教程微软官方教程简单来说管理员打开 PowerShell输入 wsl --install重启电脑即可网络确保服务器/电脑能访问外网需要下载 Redis 源码包。1. LinuxUbuntu安装步骤推荐全程用命令行操作步骤清晰新手跟着复制命令即可注意命令前带 # 的是注释不用执行步骤 1更新系统软件包避免安装依赖失败# 更新软件包索引 sudo apt update # 升级已安装的软件包可选建议执行 sudo apt upgrade -y执行后等待系统自动更新过程可能需要 1-5 分钟取决于网络速度。步骤 2安装 Redis 依赖gcc 编译器编译 Redis 源码用sudo apt install gcc make -y验证依赖是否安装成功输入 gcc --version能显示版本号比如 gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0即可。步骤 3下载 Redis 源码包并解压# 进入 /usr/local 目录习惯把软件安装在这里 cd /usr/local # 下载 Redis 7.2.4 稳定版官网最新稳定版可替换为最新地址 sudo wget https://download.redis.io/releases/redis-7.2.4.tar.gz # 解压源码包解压后会生成 redis-7.2.4 目录 sudo tar -zxvf redis-7.2.4.tar.gz # 进入解压后的目录 cd redis-7.2.4注意如果 wget 命令提示“找不到”执行 sudo apt install wget -y 安装即可如果下载慢可以直接访问 Redis 官网 下载源码包再上传到 Linux 服务器。步骤 4编译并安装 Redis# 编译源码根据 CPU 核心数自动编译过程 1-3 分钟 sudo make # 安装 Redis将 Redis 命令安装到 /usr/local/bin 目录全局可用 sudo make install验证安装是否成功输入 redis-server --version显示“redis-server 7.2.4”即安装成功。步骤 5修改 Redis 配置文件关键支持远程连接和后台启动Redis 默认配置文件在源码包的根目录redis.conf咱们需要修改 3 个关键配置否则只能本地连接且启动后会占用命令行窗口# 编辑配置文件用 vim 编辑器新手也可以用 nano sudo vim /usr/local/redis-7.2.4/redis.conf打开文件后按键盘“/”键搜索以下配置项修改为对应值修改后按“Esc”输入“:wq”保存退出1. 允许远程连接默认只允许本地 127.0.0.1 连接 搜索 bind 127.0.0.1 -::1把这行注释掉在前面加 #或者改为 bind 0.0.0.0允许所有IP连接2. 关闭保护模式默认开启远程连接会被拒绝 搜索 protected-mode yes改为 protected-mode no3. 开启后台启动默认前台启动关闭命令行窗口则 Redis 停止 搜索 daemonize no改为 daemonize yes。可选配置推荐设置密码防止未授权访问搜索 requirepass foobared改为 requirepass 你的密码比如 requirepass 123456。步骤 6启动 Redis 服务并验证# 启动 Redis指定配置文件启动 redis-server /usr/local/redis-7.2.4/redis.conf # 验证 Redis 是否启动成功查看进程 ps -ef | grep redis如果显示“redis-server *:6379”6379 是 Redis 默认端口说明启动成功。步骤 7连接 Redis 客户端测试基本命令# 连接本地 Redis如果设置了密码连接后需要输入 AUTH 密码 redis-cli # 如果设置了密码输入密码认证 AUTH 123456 # 测试 ping 命令返回 PONG 说明连接正常 ping # 测试 set/get 命令存值并取值 set test_key hello_redis get test_key命令行演示效果建议截图输入 get test_key 后会返回 hello_redis说明 Redis 正常工作。步骤 8设置 Redis 开机自启可选避免重启服务器后手动启动# 1. 创建 Redis 系统服务文件 sudo vim /etc/systemd/system/redis.service # 2. 粘贴以下内容注意修改 ExecStart 和 ExecStop 的路径对应你的配置文件位置 [Unit] DescriptionRedis In-Memory Data Store Afternetwork.target [Service] Userroot Grouproot ExecStart/usr/local/bin/redis-server /usr/local/redis-7.2.4/redis.conf ExecStop/usr/local/bin/redis-cli shutdown Restartalways [Install] WantedBymulti-user.target # 3. 重新加载系统服务 sudo systemctl daemon-reload # 4. 设置开机自启 sudo systemctl enable redis # 5. 验证开机自启是否生效显示 enabled 即生效 sudo systemctl is-enabled redis后续常用命令启动sudo systemctl start redis、停止sudo systemctl stop redis、重启sudo systemctl restart redis。2. WindowsWSL安装步骤如果你的电脑是 Windows 10/11优先用 WSL 安装和 Linux 环境完全一致后续开发、部署无兼容性问题步骤和 Linux 完全相同只是需要先打开 WSL 终端打开 WSL 终端在 Windows 搜索栏输入“WSL”打开 Ubuntu或其他已安装的 Linux 发行版后续步骤从“更新系统软件包”步骤 1到“设置开机自启”步骤 8完全照搬上面的 Linux 安装步骤命令一模一样注意WSL 中的文件路径和 Windows 不同比如 /usr/local 目录对应 Windows 中的 \\wsl$\Ubuntu\usr\local可通过文件资源管理器访问。补充如果不想用 WSL也可以安装 Windows 原生版本不推荐步骤1. 访问 Redis Windows 版本仓库下载最新的 zip 包比如 Redis-x64-3.2.100.zip2. 解压到任意目录比如 D:\Redis3. 打开命令提示符管理员进入解压目录执行 redis-server.exe redis.windows.conf 启动服务4. 另开一个命令提示符进入解压目录执行 redis-cli.exe 连接客户端测试 ping 命令。五、Java 客户端连接示例Jedis Lettuce 快速上手作为 Java 后端开发者咱们最终要通过代码操作 Redis常用的客户端有两个Jedis老牌、简单易用和 Lettuce新一代、线程安全、支持异步下面分别演示“引入依赖 连接 Redis 基本操作”新手直接复制代码即可运行。前置准备确保 Redis 服务已启动且服务器/电脑的防火墙开放 6379 端口Linux 开放端口命令sudo ufw allow 6379。1. 环境准备Maven/Gradle 项目咱们以 Maven 项目为例Gradle 项目类似依赖写法略有不同先创建一个普通的 Maven 项目然后在 pom.xml 中引入客户端依赖。2. Jedis 客户端连接示例简单易用适合入门步骤 1引入 Jedis 依赖!-- pom.xml 中添加依赖最新版本可去 Maven 仓库查询 -- dependency groupIdredis.clients/groupId artifactIdjedis/artifactId version4.5.3/version /dependency提示Jedis 最新版本可在 Maven 仓库 查询。步骤 2编写连接代码含基本操作创建一个 Java 类比如 RedisJedisDemo代码如下注释详细新手可直接复制运行import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class RedisJedisDemo { public static void main(String[] args) { // 1. 配置 Jedis 连接池推荐使用连接池避免频繁创建/关闭连接 JedisPoolConfig poolConfig new JedisPoolConfig(); poolConfig.setMaxTotal(10); // 最大连接数 poolConfig.setMaxIdle(5); // 最大空闲连接数 poolConfig.setMinIdle(2); // 最小空闲连接数 poolConfig.setTestOnBorrow(true); // 从连接池获取连接时测试连接是否可用 // 2. 创建 Jedis 连接池参数连接池配置、Redis 主机地址、端口、密码、超时时间 String redisHost 127.0.0.1; // 本地连接填 127.0.0.1远程连接填服务器 IP int redisPort 6379; // Redis 默认端口 String redisPassword 123456;// 你设置的 Redis 密码如果没设置可不传 int timeout 3000; // 连接超时时间毫秒 JedisPool jedisPool new JedisPool(poolConfig, redisHost, redisPort, timeout, redisPassword); // 3. 从连接池获取连接执行 Redis 命令 try (Jedis jedis jedisPool.getResource()) { // 测试连接是否正常 String pingResult jedis.ping(); System.out.println(连接 Redis 成功ping 结果 pingResult); // 预期输出 PONG // --------------- 基本操作演示 --------------- // 1. String 类型存值 取值 jedis.set(user:name, 张三); // 存值 String userName jedis.get(user:name); // 取值 System.out.println(获取 user:name 的值 userName); // 预期输出 张三 // 2. String 类型设置过期时间5 分钟过期 jedis.setex(code:138xxxx1234, 300, 668899); // key验证码手机号过期时间 300 秒value验证码 String code jedis.get(code:138xxxx1234); System.out.println(获取验证码 code); // 预期输出 668899 // 3. Hash 类型存用户信息多字段 jedis.hset(user:1001, name, 李四); jedis.hset(user:1001, age, 28); jedis.hset(user:1001, gender, 男); // 获取用户所有信息 String userInfo jedis.hgetAll(user:1001).toString(); System.out.println(获取 user:1001 的信息 userInfo); // 预期输出 {name李四, age28, gender男} // 4. 计数器自增比如接口访问计数 jedis.incr(api:visit:count); // 自增 1 jedis.incrBy(api:visit:count, 5); // 自增 5 String visitCount jedis.get(api:visit:count); System.out.println(接口访问次数 visitCount); // 预期输出 6 } catch (Exception e) { e.printStackTrace(); System.out.println(连接 Redis 失败或执行命令出错); } finally { // 关闭连接池实际项目中连接池应全局单例无需每次关闭 jedisPool.close(); } } }步骤 3运行代码验证结果运行 main 方法如果控制台输出以下内容说明连接成功且命令执行正常连接 Redis 成功ping 结果PONG 获取 user:name 的值张三 获取验证码668899 获取 user:1001 的信息{name李四, age28, gender男} 接口访问次数6注意事项如果连接失败检查 3 点Redis 服务是否启动、Redis 配置是否允许远程连接、防火墙是否开放 6379 端口Jedis 是线程不安全的所以必须用连接池JedisPool避免多线程环境下出现问题实际项目中连接池应配置为全局单例比如用 Spring 管理无需每次使用都创建连接池。3. Lettuce 客户端连接示例线程安全适合高并发Lettuce 是 Spring Boot 2.x 之后默认的 Redis 客户端基于 Netty 实现线程安全支持异步操作适合高并发场景下面演示基本用法步骤 1引入 Lettuce 依赖!-- pom.xml 中添加依赖最新版本可去 Maven 仓库查询 -- dependency groupIdio.lettuce/groupId artifactIdlettuce-core/artifactId version6.3.0/version /dependency !-- 可选如果需要 JSON 序列化引入 Jackson 依赖 -- dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-databind/artifactId version2.15.2/version /dependency步骤 2编写连接代码含基本操作import io.lettuce.core.RedisClient; import io.lettuce.core.RedisURI; import io.lettuce.core.api.StatefulRedisConnection; import io.lettuce.core.api.sync.RedisCommands; import java.time.Duration; public class RedisLettuceDemo { public static void main(String[] args) { // 1. 构建 Redis 连接地址RedisURI 封装了主机、端口、密码、超时时间等信息 RedisURI redisURI RedisURI.builder() .withHost(127.0.0.1) // Redis 主机地址 .withPort(6379) // Redis 端口 .withPassword(123456)// Redis 密码如果没设置可不加 .withTimeout(Duration.ofMillis(3000)) // 连接超时时间 .build(); // 2. 创建 RedisClient客户端实例全局单例即可 RedisClient redisClient RedisClient.create(redisURI); // 3. 创建有状态连接StatefulRedisConnection线程安全可复用 try (StatefulRedisConnectionString, String connection redisClient.connect()) { // 4. 获取同步命令执行器也可获取异步命令执行器connection.async() RedisCommandsString, String commands connection.sync(); // 测试连接 String pingResult commands.ping(); System.out.println(连接 Redis 成功ping 结果 pingResult); // 预期输出 PONG // --------------- 基本操作演示 --------------- // 1. String 类型存值 取值 commands.set(product:name, iPhone 15); String productName commands.get(product:name); System.out.println(获取 product:name 的值 productName); // 预期输出 iPhone 15 // 2. Hash 类型存商品信息 commands.hset(product:1001, name, 华为 Mate 60); commands.hset(product:1001, price, 5999); commands.hset(product:1001, stock, 1000); String productInfo commands.hgetAll(product:1001).toString(); System.out.println(获取 product:1001 的信息 productInfo); // 预期输出 {name华为 Mate 60, price5999, stock1000} // 3. 计数器自减比如库存扣减 commands.decr(product:1001:stock); // 自减 1 commands.decrBy(product:1001:stock, 10); // 自减 10 String stock commands.get(product:1001:stock); System.out.println(商品剩余库存 stock); // 预期输出 989 // 4. 设置过期时间 commands.expire(product:1001, 86400); // 商品信息 24 小时过期86400 秒 } catch (Exception e) { e.printStackTrace(); System.out.println(连接 Redis 失败或执行命令出错); } finally { // 关闭客户端实际项目中客户端应全局单例无需每次关闭 redisClient.shutdown(); } } }步骤 3运行代码验证结果运行 main 方法控制台输出以下内容即成功连接 Redis 成功ping 结果PONG 获取 product:name 的值iPhone 15 获取 product:1001 的信息{name华为 Mate 60, price5999, stock1000} 商品剩余库存989Lettuce 核心优势线程安全一个连接可被多个线程共享无需连接池也可配置连接池优化性能支持异步/响应式操作适合高并发场景比如用 async() 方法获取异步命令执行器非阻塞执行命令兼容 Redis 所有特性支持集群、哨兵、持久化等高级功能。六、常见问题排查新手必看入门阶段安装和连接过程中容易遇到以下问题提前整理解决方案避免踩坑1. 安装 Redis 时make 命令报错“cc: command not found”原因没有安装 gcc 编译器执行 sudo apt install gcc make -yUbuntu或 sudo yum install gcc make -yCentOS即可。2. 连接 Redis 时提示“Could not connect to Redis at 127.0.0.1:6379: Connection refused”原因Redis 服务未启动或配置文件中 bind 地址错误解决方案1. 检查 Redis 服务是否启动ps -ef | grep redis2. 重新启动 Redisredis-server /usr/local/redis-7.2.4/redis.conf3. 检查配置文件中 bind 是否改为 0.0.0.0protected-mode 是否为 no。3. Java 客户端连接远程 Redis 时连接失败原因远程服务器防火墙未开放 6379 端口或 Redis 配置不允许远程连接解决方案1. 开放 Linux 防火墙 6379 端口sudo ufw allow 6379Ubuntu或 sudo firewall-cmd --permanent --add-port6379/tcpCentOS2. 确认 Redis 配置文件中 bind 为 0.0.0.0protected-mode 为 no3. 测试远程连接在本地电脑执行 telnet 服务器IP 6379能连接则说明端口开放。4. 执行 Redis 命令时提示“NOAUTH Authentication required”原因Redis 设置了密码连接后未认证解决方案1. 命令行连接输入 AUTH 你的密码比如 AUTH 1234562. Java 客户端连接在创建连接时传入密码如 JedisPool 构造函数、RedisURI 构建时传入密码。七、总结这篇文章从 Redis 的基础定义、核心特性、典型应用场景到 Linux/WindowsWSL的完整安装步骤再到 Java 客户端Jedis/Lettuce的连接和基本操作全程围绕“实用”展开避开了复杂的底层原理新手跟着步骤做就能快速上手 Redis。后续系列文章我们会逐步深入 Redis 的核心知识点5 种数据结构的详细用法、持久化配置、缓存三大问题穿透/击穿/雪崩、分布式锁实现等欢迎持续关注最后如果你在安装或使用过程中遇到问题欢迎在评论区留言我会第一时间回复关注【予枫】获取更多技术干货身份一名热爱技术的研二学生️标签Java / 算法 / 个人成长Slogan只写对自己和他人有用的文字。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询