当前位置: 首页 > news >正文

初识Redis

1.什么是Redis

Redis是一种基于键值对(key-value)的NoSQL数据库。与很多键值对数据库不同的是,Redis中的value可以由String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)等多种数据类型组成,同时同一种的数据类型可能有不同种编码形式,因此Redis可以满足很多的应用场景。

虽然Redis可以作为数据库,但是Redis相比于MySQL来说,Redis存储的能力很小。

Redis主要作为缓存而被程序员广泛使用和称赞。

2.Redis的特性

Redis受到程序员们的青睐,是因为Redis具有以下特性:

2.1速度快

Redis执行命令的速度非常快,造成Redis速度快可以归结于以下几点:

1.Redis所有的数据都是存放在内存中的,而从内存中读取数据的熟读是很快的(相比于读硬盘来说,从MySQL获取信息就是读硬盘的操作)

2.Redis的核心功能都是比较简单的操作内存中的数据结构

3.从网络上讲,Redis采用了IO多路复用的方式(后续我们详细讲)

4.Redis使用单线程模型,避免了多线程之间的冲突和竞争问题(虽然Redis在6.0版本引入了多线程机制,但主要用于处理网络和IO,不涉及到数据命令,即命令的执行任然采用单线程的模式)

2.2基于键值对的数据结构的服务器

Redis是一个客户端-服务器结构的程序!Redis主要提供了5种数据结构:字符串(String),哈希(hash),列表(list),集合(set),有序集合(zset)方便存储不同类型的数据。

2.3丰富的功能

Redis提供了许多额外的功能:

1.提供了键过期功能,可以用来实现缓存

2.提供了发布订阅功能,可以用来实现消息系统

3.支持Lua脚本,可以利用Lua创造出新的Redis命令

4.提供了简单的事务功能,能在一定程度上保证事务特性

5.提供了流水线(Pipeline)功能,这样客户端能将一批命令一次性传到Redis,减少了网络的开销

2.4简单稳定

Redis的简单主要体现在三个方面:

1.Redis的源码相对于很多NoSQL数据库的源码要少很多

2.Redis采用单线程模型,不需要考虑多线程之间的竞争问题

3.Redis自己实现了事务处理的相关功能

2.5客户端语言多

Redis提供了简单的TCP通信协议,很多编程语言可以很方便地接入Redis,例如C,C++,Java,PHP,Python,NodeJS等

2.6持久化

通常来看,将数据存放在内存中是不安全的,一旦发生断电或者机器故障,重要的数据可能就会丢失,因此Redis提供了两种持久化的方式:RDB和AOF,即可以使用两种策略将内存中的数据保存到硬盘中,这样就保证了数据的可持久化

2.7主从复制(Replication)

Redis提供了复制功能,实现了多个相同数据的Redis副本(Replica),复制功能是分布式Redis基础,主节点挂,从节点将会变为主节点

2.8高可用和分布式

Redis提供了高可用实现的Redis哨兵(Redis Sentinel),能够保证Redis节点的故障发现和故障的自动转移。也提供了Redis集群(Redis Cluster),是真正的分布式实现,提供高可用,读写和容量的扩展性

3.Redis的使用场景

3.1Redis可以做什么

1.Redis可以作为数据库

2.Redis可以作为缓存,存取部分数据(热点数据),全量数据在MySQL中

3.Redis可以进行会话存储

4.Redis可以作为消息队列

3.2Redis不可以做什么

1.Redis不可以存储大规模的数据

Redis是存放在内存中的,虽然内存已经足够便宜,但是如果数据量足够大,使用Redis来存储,是一个无底洞,经济成本非常高

2.Redis不可以存冷数据

数据分为冷热数据,热数据通常指需要频繁操作的数据,反之为冷数据。如果将冷数据存放在Redis上,基本是对内存的一种浪费,但是对于热数据存放在Redis中加速读写,也可以减轻后端存储的负载

3.3Redis的使用场景

1.缓存

合理使用缓存不仅可以加速数据的访问速度,而且能够有效地降低后端数据源的压力

2.排行榜系统

Redis提供了列表和有序集合的数据结构,合理使用这些数据结构可以很方便地构建各种排行榜系统

3.计数器应用

Redis天然支持计数功能而且技术的性能非常好,可以说是计数器系统的重要选择

4.社交网络

由于社交网站的访问量比较大,而传统关系类型的数据库不太适合存储一些类型的数据,Redis提供的数据结构可以相对比较简单容易实现赞/踩,粉丝,共同好友等功能

5.消息队列

Redis提供发布订阅功能和阻塞队列功能,虽然和专业的消息队列相比还不够强大,但是对于一般的消息队列的功能基本可以满足

相关文章:

  • DeepSeek 解析
  • 深入理解 lua_KFunction 和 lua_CFunction
  • 网络安全java练习平台 js网络安全
  • 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(2)
  • 【Linux】【网络】Libevent整个的使用流程总结(与接口函数结合)
  • 关于SOC与CPU的那些事
  • 网络安全钓鱼邮件测试 网络安全 钓鱼
  • React之旅-03 路由
  • Qt学习(五)自定义对话框,多窗口开发---添加设计师类, MDI多窗口开发
  • ARM TCM(itcm和dtcm)
  • 如何用ollama快速布署deepseek-r1大模型
  • 学习数据结构(11)二叉树(堆)下
  • tauri-plugin-http插件暂时不支持流传输Streaming,所以大模型的流传输就难了,所以还是用js的请求吧
  • Elasticsearch7.1.1 配置密码和SSL证书
  • 从猜想终结到算法革新,弹性哈希开启数据存储新篇章
  • 【科研绘图系列】R语言绘制SCI论文图合集
  • 飞行器的,偏航角,俯仰角,横滚角,的图解。加动图演示。
  • React入门案例-Hello React案例
  • Python编程之数据分组
  • 机器视觉--图像的参数
  • 三大交易所多举措支持科创债再扩容,约160亿证券公司科创债有望近期落地
  • 马上评|颜宁“简历打假”的启示
  • 魔都眼|上海环球马术冠军赛收官,英国骑手夺冠
  • 国内多景区实行一票游多日:从门票经济向多元化“链式经济”转型
  • 中国海警局新闻发言人就日民用飞机侵闯我钓鱼岛领空发表谈话
  • 首都航空:太原至三亚航班巡航阶段出现机械故障,已备降南宁机场