Redis框架详解

目录

1. redis是什么

主要特点

2. redis中存储的数据类型

2.1 String类型

2.2 List类型

2.3 Hash类型

2.4 Set类型

2.5 Zset类型

2.6 其它类型

3.redis高可用框架

1. redis是什么

Redis 是一个开源的、基于内存的数据结构存储系统,是 Remote Dictionary Server(远程字典服务器)的缩写。可用作:

  • 数据库
  • 缓存
  • 消息中间件

主要特点

  • 基于内存操作,性能极高
  • 支持丰富的数据结构(字符串、哈希表、列表、集合等)
  • 支持数据持久化
  • 支持主从复制和集群
  • 单线程模型(核心操作)

2. redis中存储的数据类型

常见的5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)。

2.1 String类型

String 是最基本的 key-value 结构,key 是唯一标识,value 是具体的值,value其实不仅是字符串, 也可以是数字(整数或浮点数),value 最多可以容纳的数据长度是512M。

常见指令:

操作常用指令value类型
查询GET key字符串
增加SET key value
删除DEL key
判断key是否存在EXISTS key
判断key中value长度STRLEN key
value值+1INCR key整数
value值-1DECR key
value值+10INCR key 10
设置过期时间60秒EXPIRE key 60
查看数据还有多久过期TTL keytime to live
设置值和过期时间

SETEX key 60 value

SET key value EX 60

不存在插入SETNX key value

应用场景:

  • 缓存对象数据
  • 计数(单线程原子操作):INCR key
  • 分布式锁:SETNX key value PX 1000,若key不存在,则插入成功即加锁成功,若key存在,加锁失败,同时给该key锁设置过期时间1秒。
  • 共享session信息:分布式系统,服务器共享redis中存储的session信息。

扩展:SETEX 是较早引入的命令,当时Redis主要使用作为时间单位;SET 命令的选项是后来添加的,增加了更精细的毫秒级控制,PX = Precise eXpire (in milliseconds)

2.2 List类型

简单的字符串列表,底层采用双链表,列表的最大长度为 2^32 - 1,也即每个列表支持超过 40 亿个元素。

常用指令:

操作常用指令
在value列表left左侧插入数据LPUSH key value
在value列表右侧right插入数据RPUSH key value
列表左侧弹出头元素LPOP key
列表右侧弹出尾元素RPOP key
返回指定区间内的元素LRANGE key start stop

应用场景:

  • 消息队列:

2.3 Hash类型

Hash 是一个键值对(key - value)集合,其中 value 的形式如: value=[{field1,value1},...{fieldN,valueN}]。Hash 特别适合用于存储对象

常用指令:

操作常用指令
增加HSET key field value(HMSET key field1 value1 field2 value2 )
获取HGET key field
删除HDEL key field
field的数量HLEN key

2.4 Set类型

无序并唯一的键值集合,一个集合最多可以存储 2^32-1 个元素。

常见指令:

操作指令备注
增加元素SADD key value
删除元素SREM key value
获取所有元素SMEMBERS key

应用场景:数据去重,数据唯一性,集合之间交集、并集、错集。

点赞:文章下点赞的用户数据

共同关注:不同的用户关注的相同的公众号数据

2.5 Zset类型

有序集合类型:元素依然是唯一的,不允许重复,但是每个元素是有顺序的。每个元素存储两个值,一个是顺序号,一个是元素值。

常用指令

操作指令备注
增加ZADD key score value
删除ZREM key value
返回元素的分值ZSCORE key value
某个元素的score增加ZINCRBY key score value

应用场景:排行榜、排序

2.6 其它类型

  • BitMap(2.2 版新增):二值状态统计的场景,比如签到、判断用户登陆状态、连续签到用户总数等;
  • HyperLogLog(2.8 版新增):海量数据基数统计的场景,比如百万级网页 UV 计数等;
  • GEO(3.2 版新增):存储地理位置信息的场景,比如滴滴叫车;
  • Stream(5.0 版新增):消息队列,相比于基于 List 类型实现的消息队列,有这两个特有的特性:自动生成全局唯一消息ID,支持以消费组形式消费数据。

3.redis高可用框架

框架:主从模式,数据修改只在主服务器上,然后将最新的数据同步给从服务器。

如果主服务器挂了,如何选择新的主服务器呢,引入哨兵机制,它会检测主节点是否存活,哨兵的作用:监控、选主、通知。

为了减少一个哨兵节点对主服务器判断的失误,所以,为了减少误判的情况,哨兵在部署的时候不会只部署一个节点,而是用多个节点部署成哨兵集群(最少需要三台机器来部署哨兵集群),通过多个哨兵节点一起判断,就可以就可以避免单个哨兵因为自身网络状况不好,而误判主节点下线的情况。同时,多个哨兵的网络同时不稳定的概率较小,由它们一起做决策,误判率也能降低。

