一个另类的数据库-Redis

今天小编来分享一下什么是Redis

简介:

什么是 Redis?

Redis(Remote Dictionary Server) 是一个开源的、基于内存的高性能键值(Key-Value)数据库。它支持多种数据结构,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等,因此被广泛应用于缓存、消息队列、会话存储、排行榜、实时分析等场景。

Redis 的核心特点包括:

  • 内存存储:数据主要保存在内存中,读写速度极快(通常可达每秒数十万次操作)。

  • 持久化支持:虽然基于内存,但 Redis 提供了 RDB(快照)和 AOF(追加日志)两种持久化机制,可以在重启后恢复数据。

  • 丰富的数据类型:不仅支持简单的字符串,还支持复杂的数据结构,极大提升了开发灵活性。

  • 高可用与分布式:通过主从复制、哨兵(Sentinel)和 Redis Cluster 实现高可用性和横向扩展。

  • 原子性操作:所有 Redis 命令都是原子性的,支持事务(MULTI/EXEC)。

  • 单线程模型(6.0 之前):早期版本使用单线程处理命令,避免了锁竞争;Redis 6.0 引入了多线程 I/O,提升网络吞吐能力,但命令执行仍为单线程。

在主流 Linux 系统上下载并配置 Redis

Redis的下载一般是用于Linux的服务器上,所以接下来介绍下,常见的Linux发行版下载Redis

Redis 可在几乎所有主流 Linux 系统上运行,包括但不限于:

  • Ubuntu / Debian

  • CentOS / Rocky Linux / AlmaLinux

  • Fedora

  • openSUSE

2.2 安装方式(以 Ubuntu 和 CentOS 为例)

方法一:通过包管理器安装(推荐用于快速体验)

Ubuntu/ Debian

复制代码
sudo apt update sudo apt install redis-server

CentOS /Rocky Linux(需启用 EPEL 仓库):

复制代码
sudo dnf install epel-release -y sudo dnf install redis -y

注意:包管理器安装的 Redis 版本可能不是最新版,适合生产环境稳定需求,但若需新特性建议源码编译。


方法二:从源码编译安装(推荐用于生产或需要最新版本)
  1. 安装依赖

    Ubuntu/Debian sudo apt update sudo apt install build-essential tcl wget -y

    CentOS/Rocky sudo dnf groupinstall "Development Tools" -y sudo dnf install tcl wget -y

  2. 下载 Redis 源码 (以最新稳定版为例)

    cd /tmp wget https://download.redis.io/redis-stable.tar.gz tar -xzf redis-stable.tar.gz cd redis-stable

  3. 编译并安装

    make sudo make install

  4. 默认会将可执行文件(如 redis-server, redis-cli)安装到 /usr/local/bin/

  5. (可选)设置系统服务 Redis 源码包提供了 systemd 服务模板:

    sudo cp utils/redis_init_script /etc/init.d/redis_6379
    sudo mkdir /etc/redis sudo cp redis.conf /etc/redis/6379.conf

  6. 然后根据需要编辑配置文件并启动服务(详见下文配置部分)。


2.3 是否需要配置?如何配置?

是的,强烈建议进行基本配置,尤其是在生产环境中。

Redis 的主配置文件是 redis.conf。关键配置项包括:

|------------------|--------------|------------------------------------------|
| 配置项 | 说明 | 建议值(生产环境) |
| bind | 绑定 IP 地址 | 0.0.0.0(允许远程访问)或内网 IP(更安全) |
| protected-mode | 保护模式 | no(如果设置了密码或绑定了可信 IP) |
| port | 监听端口 | 默认 6379,可修改 |
| daemonize | 是否后台运行 | yes |
| requirepass | 设置访问密码 | 强密码(如 requirepass your_strong_password) |
| maxmemory | 最大内存限制 | 根据服务器资源设置(如 2gb) |
| maxmemory-policy | 内存淘汰策略 | allkeys-lru 或 volatile-lru |
| appendonly | 是否开启 AOF 持久化 | yes(更安全) |
| save | RDB 快照策略 | 根据业务调整,如 save 900 1 表示 900 秒内至少 1 次修改则保存 |

示例:最小安全配置(/etc/redis/redis.conf)
复制代码
复制代码
bind 0.0.0.0
protected-mode no
port 6379
daemonize yes
requirepass YourStrongPassword123!
maxmemory 2gb
maxmemory-policy allkeys-lru
appendonly yes
启动 Redis
复制代码
redis-server /etc/redis/redis.conf
测试连接
复制代码
redis-cli -a YourStrongPassword123! 
127.0.0.1:6379> ping 
PONG

小贴士

  • 不要在 公网 暴露 Redis 无密码 端口!极易被攻击(如数据清空、植入挖矿程序)。

  • 使用防火墙(如 ufwfirewalld)限制访问来源。

  • 定期备份 RDB/AOF 文件。

  • 监控内存使用和连接数。

相关推荐
Edward1111111113 小时前
4.27mysql ,数据库,数据源
数据库·mysql
小徐敲java13 小时前
踩坑实录:MySQL8.0 导入SQL报错 2006 - MySQL server has gone away 完美解决
数据库·sql
别来无恙blwy13 小时前
windows MongoDB升级-自动升级脚本-自动检测升级到任意版本
数据库·windows·mongodb
步辞13 小时前
Redis如何利用LFU算法优化缓存命中率
jvm·数据库·python
~小先生~13 小时前
sqlserver 外键、级联使用
数据库·sqlserver
forEverPlume13 小时前
golang如何实现日志按级别过滤_golang日志按级别过滤实现教程
jvm·数据库·python
m0_6245785915 小时前
MySQL主从复制支持跨版本吗_不同版本间同步的注意事项
jvm·数据库·python
2401_8714928515 小时前
如何在 React Router v6 中正确配置多路由组件显示
jvm·数据库·python
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.16 小时前
《redis-cluster 集群部署完全手册(含扩容+缩容)》
数据库·redis·缓存
snow@li16 小时前
数据库-MongoDB:常用语法 / MongoDB 核心知识技能梳理
数据库·mongodb