简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

站内搜索

搜索

活动公告

11-02 12:46
10-23 09:32
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31
10-23 09:28
通知:签到时间调整为每日4:00(东八区)
10-23 09:26

Ubuntu系统Redis安装从零开始 一学就会的实战教程

3万

主题

317

科技点

3万

积分

大区版主

木柜子打湿

积分
31893

财Doro三倍冰淇淋无人之境【一阶】立华奏小樱(小丑装)⑨的冰沙以外的星空【二阶】

发表于 2025-8-25 00:40:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. Redis简介

Redis(Remote Dictionary Server)是一个开源的、基于内存的、高性能的键值对存储数据库。它通常被用作数据库、缓存、消息代理和队列。Redis支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等,同时还提供了数据持久化、复制、高可用和集群等功能。

Redis的主要特点包括:

• 极高的性能:所有操作都在内存中完成,读写速度非常快
• 丰富的数据类型:支持多种数据结构,满足不同场景需求
• 原子性操作:所有操作都是原子性的
• 持久化:支持将数据保存到磁盘
• 多功能:可用于缓存、消息队列、分布式锁等多种场景

2. 系统要求与准备工作

在开始安装Redis之前,我们需要确保系统满足基本要求并完成一些准备工作。

2.1 系统要求

• Ubuntu操作系统(本教程以Ubuntu 20.04/22.04为例)
• 具有sudo权限的用户账户
• 至少512MB的RAM(推荐2GB以上)
• 至少1GB的可用磁盘空间

2.2 准备工作

首先,我们需要更新系统软件包列表和已安装的软件包。打开终端,执行以下命令:
  1. sudo apt update
  2. sudo apt upgrade -y
复制代码

接下来,安装一些必要的工具和依赖项:
  1. sudo apt install -y build-essential tcl
复制代码

build-essential包包含了编译软件所需的基本工具,如gcc、g++和make等。tcl是用于测试Redis的工具。

3. 安装Redis

在Ubuntu上安装Redis有多种方式,包括使用APT包管理器安装、从源代码编译安装等。下面我们将分别介绍这些方法。

3.1 使用APT包管理器安装(推荐)

这是最简单、最快捷的安装方式,适合大多数用户。

首先,安装Redis服务器:
  1. sudo apt install -y redis-server
复制代码

安装完成后,Redis服务会自动启动。我们可以使用以下命令检查Redis服务的状态:
  1. sudo systemctl status redis
复制代码

如果Redis正在运行,你将看到类似以下的输出:
  1. ● redis-server.service - Advanced key-value store
  2.      Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
  3.      Active: active (running) since ...
  4.    Main PID: 12345 (redis-server)
  5.      Status: "Ready to accept connections"
  6.       Tasks: 5 (limit: 1137)
  7.      Memory: 2.1M
  8.      CGroup: /system.slice/redis-server.service
  9.              └─12345 /usr/bin/redis-server 127.0.0.1:6379
复制代码

3.2 从源代码编译安装

从源代码编译安装可以获取最新版本的Redis,并且可以根据需要自定义编译选项。