这张图展示的是Redis哨兵(Sentinel)模式的架构相关逻辑。 在Redis哨兵模式中,存在主节点(Master)、从节点(Slave)和哨兵节点(Sentinel)。主节点负责处理写操作,从节点通过“写同步”从主节点同步数据,主要处理读操作。

哨兵节点的作用是监控主节点的状态。图中的哨兵A、B、C会对主节点是否下线进行判断与协商。比如哨兵B和C判定主节点“主观下线”(即自身认为主节点可能下线)后,会相互询问对方是否也认为主节点下线,哨兵C表示认同,而哨兵A则判定主节点在线且不认同其他哨兵的观点。当多数哨兵(通常是超过半数)判定主节点真正下线(客观下线)后,会触发故障转移流程,从从节点中选举出新的主节点,保证Redis服务的高可用性。

参考:https://www.xiaolincoding.com/redis/cluster/master_slave_replication.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/98085.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/98085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日随机展示10个wordpress置顶文章

WordPress 置顶文章是博主根据自己的需要设置的&#xff0c;通常用于展示重要或热门的文章。 以下是一个示例代码&#xff0c;用于在 WordPress 主题中展示 10 个置顶文章&#xff1a; <?php // 查询置顶文章 $sticky get_option(sticky_posts); $args array(post__in …

金融工程vs金融数学:谁更贴近量化交易?

在金融行业迈向高度数字化的今天&#xff0c;量化交易已成为顶尖金融机构的核心竞争力之一。它以数学模型为基础&#xff0c;借助编程技术实现策略自动化&#xff0c;在高频、中低频、套利、因子投资等多个领域展现出强大生命力。对于有志于此的大学生而言&#xff0c;选择一个…

实测AI Ping,一个大模型服务选型的实用工具

作为一名长期奋战在一线的AI应用工程师&#xff0c;我在技术选型中最头疼的问题就是&#xff1a;“这个模型服务的真实性能到底如何&#xff1f;” 官方的基准测试总是在理想环境下进行&#xff0c;而一旦投入使用&#xff0c;延迟波动、吞吐下降、高峰期服务不可用等问题就接踵…

深信服软件:aTrustAgent异常占用问题处理

问题&#xff1a;aTrustAgent占用CPU 大早上开电脑&#xff0c;风扇转的飞起&#xff0c;任务管理器看&#xff0c;发现是有几个 aTrustAgent 进程搞得鬼。 印象中&#xff0c;好像没有装过这个软件&#xff0c;搜了下&#xff0c;是深信服的软件&#xff0c;不知道是不是装哪…

基于国产银河麒麟服务器SP3项目实战(Nginx+Keepalive)实现高可用负载均衡

