Redis学习1 Redis介绍

光を追いかけてきた僕たちだから

Redis

Redis概念

‌Redis是一个开源的高性能键值存储数据库‌(NoSQL)(Redis内存储的数据都是键值对),支持多种数据结构,广泛用于缓存、消息队列、实时分析等场景。

Redis基于内存存储数据,提供极高的读写性能(可达每秒数十万次操作),同时支持数据持久化到磁盘,确保数据安全。

NoSQL

‌NoSQL是一类非关系型数据库的统称‌,它不依赖传统的表格结构和SQL查询语言,而是采用更灵活的数据模型来应对大规模、高并发的数据存储需求。

‌NoSQL与关系型数据库(SQL)的核心区别在于数据模型、扩展方式、一致性保障和查询语言‌,二者在架构设计上走上了不同的技术路径,适用于差异化的业务场景。

数据模型与结构化

SQL采用‌二维表结构‌,数据以行和列的形式组织,强调结构化和预定义模式(Schema)。例如,MySQL 中的users表必须提前定义字段如id,name,email等。

NoSQL数据库‌:使用非结构化、更灵活的数据模型,常见类型包括:

键值对(Key-Value)‌:如Redis,适合缓存、会话存储;
文档型(Document)‌:如MongoDB,数据以JSON/BSON格式存储,支持嵌套结构;
列族(Column Family)‌:如Cassandra,按列族组织数据,适合海量写入;
图结构(Graph)‌:如Neo4j,用于表示节点与关系,适用于社交网络分析。

适用场景

SQL数据结构固定,相关业务对数据安全性和一致性等要求较高

NoSQL数据结构不固定,对数据安全性和一致性等要求不高,对性能存在要求

扩展性和关联性

SQL数据库主要依赖‌垂直扩展‌(提升单机性能),难以应对超大规模数据。多表JOIN操作在分布式环境下成本极高,限制了横向扩展能力。

‌NoSQL数据库‌天生为‌水平扩展‌设计,可通过增加服务器节点实现集群化部署,轻松应对PB级数据和高并发访问,广泛用于互联网后端系统。

一致性业务

SQL数据库‌严格支持 ACID特性‌(原子性、一致性、隔离性、持久性),确保事务的可靠执行,适用于金融、订单等强一致性场景。
‌
NoSQL数据库‌通常遵循BASE原则‌(基本可用、软状态、最终一致性),牺牲强一致性换取高性能和高可用性。例如,Redis 提供最终一致性,MongoDB 支持多文档事务但默认为最终一致。

基本可用(Basically Available)‌:系统在出现部分故障(如节点宕机、网络分区)时,仍能保证核心功能可用。例如,电商网站在大促期间即使推荐服务不可用,用户依然可以浏览商品和下单。

软状态(Soft State)‌:允许系统在执行过程中存在中间状态,数据不必实时一致。例如,在分布式缓存中,不同节点的数据可能短暂不一致,但不会影响整体运行。

最终一致性(Eventual Consistency)‌:系统在没有新更新输入后,经过一定时间,所有副本将最终达到一致状态。这是NoSQL数据库的核心特征之一,适用于对实时一致性要求不高的场景,如社交平台的粉丝数更新。

查询语句

SQL数据库‌使用SQL(结构化查询语言),功能强大,支持复杂查询、JOIN、子查询、聚合分析等,学习成本低且标准化程度高。

‌NoSQL数据库‌不使用SQL‌,而是通过特定API或查询DSL进行操作。例如,MongoDB 使用JSON风格的查询语句,Cassandra使用 CQL(Cassandra Query Language),灵活性高但缺乏统一标准。

Redis特点

Redis特点如下:

键值(key-value)型,value支持多种不同数据结构,功能丰富
单线程,每个命令具备原子性
低延迟,速度快,高性能(基于内存、I0多路复用、良好的编码)。
支持数据持久化
支持主从集群、分片集群
支持多种编程语言,存在高可用和高扩展性

安装和启动Redis

安装redis首先要安装C语言环境

yum install -y gcc tcl

然后解压redis文件,在解压完成的redis目录中进行编译安装

make && make install

默认redis的相关文件在/usr/local/bin中
image

启动方式一

在任意目录中执行redis启动命令,该方式属于前台启动,会阻塞整个会话窗口,不推荐使用

redis-server

启动方式二

通过修改redis配置文件redis.conf,实现redis的后台启动(配置文件在解压完成的redis目录里)
首先备份redis配置文件原始版本,便于修改出现错误后回调

cp redis.conf redis.conf.bk 

接下来修改配置文件

# 监听地址,默认127.0.0.1只允许本地访问,修改为0.0.0.0允许任意ID访问,生产环境中不要这么做
bind 0.0.0.0

# 守护进程,修改为yes后允许后台运行
daemonize yes

# 设置redis密码,保证redis安全
requirepass 1234 

修改完成后启动后

redis-server redis.conf

image

启动方式三

通过设置配置文件实现开机自启

cd /etc/systemd/system
vim redis.service

在配置文件redis.service中插入如下内容,其中ExeStart后接两个路径,分别是redis-server路径和redis.conf配置文件路径

[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

接下来使用这组命令操作redis

# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis

执行下面的命令实现redis开机自启

systemctl enable redis

Redis命令行客户端

Redis安装并启动完成后自带了命令行客户端,在redis-cli路径下执行

redis-cli [options] [commands]

常见的options:

-h 127.0.0.1:指定要连接的redis节点的ip地址
-p 6379:指定要连接的redis节点的端口
-a 1234:指定redis的访问密码,访问时不添加密码会存在权限问题

其中commands就是Redis操作命令,例如:

ping:与redis服务端做心跳测试,服务端正常会返回pong

不指定commond时,会进入redis-cli的交互控制台:
image

Redis图形化界面连接

连接之前首先要关闭防火墙

systemctl stop firewalld.service

接下来设置连接信息
image

建立连接
image

posted @ 2026-04-30 12:56  tcswuzb  阅读(18)  评论(0)    收藏  举报