首先,访问Redis官方网站(https://redis.io/download)获取最新版本的下载链接。或者,使用wget命令直接下载:
  1. cd /tmp
  2. wget https://download.redis.io/redis-stable.tar.gz
复制代码

解压下载的文件:
  1. tar -xzf redis-stable.tar.gz
  2. cd redis-stable
复制代码

编译Redis:
  1. make
复制代码

编译完成后,运行测试以确保一切正常:
  1. make test
复制代码

测试通过后,安装Redis到系统中:
  1. sudo make install
复制代码

这会将Redis的可执行文件安装到/usr/local/bin目录下。

创建Redis配置目录和配置文件:
  1. sudo mkdir /etc/redis
  2. sudo cp redis.conf /etc/redis/
复制代码

编辑Redis配置文件:
  1. sudo nano /etc/redis/redis.conf
复制代码

在配置文件中,找到以下行并进行修改:
  1. # 设置Redis以后台守护进程方式运行
  2. daemonize yes
  3. # 设置PID文件位置
  4. pidfile /var/run/redis_6379.pid
  5. # 设置日志文件位置
  6. logfile /var/log/redis_6379.log
  7. # 设置工作目录
  8. dir /var/lib/redis/6379
复制代码

保存并关闭文件。
  1. sudo mkdir -p /var/lib/redis/6379
  2. sudo chown redis:redis /var/lib/redis/6379
  3. sudo chmod 770 /var/lib/redis/6379
复制代码

创建Redis的systemd服务文件:
  1. sudo nano /etc/systemd/system/redis.service
复制代码

在文件中添加以下内容:
  1. [Unit]
  2. Description=Redis In-Memory Data Store
  3. After=network.target
  4. [Service]
  5. User=redis
  6. Group=redis
  7. ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
  8. ExecStop=/usr/local/bin/redis-cli shutdown
  9. Restart=always
  10. [Install]
  11. WantedBy=multi-user.target
复制代码

保存并关闭文件。

创建一个系统用户来运行Redis服务:
  1. sudo adduser --system --group --no-create-home redis
复制代码

重新加载systemd配置:
  1. sudo systemctl daemon-reload
复制代码

启动Redis服务:
  1. sudo systemctl start redis
复制代码

设置Redis服务开机自启:
  1. sudo systemctl enable redis
复制代码

检查Redis服务状态:
  1. sudo systemctl status redis
复制代码

4. Redis基本配置

无论使用哪种安装方式,我们通常都需要对Redis进行一些基本配置。Redis的配置文件通常位于/etc/redis/redis.conf(APT安装)或/etc/redis/redis.conf(源代码安装)。

4.1 编辑配置文件

使用文本编辑器打开Redis配置文件:
  1. sudo nano /etc/redis/redis.conf
复制代码

4.2 常用配置项

以下是一些常用的Redis配置项及其说明:

默认情况下,Redis只绑定到本地回环地址(127.0.0.1),这意味着只有本地服务器可以访问Redis。如果你需要从其他服务器访问Redis,可以修改bind配置:
  1. # 绑定到所有网络接口
  2. bind 0.0.0.0
  3. # 或者绑定到特定IP
  4. bind 192.168.1.100
复制代码

注意:将Redis绑定到所有网络接口可能会带来安全风险,确保你已经设置了适当的访问控制和认证。

Redis默认使用6379端口。如果需要更改端口,可以修改port配置:
  1. port 6380
复制代码

为了提高安全性,可以设置密码认证:
  1. requirepass your_strong_password
复制代码

将your_strong_password替换为你自己的强密码。

Redis提供了两种持久化方式:RDB(快照)和AOF(追加文件)。

RDB配置:
  1. save 900 1      # 900秒内至少有1个key发生变化时保存
  2. save 300 10     # 300秒内至少有10个key发生变化时保存
  3. save 60 10000   # 60秒内至少有10000个key发生变化时保存
  4. # RDB文件名
  5. dbfilename dump.rdb
  6. # RDB文件保存路径
  7. dir /var/lib/redis
复制代码

AOF配置:
  1. # 开启AOF持久化
  2. appendonly yes
  3. # AOF文件名
  4. appendfilename "appendonly.aof"
  5. # AOF同步策略
  6. # always: 每个写操作都同步
  7. # everysec: 每秒同步一次
  8. # no: 由操作系统决定何时同步
  9. appendfsync everysec
复制代码
  1. # 设置最大内存限制(例如1GB)
  2. maxmemory 1gb
  3. # 内存达到上限时的处理策略
  4. # volatile-lru: 在设置了过期时间的key中使用LRU算法删除
  5. # allkeys-lru: 在所有key中使用LRU算法删除
  6. # volatile-lfu: 在设置了过期时间的key中使用LFU算法删除
  7. # allkeys-lfu: 在所有key中使用LFU算法删除
  8. # volatile-random: 在设置了过期时间的key中随机删除
  9. # allkeys-random: 在所有key中随机删除
  10. # volatile-ttl: 删除即将过期的key
  11. # noeviction: 不删除,返回错误
  12. maxmemory-policy allkeys-lru
复制代码

4.3 应用配置更改

修改配置文件后,需要重启Redis服务以使更改生效:
  1. sudo systemctl restart redis
复制代码

5. Redis基本操作与测试

5.1 连接到Redis服务器

使用Redis命令行工具连接到Redis服务器:
  1. redis-cli
复制代码

如果设置了密码,需要使用以下命令连接:
  1. redis-cli -a your_password
复制代码

或者先连接,再认证:
  1. redis-cli
  2. AUTH your_password
复制代码

5.2 基本命令示例

连接到Redis后,可以尝试一些基本命令:
  1. # 设置键值对
  2. SET name "Redis"
  3. # 获取键值
  4. GET name
  5. # 设置带过期时间的键值(10秒后过期)
  6. SETEX temp_key 10 "This will expire in 10 seconds"
  7. # 获取键的剩余生存时间(TTL)
  8. TTL temp_key
  9. # 删除键
  10. DEL temp_key
复制代码
  1. # 从左侧推入元素
  2. LPUSH my_list "item1"
  3. LPUSH my_list "item2"
  4. LPUSH my_list "item3"
  5. # 获取列表长度
  6. LLEN my_list
  7. # 获取列表范围内的元素
  8. LRANGE my_list 0 -1
  9. # 从右侧弹出元素
  10. RPOP my_list
复制代码
  1. # 设置哈希字段
  2. HSET user:1001 username "john"
  3. HSET user:1001 email "john@example.com"
  4. HSET user:1001 age 30
  5. # 获取单个字段值
  6. HGET user:1001 username
  7. # 获取所有字段和值
  8. HGETALL user:1001
  9. # 获取所有字段名
  10. HKEYS user:1001
  11. # 获取所有字段值
  12. HVALS user:1001
复制代码
  1. # 添加元素到集合
  2. SADD my_set "apple"
  3. SADD my_set "banana"
  4. SADD my_set "orange"
  5. # 获取集合所有元素
  6. SMEMBERS my_set
  7. # 检查元素是否在集合中
  8. SISMEMBER my_set "apple"
  9. # 从集合中移除元素
  10. SREM my_set "banana"
复制代码
  1. # 添加元素到有序集合
  2. ZADD my_zset 1 "one"
  3. ZADD my_zset 2 "two"
  4. ZADD my_zset 3 "three"
  5. # 获取有序集合范围内的元素
  6. ZRANGE my_zset 0 -1
  7. # 获取带分数的有序集合范围内的元素
  8. ZRANGE my_zset 0 -1 WITHSCORES
  9. # 获取元素的排名
  10. ZRANK my_zset "two"
  11. # 获取元素的分数
  12. ZSCORE my_zset "two"
复制代码

5.3 性能测试

Redis提供了一个内置的基准测试工具redis-benchmark,可以用来测试Redis的性能。
  1. # 基本测试
  2. redis-benchmark
  3. # 测试特定命令
  4. redis-benchmark -t set,get -n 100000 -c 50
  5. # 测试使用管道
  6. redis-benchmark -n 100000 -P 16
复制代码

5.4 退出Redis命令行

完成测试后,可以使用以下命令退出Redis命令行:
  1. QUIT
复制代码

或者直接按Ctrl+C。

6. 设置Redis为系统服务

如果你是通过源代码安装的Redis,并且按照前面的步骤创建了systemd服务文件,那么Redis已经被设置为系统服务。如果你是通过APT安装的,Redis服务也已经自动配置好了。

6.1 管理Redis服务

以下是一些常用的Redis服务管理命令:
  1. # 启动Redis服务
  2. sudo systemctl start redis
  3. # 停止Redis服务
  4. sudo systemctl stop redis
  5. # 重启Redis服务
  6. sudo systemctl restart redis
  7. # 重新加载Redis配置
  8. sudo systemctl reload redis
  9. # 查看Redis服务状态
  10. sudo systemctl status redis
  11. # 设置Redis服务开机自启
  12. sudo systemctl enable redis
  13. # 禁止Redis服务开机自启
  14. sudo systemctl disable redis
复制代码

6.2 查看Redis日志

Redis的日志通常位于/var/log/redis/redis-server.log(APT安装)或/var/log/redis_6379.log(源代码安装)。你可以使用以下命令查看日志:
  1. sudo tail -f /var/log/redis/redis-server.log
复制代码

或者:
  1. sudo journalctl -u redis -f
复制代码

7. Redis安全配置

Redis默认情况下没有启用身份验证,这意味着任何能够访问Redis服务器的用户都可以操作数据。为了提高安全性,我们应该采取一些安全措施。

7.1 启用密码认证

编辑Redis配置文件:
  1. sudo nano /etc/redis/redis.conf
复制代码

找到并取消注释requirepass行,并设置一个强密码:
  1. requirepass your_strong_password
复制代码

保存并关闭文件,然后重启Redis服务:
  1. sudo systemctl restart redis
复制代码

7.2 重命名危险命令

为了进一步提高安全性,可以重命名或禁用一些危险的Redis命令,如FLUSHDB、FLUSHALL、KEYS等。

编辑Redis配置文件:
  1. sudo nano /etc/redis/redis.conf
复制代码

添加以下行来重命名命令:
  1. rename-command FLUSHDB ""
  2. rename-command FLUSHALL ""
  3. rename-command KEYS ""
  4. rename-command CONFIG ""
复制代码

上面的配置将禁用这些命令。如果你想重命名而不是禁用,可以这样做:
  1. rename-command FLUSHDB "ADMIN_FLUSHDB"
  2. rename-command FLUSHALL "ADMIN_FLUSHALL"
  3. rename-command KEYS "ADMIN_KEYS"
  4. rename-command CONFIG "ADMIN_CONFIG"
复制代码

保存并关闭文件,然后重启Redis服务:
  1. sudo systemctl restart redis
复制代码

7.3 绑定到特定IP

默认情况下,Redis绑定到127.0.0.1,这意味着只有本地服务器可以访问Redis。如果你需要从其他服务器访问Redis,应该绑定到特定的IP地址,而不是所有接口。

编辑Redis配置文件:
  1. sudo nano /etc/redis/redis.conf
复制代码

修改bind配置:
  1. bind 192.168.1.100
复制代码

将192.168.1.100替换为你服务器的实际IP地址。

保存并关闭文件,然后重启Redis服务:
  1. sudo systemctl restart redis
复制代码

7.4 使用防火墙限制访问

使用UFW(Uncomplicated Firewall)限制对Redis端口的访问:
  1. # 启用UFW
  2. sudo ufw enable
  3. # 允许从特定IP访问Redis端口
  4. sudo ufw allow from 192.168.1.50 to any port 6379
  5. # 或者允许从特定子网访问Redis端口
  6. sudo ufw allow from 192.168.1.0/24 to any port 6379
复制代码

7.5 以非特权用户运行Redis

确保Redis以非特权用户运行。如果你是通过APT安装的,Redis默认会以redis用户运行。如果你是通过源代码安装的,并且按照前面的步骤创建了redis用户,那么Redis也会以非特权用户运行。

你可以使用以下命令检查Redis运行的用户:
  1. ps aux | grep redis-server
复制代码

输出应该显示Redis服务器以redis用户运行。

8. 常见问题与解决方案

8.1 Redis无法启动

问题:Redis服务无法启动,查看日志显示错误信息。

解决方案:

1. 检查Redis配置文件是否有语法错误:sudo redis-server /etc/redis/redis.conf --test-memory
2. 检查Redis数据目录的权限:sudo ls -la /var/lib/redis确保Redis用户有读写权限。
3. 检查端口是否被占用:sudo netstat -tlnp | grep 6379如果端口被占用,可以更改Redis配置文件中的端口设置,或者停止占用端口的程序。
4. 查看详细的错误日志:sudo journalctl -u redis -n 100
  1. sudo redis-server /etc/redis/redis.conf --test-memory
复制代码
  1. sudo ls -la /var/lib/redis
复制代码
  1. sudo netstat -tlnp | grep 6379
复制代码
  1. sudo journalctl -u redis -n 100
复制代码

8.2 内存不足错误

问题:Redis操作时出现内存不足错误。

解决方案:

1. 检查Redis的内存使用情况:redis-cli INFO memory
2. 调整Redis的最大内存限制:
编辑Redis配置文件:sudo nano /etc/redis/redis.conf修改maxmemory设置:maxmemory 512mb保存并关闭文件,然后重启Redis服务:sudo systemctl restart redis
3. 设置适当的内存淘汰策略:
编辑Redis配置文件:sudo nano /etc/redis/redis.conf修改maxmemory-policy设置:maxmemory-policy allkeys-lru保存并关闭文件,然后重启Redis服务:sudo systemctl restart redis
  1. redis-cli INFO memory
复制代码
  1. sudo nano /etc/redis/redis.conf
复制代码
  1. maxmemory 512mb
复制代码
  1. sudo systemctl restart redis
复制代码
  1. sudo nano /etc/redis/redis.conf
复制代码
  1. maxmemory-policy allkeys-lru
复制代码
  1. sudo systemctl restart redis
复制代码

8.3 连接被拒绝

问题:尝试连接Redis时出现”Connection refused”错误。

解决方案:

1. 检查Redis服务是否正在运行:sudo systemctl status redis如果没有运行,启动Redis服务:sudo systemctl start redis
2. 检查Redis是否绑定到正确的IP地址:
编辑Redis配置文件:sudo nano /etc/redis/redis.conf检查bind设置:bind 127.0.0.1  # 或者 bind 0.0.0.0保存并关闭文件,然后重启Redis服务:sudo systemctl restart redis
3. 检查防火墙设置:sudo ufw status如果需要,允许Redis端口:sudo ufw allow 6379
  1. sudo systemctl status redis
复制代码
  1. sudo systemctl start redis
复制代码
  1. sudo nano /etc/redis/redis.conf
复制代码
  1. bind 127.0.0.1  # 或者 bind 0.0.0.0
复制代码
  1. sudo systemctl restart redis
复制代码
  1. sudo ufw status
复制代码
  1. sudo ufw allow 6379
复制代码

8.4 持久化问题

问题:Redis重启后数据丢失。

解决方案:

1. 检查持久化配置:
编辑Redis配置文件:sudo nano /etc/redis/redis.conf确保RDB或AOF持久化已启用:
“`RDB持久化save 900 1
save 300 10
save 60 10000

检查持久化配置:
编辑Redis配置文件:
  1. sudo nano /etc/redis/redis.conf
复制代码

确保RDB或AOF持久化已启用:
“`

save 900 1
save 300 10
save 60 10000

# 或者AOF持久化
   appendonly yes
   appendfsync everysec
  1. 保存并关闭文件,然后重启Redis服务:
  2.    ```bash
  3.    sudo systemctl restart redis
复制代码

1. 检查Redis数据目录的权限:sudo ls -la /var/lib/redis确保Redis用户有读写权限。
2. 检查磁盘空间:df -h确保有足够的磁盘空间用于持久化文件。
  1. sudo ls -la /var/lib/redis
复制代码
  1. df -h
复制代码

8.5 性能问题

问题:Redis性能不佳,响应缓慢。

解决方案:

1. 检查系统资源使用情况:top查看CPU和内存使用情况。
2. 检查Redis的慢查询日志:
编辑Redis配置文件:sudo nano /etc/redis/redis.conf启用慢查询日志:slowlog-log-slower-than 10000  # 单位:微秒
slowlog-max-len 128保存并关闭文件,然后重启Redis服务:sudo systemctl restart redis查看慢查询日志:redis-cli SLOWLOG GET
3. 优化数据结构和查询:避免使用KEYS命令,使用SCAN代替使用适当的数据结构批量操作代替单个操作使用管道(Pipeline)减少网络往返
4. 避免使用KEYS命令,使用SCAN代替
5. 使用适当的数据结构
6. 批量操作代替单个操作
7. 使用管道(Pipeline)减少网络往返
  1. top
复制代码
  1. sudo nano /etc/redis/redis.conf
复制代码
  1. slowlog-log-slower-than 10000  # 单位:微秒
  2. slowlog-max-len 128
复制代码
  1. sudo systemctl restart redis
复制代码
  1. redis-cli SLOWLOG GET
复制代码

• 避免使用KEYS命令,使用SCAN代替
• 使用适当的数据结构
• 批量操作代替单个操作
• 使用管道(Pipeline)减少网络往返

9. 总结

通过本教程,我们学习了如何在Ubuntu系统上从零开始安装和配置Redis。我们介绍了两种安装方式:使用APT包管理器安装和从源代码编译安装,并详细说明了每种方法的步骤。

我们还学习了Redis的基本配置,包括绑定IP地址、设置端口、密码认证、持久化配置和内存管理等。此外,我们还介绍了Redis的基本操作和测试方法,以及如何将Redis设置为系统服务。

最后,我们讨论了Redis的安全配置和常见问题的解决方案,帮助你确保Redis的安全运行并解决可能遇到的问题。

Redis是一个功能强大、性能卓越的内存数据库,通过本教程的学习,你应该已经掌握了在Ubuntu系统上安装、配置和使用Redis的基本技能。希望这个教程对你有所帮助!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

频道订阅

频道订阅

加入社群

加入社群

联系我们|TG频道|RSS

Powered by Pixtech

© 2025 Pixtech Team.