最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Redis入门指南:Redis安装启动步骤详解与命令及Java客户端解析
时间:2026-05-29 18:00:01 编辑:袖梨 来源:一聚教程网
在高并发系统开发领域,Redis凭借其卓越性能已成为关键组件。本文将系统讲解Redis基础概念、Linux环境安装指南及常用命令实战,帮助开发者快速掌握核心技能。
1.初识Redis
1.1NoSQL
| SQL | NoSQL | |
|---|---|---|
| 数据结构 | 结构化 | 非结构化 |
| 数据关联 | 关联的 | 无关联的 |
| 查询方法 | SQL查询 | 非SQL |
| 事务特性 | ACID | BASE |
| 存储方式 | 磁盘 | 内存 |
| 扩展性 | 垂直 | 水平 |
| 使用场景 | 数据结构固定、相关业务对数据安全性一致性要求高 | 数据结构不固定、对数据安全性一致性要求不高、对性能要求高 |
NoSQL的数据结构:
- 键值结构(Redis)
- 文档类型(MongoDB)
- 列类型(HBase)
- Graph类型(Neo4j)
1.2Redis
远程词典服务器,基于内存的键值型NoSQL数据库
特征:
- 键值型,value支持多种不同数据结构,功能丰富
- 单线程,每个命令具备原子性
- 低延迟,速度快(基于内存、IO多路复用、良好的编码)
- 支持数据持久化
- 支持主从集群、分片集群
- 支持多语言客户端
1)安装Redis
官网:Redis - The Real-time Data Platform
打开虚拟机终端环境(示例使用VMware+Finalshell组合)
切换root权限:执行
su -命令后输入密码安装必要依赖:
yum install -y gcc tcl
上传并解压安装包
将Redis安装包放置于
/usr/local/src目录进入目标目录:
cd /usr/local/src/
执行解压命令:
tar -zxvf redis-6.2.6.tar.gz
进入解压目录:
cd redis-6.2.6
运行编译安装:
make && make install

出现成功提示即表示安装完成
默认安装路径为
/usr/local/bin
reids-cli:redis命令行客户端工具
redis-server:服务端启动脚本
redis-sentinel:哨兵启动脚本
哨兵机制主要功能:
- 监控主节点状态
- 自动执行故障转移
- 选举新主节点
2)启动Redis
Redis支持三种启动方式:
- 默认启动
- 指定配置启动
- 开机自启
一.默认启动
安装完成后直接执行:
redis-server
即可启动服务

此方式为前台启动,会阻塞当前会话窗口,关闭窗口或按Ctrl + C将停止服务
二.指定配置启动
要实现后台运行,需修改Redis配置文件/usr/local/src/redis-6,2,6/redis.conf
进入目录备份配置:
cd /usr/local/src/redis-6.2.6/
执行备份:
cp redis.conf redis.conf.bck
编辑配置文件:
vi redis.conf
核心配置项

其他配置

快速定位技巧:
输入
/关键词回车进行搜索n键跳转下一个匹配项,N键返回上一个
修改配置步骤:
- 按
i进入编辑模式(显示-- INSERT --提示) - 修改完成后按
Esc退出编辑
1.修改bind配置

2.修改daemonize配置

3.添加密码配置

4.配置日志路径

保存配置
输入保存命令:
:wq
指定配置启动命令:
redis-server redis.conf
注意:在redis安装目录下可省略配置文件路径

验证服务状态:
ps -ef|grep redis
终止进程命令:
kill -9 进程PID
或使用专用命令:
redis-cli -a 密码 shutdown
三.开机自启
创建系统服务文件:
vi /etc/systemd/system/redis.service
写入以下内容:
[Unit] Description=redis-server After=network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
重载系统服务配置:
systemctl daemon-reload
服务管理命令:
# 启动 systemctl start redis # 停止 systemctl stop redis # 重启 systemctl restart redis # 查看状态 systemctl status redis
设置开机自启:
systemctl enable redis
3)Redis客户端
Redis操作需通过客户端工具实现,主要分为三类:
- 命令行客户端
- 图形化客户端
- 编程客户端
命令行客户端使用方式:
redis-cli [options] [commonds]
常用参数说明:
-h 127.0.0.1:指定连接IP地址,默认本地-p 6379:指定连接端口,默认6379-a 123456:指定认证密码也可连接后输入密码:
AUTH 密码
常用命令示例:
ping:检测服务状态,正常返回PONG
不指定命令将进入交互模式
图形客户端配置
以Another Redis为例:
1.开放防火墙端口
检查防火墙状态:
systemctl status firewalld
开放6379端口:
firewall-cmd --permanent --add-port=6379/tcp firewall-cmd --reload
参数说明:
--permanent:永久生效--reload:重载配置
2.配置连接参数
Host: 虚拟机IP
Port: 6379
Password: 配置文件中设置的密码
2.Redis命令
2.1数据结构介绍
Redis采用key-value存储模型,其中value支持多种数据结构:

