首页 > 数据库 >redis数据结构和内部编码及单线程架构

redis数据结构和内部编码及单线程架构

时间:2024-12-13 17:57:12浏览次数:6  
标签:单线程 数据库 redis 线程 服务器 数据结构

 博主主页: 码农派大星.

    数据结构专栏:Java数据结构

 数据库专栏:数据库

JavaEE专栏:JavaEE

软件测试专栏:软件测试

关注博主带你了解更多知识

1. 数据结构和内部编码

 

Redis会在合适的场景选择合适的内部编码 

我们可以通过objectencoding命令查询内部编码 :

2. 单线程架构

Redis 使⽤了单线程架构来实现⾼性能的内存数据库服务

当好几个客户端,也相当于"并发"发起请求时,这时就意味着是否redis服务器存在线程安全问题呢?其实是不会发生线程安全问题的,redis服务器是单线程模型,保证收到的多个请求会串行执行,多个请求同时到达redis服务器,也是要在队列中排队,再等待redis服务器一个一个取出里面的命令再执行,微观上讲,redis服务器是串行/顺序执行多个命令的

redis能够使用单线程模型,原因主要在于redis的核心业务逻辑,都是短平快的,不会太消耗cpu资源,不太吃多核

redis虽然是单线程,但为什么他会这么快效率高呢? 

1. redis访问内存,数据库则是访问硬盘

2. redis核心功能比数据库核心功能简单

3. 单线程模型,避免了一些不必要的线程竞争开销

redis每个操作都是短平快的,就是简单操作一下内存数据,不是特别消耗cpu

资源

4.处理网络IO的时候,使用了epoll这样的IO多路复用机制(一个线程处理多个socket)

标签:单线程,数据库,redis,线程,服务器,数据结构
From: https://blog.csdn.net/jj666mhhh/article/details/144347887

相关文章

  • 54.Python操作Redis缓存数据库
     (五十四)Python操作Redis缓存数据库 1:使用redis库操作Redis 安装 pipinstallredis string操作 示例1:单个stringimportredisclient=redis.StrictRedis(host='localhost',port=6379,db=0)result=client.set('robby',27)print(......
  • 53.Redis的使用
      (五十三)Redis的使用 1:Redis入门 概念 1:Redis运行过程,也就是读写过程都是基于内存实现的key/value存储。对比与memcached而言,会基于异步方式(快照)同步到文件系统,实现数据的持久性存储。单一进程响应用户的所有的请求,具有主从架构。2:单台服务器可以响应的1......
  • 云主机安装Redis,基于CodeArts模拟电商平台秒杀抢购
    本文分享自华为云社区《云主机安装Redis并模拟电商平台秒杀抢购场景》,作者:开发者空间小蜜蜂。1.1案例介绍Redis是一个高性能的key-value数据库。Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘......
  • ‌Bull是一个基于Redis的队列库,专为Node.js设计
    ‌Bull是一个基于Redis的队列库,专为Node.js设计,提供高性能和可靠的任务处理能力‌。它通过Redis作为后端存储,确保任务的持久性和高可用性。Bull的设计理念是简单、高效,同时具备强大的功能,能够满足各种复杂的任务调度需求‌12。Bull的主要功能‌高性能‌:Bull采用无轮询设计,极大......
  • 数据结构结课设计——使用随机深度优先搜索完成随机迷宫的生成
     博主在本学期的c语言数据结构课程选择了随机迷宫生成作为结课设计,并运用随机深度优先,下面是我的代码设计思路与代码,  设计思路上迷宫的随机生成问题可以分成两个大步骤来进行:第一步迷宫的随机初始化:通过二维数组来对迷宫进行表示,将迷宫全部设置为1,再通过随机函数将迷宫......
  • Redis原理—5.性能和使用总结
    在Redis中,性能的优化可以从多个方面来考虑,包括数据结构的选择、合理的使用场景、合理的配置参数等。以下是一些关键点的概述和示例:数据结构选择:Redis支持多种数据结构,如字符串、列表、集合、有序集合和哈希表。在不同的使用场景下,选择合适的数据结构可以显著提高性能。例如,当需......
  • 【数据结构与算法图解】学习笔记(第一章)①:分析数组操作过程中的时间复杂度
    文章目录前言一、第一章:数据结构为何重要1.概念(步数,时间复杂度)【第一个理论】:书中的第一个重要理论:操作的速度,并不按时间计算,而是按`步数`计算。2,了解数组2.1通过(读取,查找,插入,删除)来分析2.1.1读取(看任意索引上的值)2.1.2查找(看数组/列表中有没有该值)2.1.3插入(往......
  • Java Boot 使用中间件 Redis 标准化流程
    一、JavaBoot使用中间件Redis标准化流程注:写本文章的原因是项目中的redis使用不规范导致断开连接,重新连接也不行,稳定性不够配置1.在pom.xml添加<!--redis--><dependency><groupId>org.springframework.boot</groupId><artif......
  • RedisShake同步例子(过滤同步)
    环境:OS:Centos7RedisShake:v4.2.2 1.下载地址https://github.com/tair-opensource/RedisShake/releases/download/v4.2.2/redis-shake-linux-amd64.tar.gz 2.解压安装mkdir-p/opt/redis-shake##安装包上传到该目录tar-xvfredis-shake-linux-amd64.tar.gz 3.修......
  • 举例说明学习数据结构和算法有什么用?
    前端开发中,虽然不像后端开发那样频繁地处理海量数据和复杂算法,但数据结构和算法的知识仍然非常重要,它能帮助你写出更高效、更优雅的代码,提升用户体验。以下是一些前端开发中数据结构和算法的应用场景示例:1.数组和链表操作:场景:虚拟列表/无限滚动。当需要展示成千上万条数据......