Redis

文章目录

一、定义

核心特性

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

1、配置获取        config get *        config get requirepass

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

三、数据类型

键的操作

字符串

列表

哈希

集合

有序集合

主从复制

使用redis来缓存mysql数据

四、 事务与管道 (Pipeline)

事务

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)

  1. 事务

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

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

  2. Lua 脚本

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

    • 命令:EVALEVALSHA

  3. 管道 (Pipeline)

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

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

五、 高可用与集群

  1. 主从复制 (Replication)

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

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

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

  2. 哨兵 (Sentinel)

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

    • 命令redis-sentinel

  3. 集群 (Cluster)

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值