redis疑问

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 先说一下,Redis 为什么是单线程的?

先说一下,Redis 为什么是单线程的?


单线程避免了多线程带来的数据问题,同时避免了多线程的切换耗时,提升了系统的吞吐。


多线程处理会涉及到锁,而且多线程处理会涉及到线程切换而消耗CPU。因为CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存或者网络带宽。单线程无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来解决


为什么使用连接池?


Redis 是单进程单线程的,它利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。


Redis 是基于内存的数据库,使用之前需要建立连接,建立断开连接需要消耗大量的时间。


再假设 Redis 服务器与客户端分处在异地,虽然基于内存的 Redis 数据库有着超高的性能,但是底层的网络通信却占用了一次数据请求的大量时间,因为每次数据交互都需要先建立连接,假设一次数据交互总共用时 30ms,超高性能的 Redis 数据库处理数据所花的时间可能不到 1ms,也即是说前期的连接占用了 29ms,连接池则可以实现在客户端建立多个连接并且不释放,当需要使用连接的时候通过一定的算法获取已经建立的连接,使用完了以后则还给连接池,这就免去了数据库连接所占用的时间。


实际上,Redis 在收到多个连接后,采用的是非阻塞 IO,基于 epoll 的多路 IO 复用。注意,这行代码。我们从 JedisPool 中获取的仅仅是一个连接。至于多个连接到达单进程单线程的 Redis 之后怎么处理,就与你的线程池无关了。

然后采用队列模式将并发访问变为串行访问,对于串行访问,本身操作内存就很快,Redis 采用一个线程来处理就再正常不过了!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
5月前
|
存储 缓存 NoSQL
Redis问题整理
Redis问题整理
|
消息中间件 缓存 监控
【Redis 系列】redis 学习十三,Redis 常问简单面试题
【Redis 系列】redis 学习十三,Redis 常问简单面试题
124 0
|
8月前
|
NoSQL 网络安全 Redis
Redis进阶-Redis使用建议一二事
Redis进阶-Redis使用建议一二事
42 0
|
8月前
|
NoSQL Java Redis
Redis专题(持续更新)
本文主要介绍了Redis高可用架构中的哨兵架构,包括哨兵的搭建步骤、元数据信息的维护和节点变动时的处理。同时,还详细介绍了Spring Boot中使用StringRedisTemplate和RedisTemplate对Redis进行操作的方法列表,以及Redis客户端命令对应的RedisTemplate中的方法列表。明天的文章将会讲述Redis高可用集群之水平扩展。
|
存储 缓存 NoSQL
redis知识点
redis 知识点
92 0
|
存储 消息中间件 缓存
|
存储 缓存 NoSQL
|
存储 NoSQL 网络协议
|
运维 NoSQL 网络协议
关于Redis的知识点,你都学会了吗?2
关于Redis的知识点,你都学会了吗?2
162 0
|
存储 消息中间件 缓存
关于Redis的知识点,你都学会了吗?1
Redis的介绍、优缺点、使用场景 Linux中的安装 常用命令 Redis各个数据类型及其使用场景 Redis字符串(String) Redis哈希(Hash) Redis列表(List) Redis集合(Set) Redis有序集合(sorted set) Redis - 瑞士军刀 慢查询 pipeline流水线 发布订阅 bitmap HyperLogLog算法 GEO Redis持久化,数据备份与恢复 RDB AOF SpringBoot + Jedis + 1主2从3哨兵 实现Redis的高可用 SpringBoot + Jedis + Redis Cluster代码案例 高可用 主
140 0