2.2通用命令
KEYS:模糊查询keyDEL:删除指定keyEXISTS:检查key是否存在EXPIRE:设置key有效期TTL:查看key剩余有效期
使用help [command]可查看命令详情

2.3String类型
字符串类型分为三类:
- 普通字符串
- 整型(支持自增操作)
- 浮点型(支持自增操作)
底层均采用字节数组存储,编码方式不同。最大容量限制为512MB
常用命令:
- SET:设置键值对
- GET:获取键值
- MSET:批量设置
- MGET:批量获取
- INCR:整型自增
- INCRBY:指定步长自增
- INCRBYFLOAT:浮点型自增
- SETNX:不存在时设置
- SETEX:设置带有效期键值
2.4key的层级格式
Redis支持多级key命名,使用:分隔,例如:
项目名:业务名:类型:id
2.5Hash
Hash结构支持字段级操作,适合存储对象

常用命令:
- HSET:设置字段值
- HGET:获取字段值
- HMSET:批量设置字段
- HMGET:批量获取字段
- HGETALL:获取所有字段
- HKEYS:获取所有字段名
- HVALS:获取所有字段值
- HINCRBY:字段自增
- HSETNX:不存在时设置字段
2.6List类型
双向链表结构,支持正向和反向检索
特性:
- 元素有序
- 允许重复
- 高效插入删除
- 查询效率一般
常用命令:
- LPUSH:左侧插入元素
- LPOP:左侧弹出元素
- RPUSH:右侧插入元素
- RPOP:右侧弹出元素
- LRANGE:范围查询
- BLPOP/BRPOP:阻塞式弹出
注意:Redis中
nil表示空值
2.7Set类型
无序集合,类似Java的HashSet
特性:
- 元素无序
- 不允许重复
- 高效查找
- 支持集合运算
常用命令:
- SADD:添加元素
- SREM:移除元素
- SCARD:获取元素数量
- SISMEMBER:判断元素存在
- SMEMBERS:获取所有元素
- SINTER:求交集
- SDIFF:求差集
- SUNION:求并集
2.8SortedSet类型
带排序功能的集合,每个元素关联score用于排序,底层采用跳表+哈希表实现
特性:
- 元素按score排序
- 元素唯一
- 高效查询
(常用于实现排行榜功能)
常用命令:
- ZADD:添加元素
- ZREM:删除元素
- ZSCORE:获取元素score
- ZRANK:获取元素排名
- ZCARD:获取元素数量
- ZCOUNT:统计score范围元素
- ZINCRBY:增加元素score
- ZRANGE:按排名查询
- ZRANGEBYSCORE:按score查询
- ZDIFF/ZINTER/ZUNION:集合运算
3.Redis的Java客户端
官方提供多语言客户端支持:https://redis.io/clients/

