【redis】redis概述

1、定义

  • Redis(Remote Dictionary Server),即远程字典服务,是一个开源的、内存中的数据结构存储系统。
  • redis是一个key-value存储系统。
  • 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
  • 为了保证效率,redis数据都是缓存在内存中。
  • redis可以用作数据库、缓存和消息中间件。
  • Redis使用ANSI C语言编写,支持网络,并提供了多种语言的API。

2、截至今天数据库排名

3、主要特点

  1. 高性能
    • Redis基于内存操作,因此读写速度非常快。
    • 官方测试数据表明,在100k个并发连接下,Redis的读取速度为110000次/s,写入速度为81000次/s(可能根据测试环境和版本有所不同)。
  2. 支持多种数据结构
    • Redis不仅支持简单的字符串类型的数据,还支持列表(list)、集合(set)、散列(hash)和有序集合(sorted set)等多种数据类型。
    • 这些数据类型都支持push/pop、add/remove及取交集、并集和差集等丰富的操作,且这些操作都是原子性的。
  3. 数据持久化:Redis提供了RDB和AOF两种持久化方式,可以将内存中的数据保存到磁盘中,以防止数据丢失。
  4. 主从复制
    • Redis支持主从复制,可以实现数据的备份和读写分离。
    • 一个主服务器可以有多个从服务器,从服务器可以复制主服务器的数据。
  5. 事务支持:Redis支持事务,即一组命令的执行是一个原子操作,在事务中的命令要么全部执行,要么全部不执行。
  6. 发布/订阅功能:Redis提供了发布/订阅功能,可以实现消息的发布和订阅,满足实时消息推送的需求。
  7. Lua脚本支持:Redis支持使用Lua脚本来执行复杂的逻辑,这可以提高处理效率。
  8. 简单易用
    • Redis提供了简单的API,使得开发者可以快速上手。
    • 支持多种语言,包括Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等。

3、主要用途

  • 缓存:配合关系型数据库做高速缓存
  • 计数器:进行自增自减运算
  • 时效性数据:利用expire过期,例如手机验证码功能
  • 海量数据统计:利用位图,存储用户是否是会员、日活统计、文章已读统计、是否参加过某次活动
  • 会话缓存:使用redis统一存储多台服务器用到的session信息
  • 分布式队列/阻塞队列:通过List双向链表实现读取和阻塞队列
  • 分布式锁: 使用redis自带setnx命令实现分布式锁
  • 热点数据存储:最新文章、最新评论,可以使用redis的list存储,ltrim取出热点数据,删除旧数据
  • 社交系统:通过Set功能实现,交集、并集实现获取共同好友,差集实现好友推荐,文章推荐
  • 排行榜:利用sorted-set的有序性,实现排行榜功能,取top n
  • 延迟队列:利用消费者和生产者模式实现延迟队列
  • 去重复数据:利用Set集合,去除大量重复数据 发布/订阅消息:pub/sub模式
相关推荐
SelectDB技术团队17 小时前
SelectDB Enterprise 4.0.5:强化安全与治理,构建企业级实时分析与 AI 数据底座
数据库·人工智能·apache doris
一 乐17 小时前
医院挂号|基于springboot + vue医院挂号管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·医院挂号管理系统
M--Y17 小时前
Redis的主从复制和哨兵
redis·主从复制·哨兵
ego.iblacat17 小时前
Redis 核心概念与部署
数据库·redis·缓存
m0_4939345317 小时前
如何监控AWR数据收集Job_DBA_SCHEDULER_JOBS中的BSLN_MAINTAIN_STATS
jvm·数据库·python
万岳科技系统开发18 小时前
商城系统搭建自建平台与入驻第三方平台对比分析
数据库·小程序·架构
不剪发的Tony老师18 小时前
QoreDB:一款跨平台、现代化的通用数据库客户端
数据库
五阿哥永琪18 小时前
MySQL 中 VARCHAR、TEXT 与 JSON 类型:区别、场景与选型指南
数据库·mysql·json
a95114164218 小时前
Go语言如何操作OSS_Go语言阿里云OSS上传教程【完整】
jvm·数据库·python
2401_8971905518 小时前
MySQL中如何利用LIMIT配合函数分页_MySQL分页查询优化
jvm·数据库·python