【Redis】详解 Redis

Redis是一种高性能的开源键值存储数据库,它支持各种数据结构,包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。

Redis主要用于缓存、会话存储、消息队列等场景,以及用作数据库、应用程序的内存数据库。

1. 键值存储

  • Redis是一个键值存储数据库,它使用键(key)和值(value)的方式来存储数据。
  • 键是唯一的标识符,值可以是各种类型的数据,包括字符串、哈希、列表、集合、有序集合等。
  • Redis支持对存储在键中的数据执行各种操作,如读取、写入、删除、更新等。

Redis提供了丰富的命令集合,用于执行各种基本操作,包括数据的存储、读取、删除、更新等。下面是Redis的一些基本操作及其对应的命令:

  1. 字符串操作
SET key value [NX|XX] [EX seconds] [PX milliseconds] [GET]
  • key:要设置的键名。
  • value:要设置的值。
  • NX:可选参数,表示只在键不存在时才设置值。(初始设置值)
  • XX:可选参数,表示只在键已经存在时才设置值。(修改值)
  • EX seconds:可选参数,将键的过期时间设置为指定的秒数。(-1 表示永远不过期,-2 表示已过期)
  • PX milliseconds:可选参数,将键的过期时间设置为指定的毫秒数。
  • GET:可选参数,返回键的旧值。

其他操作:

  • 存储字符串:SET key value
  • 读取字符串:GET key
  • 删除字符串:DEL key
  • 检查键是否存在:EXISTS key
  • 设置字符串的过期时间:EXPIRE key seconds
  1. 哈希操作

    • 存储哈希:HSET key field value
    • 读取哈希:HGET key field
    • 删除哈希中的字段:HDEL key field [field ...]
    • 获取哈希的所有字段和值:HGETALL key
    • 检查哈希字段是否存在:HEXISTS key field
    • 获取哈希中的所有字段:HKEYS key
  2. 列表操作

    • 在列表左侧插入元素:LPUSH key value [value ...]
    • 在列表右侧插入元素:RPUSH key value [value ...]
    • 读取列表:LRANGE key start stop
    • 获取列表长度:LLEN key
    • 弹出列表左侧的元素:LPOP key
    • 弹出列表右侧的元素:RPOP key
  3. 集合操作

    • 添加元素到集合:SADD key member [member ...](不能重复)
    • 移除元素从集合:SREM key member [member ...]
    • 获取集合中的所有元素:SMEMBERS key
    • 检查元素是否存在于集合中:SISMEMBER key member
    • 获取集合的大小:SCARD key
  4. 有序集合操作

    • 添加元素到有序集合:ZADD key score member [score member ...]
    • 获取有序集合的成员和分数:ZRANGE key start stop [WITHSCORES]
    • 移除有序集合中的元素:ZREM key member [member ...]
    • 获取有序集合的成员数量:ZCARD key
    • 按分数范围获取有序集合的成员:ZRANGEBYSCORE key min max [WITHSCORES]
  5. 键操作

    • 删除键:DEL key
    • 获取所有匹配给定模式的键:KEYS pattern
    • 查看键的类型:TYPE key
    • 设置键的过期时间:EXPIRE key seconds
  6. 其他操作

    • 发布消息到指定的频道:PUBLISH channel message
    • 订阅一个或多个频道:SUBSCRIBE channel [channel ...]
    • 取消订阅一个或多个频道:UNSUBSCRIBE [channel [channel ...]]

2. 数据结构

  • Redis支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。
  • 字符串是最简单的数据结构,可以存储文本、整数等类型的数据。
  • 哈希用于存储对象,类似于字典或映射。
  • 列表是有序的字符串集合,支持从两端进行插入、删除等操作。
  • 集合是无序的字符串集合,支持集合运算,如并集、交集、差集等。
  • 有序集合类似于集合,但每个成员都关联一个分数,可以根据分数对成员进行排序。

