Redis

文章目录

一、定义

核心特性

二、Redis配置文件常见部分解释

[1、配置获取 config get * config get requirepass](#1、配置获取 config get * config get requirepass)

2、在文档redis.windows.conf下常用解释:

三、数据类型

键的操作

字符串

列表

哈希

集合

有序集合

主从复制

使用redis来缓存mysql数据

[四、 事务与管道 (Pipeline)](#四、 事务与管道 (Pipeline))

事务

[Lua 脚本](#Lua 脚本)

管道 (Pipeline)

[五、 高可用与集群](#五、 高可用与集群)

主从复制 (Replication)

哨兵 (Sentinel)

集群 (Cluster)


一、定义

开源、基于内存、可持久化的键值对(Key-Value)数据库。

核心特性

高性能:数据存储在内存中,读写速度极快。

丰富的数据结构:不仅是字符串,支持多种复杂数据结构。

持久化:支持 RDB 和 AOF 两种方式将内存数据保存到磁盘,防止数据丢失。

高可用和分布式:通过 Redis Sentinel 实现高可用,通过 Redis Cluster 实现分布式存储。

原子性:所有单个操作都是原子的,多个操作可通过 Lua 脚本或事务实现原子性。

二、Redis配置文件常见部分解释

1、配置

获取
config get *
config get requirepass

设置

修改配置文件

永久

客户端修改

config set requirepass 456789

服务器未重启,重启则使用配置文件配置

2、在文档redis.windows.conf下常用解释:

include

导入其他配置文件

port 6379 端口号

bind IP

只能通过IP来访问reids服务

timeout 0

客户端未操作断开时间

loglevel notice

日志级别

logfile ""

日志文件

databases 16

默认有16个数据库

Save the DB on disk:

保存数据到磁盘,重启服务数据不丢失

启动加载数据

DB loaded from disk

关闭服务之前保存数据

DB saved on disk

保存规则

save <seconds> <changes>

save 900 1

如果只有一个更改, 15分钟以后同步到磁盘

save 300 10

如果只有10个更改, 5分钟以后同步到磁盘

save 60 10000

如果只有10000个更改, 1分钟以后同步到磁盘

dbfilename dump.rdb

数据文件名字

dir ./

数据文件路径

requirepass foobared

配置密码

maxclients 10000

最大连接数

三、数据类型

键的操作

delete(keys) 删除键

expire(key, time) 给键添加有效期

exists(key) 是否存在该键

ttl(key) 存活时间

type(key) 返回对应的类型

keys(*) 展示所有匹配的键

字符串

get 获取指定键的值

mget 一次性获取多个键的值

set 设置指定键的值

mset 一次性设置多个键的值

setex 设置带有有效期的键值对

incr 将键的值加 1

incrby 将键的值增加指定的整数

decr 将键的值减 1

decrby 将键的值减少指定的整数

strlen 返回长度

列表

lpush 左侧插入

rpush 右侧插入

lpop 左侧删除,并且返回

rpop 右侧删除,并且返回

llen 返回列表元素个数

lrange 返回制定索引范围内的所有元素

lindex 返回指定所有对应的数据

ltrim 截取列表指定范围内的数据

哈希

hget 获取哈希表中指定字段的值

hmget 一次性获取哈希表中多个字段的值

hset 设置哈希表中指定字段的值

hmset 一次性设置哈希表中多个字段的值

hlen 返回键值对个数

hexists 是否有某个字段

hdel 删除某个字段

hkeys 所有的字段

hvals 所有字段对应的值

集合

smembers 获取集合中的所有成员

sismember 检查指定的值是否是集合的成员

scard 返回集合中的元素个数

sadd 向集合中添加一个或多个成员

srem 从集合中删除一个或多个成员

sinter 计算多个集合的交集

sunion 计算多个集合的并集

sdiff 计算多个集合的差集(第一个集合中存在,而其他集合中不存在的元素)

有序集合

zadd (key, {value: score, value2:score2})

zrem 删除元素

zcard 统计有序集合元素个数

zscore 返回元素的权重、分值

zrank 返回元素对应的排名

zrange 根据排序 返回指定范围内的所有元素

zcount 统计指定 分值范围之内元素个数

主从复制

slaveof <masterip> <masterport> 主从配置

masterauth 主机密码

使用redis来缓存mysql数据

内存操作效率远远高于磁盘

缓存雪崩 : 在某一时刻,大量缓存数据同时过期失效,导致大量请求绕开缓存,直接请求mysql数据库,导致mysql数据库巨大的压力甚至使其崩溃。

避免方法: 设置随机过期时间

缓存穿透 :查询mysql数据库中根本不存在的数据,此时缓存中也不会有,就导致大量请求直接请求mysql数据库。

避免: 当mysql中数据不存在,在redis数据库缓存空对象

四、 事务与管道 (Pipeline)

事务

  • 命令MULTI(开启事务) -> 输入命令队列 -> EXEC(执行事务) / DISCARD(取消事务)。

  • 特点不保证原子性 !事务中的命令是串行执行,但执行过程中可能会被其他客户端命令插入。没有回滚机制。

Lua 脚本

  • 确保多个命令的原子性执行,执行期间整个脚本不会被其他命令打断。

  • 命令:EVAL, EVALSHA

管道 (Pipeline)

  • 目的优化网络性能,将多个命令打包一次发送,减少网络往返时间(RTT)。

  • 注意:Pipeline 不是事务,不保证原子性。

五、 高可用与集群

主从复制 (Replication)

  • 角色:Master(主,写)和 Slave(从,读)。

  • 作用:数据备份、读写分离、扩展读性能。

  • 原理:全量同步(RDB) + 增量同步(命令传播)。

哨兵 (Sentinel)

  • 作用监控 主从节点,实现自动故障转移 (Master 宕机时,自动将一个 Slave 提升为新的 Master)和配置提供者(客户端通过哨兵发现当前 Master 地址)。

  • 命令redis-sentinel

集群 (Cluster)

  • 作用数据分片 (将数据自动分布到多个节点),提供横向扩展能力。

  • 分片原理:采用哈希槽(Hash Slot),共 16384 个槽。每个节点负责一部分槽。

  • 特性 :客户端直连任意节点,节点间通过 gossip 协议通信。支持主从复制和故障转移。

相关推荐
TF男孩5 小时前
ARQ:一款低成本的消息队列,实现每秒万级吞吐
后端·python·消息队列
AAA修煤气灶刘哥6 小时前
别让Redis「歪脖子」!一次搞定数据倾斜与请求倾斜的捉妖记
redis·分布式·后端
AAA修煤气灶刘哥6 小时前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
该用户已不存在10 小时前
Mojo vs Python vs Rust: 2025年搞AI,该学哪个?
后端·python·rust
RestCloud10 小时前
揭秘 CDC 技术:让数据库同步快人一步
数据库·api
站大爷IP12 小时前
Java调用Python的5种实用方案:从简单到进阶的全场景解析
python
得物技术14 小时前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
用户83562907805117 小时前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
christine-rr17 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
c8i17 小时前
python中类的基本结构、特殊属性于MRO理解
python