一、环境准备 192.168.113.11NginxKeepalive(Master)192.168.113.22Nginxkeepalive(Backup)192.168.113.33Nginx(web服务器)192.168.113.44 Nginx(服务器&#xff09; 二、环境搭建准备 2.1 Nginx源码编译安装 参考作责之前发布《Nginx源码编译安装》https://blog.csdn.net…

K近邻:从理论到实践

K近邻&#xff1a;从理论到实践 文章目录K近邻&#xff1a;从理论到实践1. 核心思想2. 距离度量3. k的选择与误差分析3.1 近似误差3.2 估计误差3.3 总误差4. kd树的构造与搜索4.1 kd树的构造4.2 kd树的搜索5. 总结6. K近邻用于iris数据集分类6.1加载数据6.2加载模型并可视化1. …

Dokcer的安装(ubuntu-20.04.6):

Dokcer的安装(ubuntu-20.04.6)&#xff1a; 1.添加Docker仓库 #更新本地软件包索引&#xff0c;获取最新的软件包信息 sudo apt-get update #安装依赖包 sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release #创建密钥存储目录 sudo mkdir -p /etc/apt/…

CT图像重建原理

一、CT到底测了什么&#xff1f;硬件动作X 射线源与探测器阵列对置&#xff0c;围着物体旋转。每转到一个角度 θ&#xff08;也叫一个视角 / view&#xff09;&#xff0c;源发射扇形/平行的射线束&#xff0c;探测器阵列上有很多“通道/像素/bin”&#xff08;记作索引 n&…

【pycharm】 ubuntu24.04 搭建uv环境

通过uv配置python环境 一直是conda环境 现在有个开源项目说用uv更快更好 所以在pycharm搞起。 一开始在在一个conda项目的里面某个项目里搞 发现会被conda 环境影响。 导致deepseed 安装不了。 python 环境不对 # NOTE: We must explicitly request them as `dependencies` abo…

从软件工程角度谈企业管理

从软件工程角度谈企业管理企业管理&#xff0c;本质上是人与人之间的博弈。 管理的最大难题&#xff0c;不是定目标、不是写流程&#xff0c;而是&#xff1a;如何让个体的利益最大化路径&#xff0c;与组织的整体目标一致&#xff1f; 这就是经济学里的“激励相容”。 在互联网…

vue3 实现前端生成水印效果

vue3 实现前端生成水印效果首先一点哈&#xff0c;就是单纯web前端生成水印只能作为警示使用&#xff0c;如果享彻底防住几乎是不可能的&#xff0c;有无数种方式去掉web前端生成的水印&#xff0c;所以这种方式只当是一个君子协议吧。编写水印组件 首先直接把这部分封装成一个…

Armonia Mall超级数字生态WEB3商城的引领者

Armonia Mall是一个基于Web3技术的超级数字生态商城&#xff0c;旨在打造全球首家Web3数字普惠商城&#xff0c;帮助千万行销人实现数字生态创业&#xff0c;让全球一亿家庭共享数字经济红利。 Armonia Mall商城创始人&#xff1a;石玉华Armonia Mall七大超级机制&#xff08;模…

Axios与Java Spring构建RESTful API服务集成指南

1 前后端分离时代的技术选择 现在的Web开发&#xff0c;前后端分离已经不是什么新鲜事了。前端用什么&#xff1f;很多团队选择Axios。后端呢&#xff1f;Java Spring依然是企业级应用的首选。 Axios这个JavaScript库确实好用&#xff0c;Promise-based的设计让异步请求变得简单…

Django ORM多对多关系实战指南

一、Django 多对多关系的原理 在关系型数据库中&#xff0c;多对多关系通常需要 第三张中间表 来维护两张表之间的对应关系。 在 Django 中&#xff0c;你只需要定义 ManyToManyField&#xff0c;Django 会自动帮你创建这张中间表。 特点&#xff1a; 可以双向查询&#xff08;…

STM32 单片机开发 - TIM 定时器(PWM)

一、硬件定时器高级控制定时器 Advanced Control Timers (TIM1/TIM8)通用定时器 General Purpose Timers (TIM2/TIM3/TIM4/TIM5)通用定时器 General Purpose Timers (TIM15/TIM16/TIM17)基本定时器 Basic Timers (TIM6/TIM7)表 1 定时器种类二、TIM 中 PWM 概念PWM 的基本原理就…

OpenCV内置分类器实现简单的人脸识别

引言 人脸检测是计算机视觉领域的基础任务之一&#xff0c;广泛应用于安防监控、人机交互、图像美化等场景。今天我们将通过一段简洁的Python代码&#xff0c;使用OpenCV库实现实时摄像头人脸检测功能。无论你是计算机视觉新手还是有经验的开发者&#xff0c;这篇文章都能帮你理…

Tomcat 性能优化与高并发调优

Tomcat 性能优化与高并发调优1. 引言 经过前几篇文章的学习&#xff0c;我们已经掌握了 Tomcat 的核心原理&#xff1a; Connector 连接器容器体系&#xff08;Engine → Host → Context → Wrapper&#xff09;Servlet 执行链路线程模型&#xff08;Executor Worker&#xf…

MacOS M1安装face_recognition

MacOS M1安装face_recognition一致失败&#xff0c;尝试网上各种方法还是失败&#xff0c;遂分享自己安装成功的经历。 conda虚拟环境python版本&#xff1a;3.9.23准备工作确保 Homebrew 已安装 Homebrew 是 macOS 的包管理器&#xff0c;用于安装依赖项。如果尚未安装&#x…

动态库和静态库的链接加载

静态库的链接与加载静态库&#xff08;如.a或.lib文件&#xff09;在编译时直接链接到可执行文件中。编译器会将静态库中实际用到的代码复制到最终的可执行文件&#xff0c;生成独立的二进制文件。优点是不依赖外部库文件&#xff0c;但会导致可执行文件体积较大。生成静态库的…

如何处理在pytorch环境中已经安装的matplotlib无法使用的问题

1 问题已经安装好的matplotlib包无法在pytorch环境中使用。2 方法方法一&#xff1a;用命令安装matplotlib &#xff1a;方法二&#xff1a;打开cmd&#xff0c;使用conda install matplotlib命令安装matplotlib库#输入以下代码段&#xff0c;查询当前执行路径import osos.sys.…