当前位置: 首页 > news >正文

【Redis】Linux 配置Redis

一、Redis介绍

Redis(Remote Dictionary Server)是一款开源的、高性能的键值对(Key-Value)存储数据库,由 Salvatore Sanfilippo 于 2009 年开发,采用 ANSI C 语言编写。它以内存存储为核心,支持数据持久化,同时提供了丰富的数据结构和灵活的功能,广泛应用于缓存、会话存储、消息队列、实时分析等场景。

在这里插入图片描述

1.1 Redis 的特点

  1. 高性能

    • 所有数据默认存储在内存中,读写速度极快(单机 QPS 可达 10 万 +),远超磁盘数据库(如 MySQL)。
    • 采用单线程模型(避免多线程上下文切换开销),结合 IO 多路复用机制,高效处理并发请求。
  2. 丰富的数据结构
    支持多种原生数据结构,满足复杂业务需求:

    • 字符串(String):最基础的键值类型,可存储文本、数字或二进制数据(最大 512MB)。
    • 哈希(Hash):适合存储对象(如用户信息),键值对的集合。
    • 列表(List):有序字符串集合,支持两端插入 / 删除,可实现队列、栈等结构。
    • 集合(Set):无序且唯一的字符串集合,支持交集、并集等运算。
    • 有序集合(Sorted Set):类似 Set,但每个元素关联一个分数(Score),可按分数排序(如排行榜)。
    • 其他:BitMap(位图)、HyperLogLog(基数统计)、Geospatial(地理位置)等。
  3. 数据持久化
    虽然数据存储在内存中,但 Redis 提供两种持久化方式,避免宕机后数据丢失:

    • RDB(Redis Database):定期将内存中的数据快照写入磁盘(二进制文件),适合备份和灾难恢复。
    • AOF(Append Only File):记录所有写操作到日志文件,重启时重新执行日志恢复数据,可靠性更高(可配置刷盘策略)。
  4. 高可用与扩展性

    • 主从复制(Master-Slave):主节点写入数据,从节点同步并提供读服务,实现读写分离和故障备份。
    • 哨兵模式(Sentinel):监控主从节点状态,当主节点故障时自动将从节点升级为主节点,保证高可用。
    • 集群模式(Cluster):将数据分片存储在多个节点,支持横向扩展(最多 16384 个节点),解决单机内存和性能瓶颈。
  5. 原子操作与事务

    • 所有单个命令都是原子性的,支持通过MULTIEXEC等命令实现简单事务(批量执行命令,要么全成功,要么全失败)。
    • 提供WATCH命令实现乐观锁,用于并发场景下的数据一致性控制。
  6. 其他特性

    • 过期键删除:支持为键设置过期时间,自动删除过期数据(基于惰性删除 + 定期删除策略)。
    • 发布订阅(Pub/Sub):实现简单的消息队列功能,支持消息的发布与订阅。
    • Lua 脚本:支持嵌入 Lua 脚本执行,实现复杂逻辑的原子性操作。
    • 跨平台:可在 Linux、Windows、macOS 等系统运行,且客户端语言丰富(Java、Python、Go 等均有成熟库)。

1.2 Redis应用场景

  1. 缓存:存储热点数据(如商品信息、用户会话),减少数据库访问压力,提升读性能。
  2. 会话存储:替代传统的 Cookie 或服务器本地会话,实现分布式系统中的会话共享。
  3. 计数器与排行榜:利用INCR命令实现点赞数、访问量统计,通过Sorted Set实现实时排行榜。
  4. 消息队列:基于ListLPUSH/RPOP或 Pub/Sub 实现简单的消息传递。
  5. 分布式锁:通过SETNX(SET if Not Exists)命令实现分布式环境下的资源竞争控制。
  6. 地理位置服务:利用GEO系列命令实现附近的人、距离计算等功能。

二、配置Redis

这里介绍在Ubuntu下载并配置Redis

2.1 下载Redis

Redis官网下载,这里选择下载7.0.5版本:http://download.redis.io/releases/redis-7.0.5.tar.gz

下载完成后解压到当前目录下:

tar -zxvf redis-7.05.tar.gz

进入到对应的解压后的文件夹下,里面有Makefile文件

cd redis-7.05

2.2 编译Redis

Makefile文件路径下执行make进行编译,编译完成后使用make install安装到默认路径下

make -j4 && sudo make install

Redis默认安装到/usr/local/bin目录下,安装后有redis-server服务器和redis-cli客户端

ls /usr/local/bin | grep redis

在这里插入图片描述

2.3 设置配置文件

启动Redis的时候需要指定配置文件,我们这里创建一个配置文件的目录,用于存放Redis的配置文件

cd /usr/local/bin
sudo mkdir redisconf

实际上,刚刚解压的文件夹中存在默认的Redis配置,即redis.conf文件,我们将它拷贝到我们的文件夹中

sudo cp ~/redis-7.0.5/redis.conf ./redisconf/

下面是常见的Redis配置,如有需要可以修改配置文件

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123456
# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

2.4 启动Redis

启动Redis服务器,指定我们的配置文件,启动完成后的服务器输出如下:

redis-server /usr/local/bin/redisconf/redis.conf

在这里插入图片描述

启动客户端,这里我们可以使用-p指定端口,如果不指定,就使用默认的端口6379

redis-cli -p 6379

查看进程信息,确保启动了Redis

ps -aux | grep redis

在这里插入图片描述

2.5 测试Redis

Redis客户端redis-cli输入info,查看对应的Redis信息

info

在这里插入图片描述

更多资料:https://github.com/0voice

http://www.xdnf.cn/news/1190647.html

相关文章:

  • 从零开始的云计算生活——第三十六天,山雨欲来,Ansible入门
  • [Python 基础课程]注释
  • Flowable 实战落地核心:选型决策与坑点破解
  • uniapp 自定义tab栏切换
  • 全球化2.0 | 云轴科技ZStack亮相阿里云印尼国有企业CXO专家活动
  • 数据结构预备知识
  • JavaWeb01——基础标签及样式(黑马视频笔记)
  • 伟淼科技李志伟:破解二代接班传承困局,系统性方案破除三代魔咒
  • mysql查找数据库表中某几个连续的编号中中断的编号
  • 如何实现打印功能
  • Kafka——Java消费者是如何管理TCP连接的?
  • 两个USB-CAN-A收发测试
  • pytorch学习笔记-自定义卷积
  • 在C#中判断两个列表数据是否相同
  • Day04–链表–24. 两两交换链表中的节点,19. 删除链表的倒数第 N 个结点,面试题 02.07. 链表相交,142. 环形链表 II
  • # JsSIP 从入门到实战:构建你的第一个 Web 电话
  • VTK交互——ImageRegion
  • kali [DNS劫持] 实验(详细步骤)
  • python I 本地 html 文件读取方法及编码报错问题详解
  • Android 蓝牙学习
  • 在python3.8和pytorch1.8.1的基础上安装tensorflow
  • 对比JS“上下文”与“作用域”
  • kafka中生产者的数据分发策略
  • RabbitMQ面试精讲 Day 5:Virtual Host与权限控制
  • GMP模型
  • Qt 多线程编程最佳实践
  • 公域流量向私域流量转化策略研究——基于开源AI智能客服、AI智能名片与S2B2C商城小程序的融合应用
  • 数据结构 二叉树(2)---二叉树的实现
  • Spring AI Alibaba Video 示例
  • “三十二应身”架构设计:论高扩展性度化系统的实现原理