3.1Jedis快速入门
官方Java客户端地址:redis/jedis: Redis Java client
开发步骤:
添加依赖
redis.clients jedis 7.1.0 建立连接
private Jedis jedis; @BeforeEach void setUp(){ //1.建立连接 jedis = new Jedis("192.168.227.128",6379); //2.设置密码 jedis.auth("123456"); //3.选择库 jedis.select(0); }测试操作
@Test public void testJedis(){ //存入数据 String result = jedis.set("name", "张三"); System.out.println("result = " + result); //获取数据 String name = jedis.get("name"); System.out.println("name = " + name); }释放资源
@AfterEach void tearDown(){ if(jedis != null){ jedis.close(); } }注意:判空操作避免空指针异常
3.2Jedis连接池
Jedis线程不安全且频繁创建销毁影响性能,推荐使用连接池
线程不安全原因:
每个Jedis实例对应独立TCP连接,多线程共享会导致并发问题
连接池配置示例:
public class JedisConnectionFactory {
private static JedisPool jedisPool;
static{
//配置连接池
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(8);//最大连接数
poolConfig.setMaxIdle(8);//最大空闲连接
poolConfig.setMinIdle(0);//最小空闲连接
poolConfig.setMaxWaitMillis(10000);//最大等待时间
//创建连接池对象
jedisPool = new JedisPool(poolConfig,"192.168.227.128",6379,1000,"123456");
}
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
public class JedisTest {
private Jedis jedis;
@BeforeEach
void setUp(){
//1.建立连接
jedis = JedisConnectionFactory.getJedis();
//2.选择库
jedis.select(0);
}
@Test
public void testJedis(){
//存入数据
String result = jedis.set("name", "张三");
System.out.println("result = " + result);
//获取数据
String name = jedis.get("name");
System.out.println("name = " + name);
}
@AfterEach
void tearDown(){
if(jedis != null){
jedis.close();//归还连接
}
}
}
3.3SpringDateRedis
Spring对Redis的集成模块,官网:https://spring.io/projects/spring-data-redis
主要特性:
- 支持多种客户端(Lettuce/Jedis)
- 提供统一API(RedisTemplate)
- 支持发布订阅模式
- 支持集群和哨兵
- 支持响应式编程
- 多种序列化方案
- 实现JDK集合接口

3.4RedisTemplate入门
开发步骤:
添加SpringBoot依赖
配置application.yml
spring: data: redis: host: 192.168.227.128 port: 6379 password: 123456 lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: 100ms注意新版配置层级
注入RedisTemplate
@Autowired private RedisTemplate redisTemplate;编写测试用例
@SpringBootTest class RedisDemoApplicationTests { @Autowired private RedisTemplate redisTemplate; @Test void testString() { //写入一条String数据 redisTemplate.opsForValue().set("name", "zs"); //获取String数据 System.out.println(redisTemplate.opsForValue().get("name")); } }
3.5RedisSerializer
RedisTemplate默认使用JDK序列化,会产生可读性差的问题
序列化过程:
Java对象 → 序列化 → byte[] → 发送给Redis

默认采用JDK序列化原因:
考虑通用性,支持直接存储Java对象
自定义序列化配置:
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
//创建RedisTemplate对象
RedisTemplate template = new RedisTemplate<>();
//设置连接工厂
template.setConnectionFactory(redisConnectionFactory);
//创建json序列化工具
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
//设置key的序列化
template.setKeySerializer(RedisSerializer.string());
template.setHashKeySerializer(RedisSerializer.string());
//设置value的序列化
template.setValueSerializer(jsonRedisSerializer);
template.setHashValueSerializer(jsonRedisSerializer);
//返回
return template;
}
}
3.6StringRedisTemplate

Spring提供的专用模板类,默认采用String序列化,需手动处理对象序列化
使用示例:
@SpringBootTest
class RedisDemoApplicationTests {
@Autowired
private StringRedisTemplate stringRedisTemplate;
private static final ObjectMapper mapper = new ObjectMapper();
@Test
void testString() {
//写入一条String数据
stringRedisTemplate.opsForValue().set("name", "zs");
//获取String数据
System.out.println(stringRedisTemplate.opsForValue().get("name"));
}
@Test
public void testSaveUser() {
//创建对象
User user = new User("张三", 20);
//手动序列化
String json = mapper.writeValueAsString(user);
//写入数据
stringRedisTemplate.opsForValue().set("user:100",json);
//获取数据
String jsonUser = stringRedisTemplate.opsForValue().get("user:100");
//手动反序列化
User user1 = mapper.readValue(jsonUser, User.class);
System.out.println("user1 = " + user1);
}
}
ObjectMapper是Jackson库提供的对象-JSON转换工具

3.7RedisTemplate操作Hash类型
@Test
public void testHash(){
stringRedisTemplate.opsForHash().put("user:400","name","李四");
stringRedisTemplate.opsForHash().put("user:400","age","20");
Map
本文系统讲解了Redis核心概念、安装配置及常用操作,通过实际案例演示了Java客户端的集成方法,为开发者构建高性能应用提供了实用指导。