redis使用介绍

Redis(Remote Dictionary Server)是一个开源的、使用内存网络来存储数据、支持多种类型的数据结构(如字符串、哈希、列表、集合、有序集合、位图、HyperLogLog等)的NoSQL数据库。

  1. 数据类型

• 字符串(String):Redis最基本的类型,可以存储任何形式的字符串,包括二进制数据。支持的操作包括设置值(SET)、获取值(GET)、追加值(APPEND)等。

• 哈希(Hash):一个键值对的集合,其中键和值都是字符串类型。哈希特别适合存储对象,比如用户信息(用户名、密码、年龄等)。

• 列表(List):一个有序的字符串列表,可以支持从两端进行插入和弹出操作。列表可以作为栈(LPUSH/LPOP)、队列(LPUSH/RPOP)或双端队列(LPUSH/RPUSH等)来使用。

• 集合(Set):一个无序的字符串集合,支持集合的并集、交集、差集等操作。集合中的元素是唯一的,不允许重复。

• 有序集合(Sorted Set):与集合类似,但每个元素都会关联一个分数(score),元素按分数从小到大排序。有序集合可以用来实现排行榜等功能。

• 位图(Bitmaps):位图不是一种独立的数据类型,而是基于字符串实现的位操作集合。位图可以用来高效地存储和操作大量的布尔值(0或1)。

• HyperLogLog:一种用于基数估计的概率数据结构,适用于统计独立元素的数量,比如网站的独立访客数。HyperLogLog在牺牲一定精度的情况下,能够使用极少的内存来存储大量的数据。

  1. 数据持久化

• RDB(Redis Database):通过创建快照的方式来实现数据的持久化。RDB文件是一个经过压缩的二进制文件,可以定期地将内存中的数据快照写入磁盘。

• AOF(Append Only File):通过记录每次写操作来实现数据的持久化。AOF文件是一个文本文件,包含了所有对数据库进行的写操作,当Redis重启时,可以通过重新执行这些操作来恢复数据。

  1. 复制与集群

• 主从复制:Redis支持主从复制,主节点负责处理写操作,从节点负责处理读操作,从而实现读写分离和负载均衡。从节点还可以作为主节点的备份,在主节点故障时提供故障转移。

• 哨兵(Sentinel):哨兵是一个独立的进程,用于监控Redis主从服务器,并在主节点故障时自动进行故障转移,保证系统的高可用性。

• 集群(Cluster):Redis集群允许将数据分散存储在多个节点上,每个节点都是一个Redis服务器。集群提供了自动分片(sharding)和故障转移的功能,能够自动地将数据分配到不同的节点上,并在节点故障时自动进行数据的迁移和恢复。

  1. 事务与Lua脚本

• 事务:Redis支持简单的事务操作,通过MULTI、EXEC、DISCARD和WATCH等命令来实现。事务中的所有命令都会被序列化,并按照它们在事务中的顺序依次执行。

• Lua脚本:Redis支持使用Lua语言编写脚本,这些脚本可以在Redis服务器上直接运行。Lua脚本可以看作是Redis事务的一种扩展,它允许在单个命令中执行多个操作,并且这些操作是原子性的。

  1. 管道(Pipeline)

管道是一种可以将多个命令打包发送到Redis服务器,并一次性返回所有命令结果的技术。管道可以减少客户端与服务器之间的通信次数,从而提高命令的执行效率。

相关推荐
亦暖筑序12 分钟前
AgentScope-Java 入门:保存评审状态并生成 Markdown 报告
java·人工智能·后端
invicinble30 分钟前
关于微服务基本框架搭建--fegin最小使用demo
java·spring boot·微服务
梦想的旅途230 分钟前
企业微信API 实现企业微信消息的自动发送?
java·服务器·前端
大不点wow39 分钟前
为什么 Spring 更推荐构造器注入,而不是字段 `@Autowired`
java·spring·intellij-idea
用户298698530141 小时前
Java 创建 CSV 文件的三种实用方法:从零构建、数组写入与 Excel 转换
java·后端·excel
Cry丶1 小时前
一次 FTP 上传引发 504 Gateway Timeout 的排查复盘
java·nginx·ftp·openresty·被动模式·504 gateway·生产问题排查
码农进化录1 小时前
Java 程序员的 AI 进化论 | AI 辅助 CI/CD,让 AI 帮你做代码审查和部署决策
java·spring boot·openai
zyplayer-doc1 小时前
企业文档的进化:网盘和在线文档的下一个升级方向—知识库系统
java·大数据·数据库·人工智能·ocr
吃饱了得干活1 小时前
从零设计一个高并发点赞系统:缓存+MQ异步持久化实战
java·架构
奇牙coding1 小时前
gpt-5.6-luna 调用报 400 bad_request 怎么办?同样的 messages 在 gpt-5.5 没问题——两处校验差异和修复写法
java·windows·gpt·ai