【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模式
相关推荐
TDengine (老段)3 分钟前
TDengine IDMP 高级功能(4. 元素引用)
大数据·数据库·人工智能·物联网·数据分析·时序数据库·tdengine
DashVector27 分钟前
如何通过Java SDK分组检索Doc
java·数据库·面试
Olrookie1 小时前
XXL-JOB GLUE模式动态数据源实践:Spring AOP + MyBatis 解耦多库查询
java·数据库·spring boot
苏婳6661 小时前
【最新版】怎么下载mysqlclient并成功安装?
数据库·python·mysql
Tapdata3 小时前
《实时分析市场报告 2025》上线 | 从批处理到实时洞察,2025 年全球实时分析市场全景解读
数据库
海梨花3 小时前
【从零开始学习Redis】项目实战-黑马点评D2
java·数据库·redis·后端·缓存
代码的余温4 小时前
SQL性能优化全攻略
数据库·mysql·性能优化
手把手入门6 小时前
★CentOS:MySQL数据备份
数据库·mysql·adb
SelectDB7 小时前
5000+ 中大型企业首选的 Doris,在稳定性的提升上究竟花了多大的功夫?
大数据·数据库·apache
路多辛7 小时前
Golang database/sql 包深度解析(二):连接池实现原理
数据库·sql·golang