3. 持久化

  • Redis支持两种持久化方式:RDB(Redis DataBase)和AOF(Append Only File)。
  • RDB是一种快照持久化方式,定期将内存中的数据保存到磁盘上。
  • AOF是一种追加日志持久化方式,将每个写操作追加到一个日志文件中,以保证数据的持久性。

rdb

打开 redis.windows.config 文件

image.png

dump.rdb 文件就是存储快照的信息。

但是他也有弊端,如果快照时间是一个小时生效,在一个半小时的时候发生宕机,那么数据就会丢失。所以 rdb 一般用于做数据备份(比如每晚12点对前一天的数据进行备份)。

image.png

手动存储也是可以的。

aof

image.png
默认是no,可以手动改为 yes。那么就可以将每次写的操作存到一个文件里面。

4. 缓存

  • Redis常被用作缓存,可以将频繁访问的数据存储在内存中,以提高访问速度。
  • Redis支持设置过期时间,可以自动删除过期的缓存数据,以节省内存空间。

5. 发布/订阅

  • Redis支持发布/订阅模式,允许客户端订阅一个或多个频道,并在频道中接收消息。
  • 这种模式常用于实现消息队列、即时通讯等功能。

image.png

但此时并没有持久化。

6. 事务

  • Redis支持事务,允许一组命令(多个命令)作为一个原子操作执行。
  • 使用MULTI命令开始事务,使用EXEC命令提交事务,或者使用DISCARD命令取消事务。
  • 不像 MySQL,Redis 的事务不支持回滚。

image.png

7. 集群

  • Redis提供了集群功能,允许将数据分布在多个节点上,以提高性能和可扩展性。
  • Redis集群使用分片(sharding)来实现数据的水平分布。

8. Lua脚本

  • Redis支持Lua脚本,允许在服务器端执行脚本来实现复杂的数据操作。

9. 主从复制

Redis主从复制是一种数据复制和同步机制,其中一个Redis服务器(称为主服务器)将其数据复制到一个或多个其他Redis服务器(称为从服务器)。主从复制提供了数据冗余备份、读写分离和故障恢复等功能。

具体使用见:Nodejs 第四十七章(redis主从复制) - 掘金 (juejin.cn)

相关推荐

  1. RedisRedis事务详解

    2024-04-06 10:50:03       27 阅读
  2. Redis 详解

    2024-04-06 10:50:03       34 阅读
  3. Redis详解

    2024-04-06 10:50:03       23 阅读
  4. 详解Redis:什么是Redis

    2024-04-06 10:50:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 10:50:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 10:50:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 10:50:03       82 阅读
  4. Python语言-面向对象

    2024-04-06 10:50:03       91 阅读

热门阅读

  1. rknn3588 yolov5 学习笔记

    2024-04-06 10:50:03       37 阅读
  2. [C++][特殊类设计][单例模式]详细讲解

    2024-04-06 10:50:03       31 阅读
  3. 2024.3.25力扣每日一题——零钱兑换2

    2024-04-06 10:50:03       39 阅读
  4. 数据大屏:现代数据分析与可视化的重要工具

    2024-04-06 10:50:03       35 阅读
  5. 蓝桥杯算法题:外卖店优先级

    2024-04-06 10:50:03       28 阅读
  6. C. Rudolf and the Ugly String

    2024-04-06 10:50:03       33 阅读
  7. 各种负载均衡技术

    2024-04-06 10:50:03       36 阅读
  8. Web 安全之 SSL 剥离攻击详解

    2024-04-06 10:50:03       30 阅读
  9. 【QT教程】QT6 QML在工业控制系统中的应用

    2024-04-06 10:50:03       30 阅读
  10. 30天拿下Rust之超级好用的“语法糖”

    2024-04-06 10:50:03       39 阅读
  11. 探索 AWK:Linux 下的文本处理

    2024-04-06 10:50:03       34 阅读
  12. clickhouse常用函数总结

    2024-04-06 10:50:03       30 阅读