7.Redis之String编码方式应用场景业务

news/2024/7/14 18:40:52/文章来源:https://blog.csdn.net/m0_47017197/article/details/139212358

1.内部编码

字符串类型的内部编码有 3 种:
int:8 个字节(64位)的⻓整型。
embstr:⼩于等于 39 个字节的字符串。压缩字符串.适用于表示比较短的字符串。
raw:⼤于 39 个字节的字符串。普通字符串.适用于表示更长的字符串.只是单纯的持有字节数组。
  • Redis 会根据当前值的类型和⻓度动态决定使⽤哪种内部编码实现。
  • 整型类型示例如下:
  • redis 存储储小数,本质上还是当做字符串来存储.这就和整数相比差别很大了
    整数直接使用 int 来存 (准确来说是一个 long long(C++)/long (ava))
    比较方便进行算术运算的
    小数则是使用字符串来存
    意味着每次进行算术运算,都需要把字符串转成小数,进行运算,结果再转回字符串保存

2.典型使⽤场景  

2.1 作为缓存

  • 整体的思路:
  • 应用服务器访问数据的时候,先查询 Redis.如果 Redis 上数据存在了,就直接从 Redis 取数据交给应用服务器不继续访问数据库了.
  • 如果 Redis 上数据不存在, 再读取 MySQL. 把读到的结果, 返回给应用服务器同时,把这个数据也写入到 Redis 中
  • Redis 这样的缓存, 经常用来存储"热点"数据(高频被使用的数据.)
  • 热点数据这个定义方式,结合业务场景有很多种方式的.
  • 刚才上述描述的过程,相当于是把最近使用到的数据作为热点数据.
  • 上述策略,存在一个明显的问题:
    (暗含了一层假设: 某个数据一旦被用到了,那么很可能在最近这段时间就关被反复用到)
    随着时间的推移,肯定是会有越来越多的 key 在 redis 上访问不到
    从而从 mysql 读取并写入 redis 了.
    此时 redis 中的数据不是就越来越多嘛??
  • 解决方式:
  • 1)在把数据写给 redis 的同时,给这个 key 设置一个|过期时间.
    2)Redis 也在内存不足的时候,提供了 淘汰策略

2.2  计数功能

  • 许多应⽤都会使⽤ Redis 作为计数的基础⼯具,它可以实现快速计数、查询缓存的功能,同时数据可以异步处理或者落地到其他数据源
  • 例如视频⽹站的视频播放次数可以使⽤Redis 来完成:⽤⼾每播放⼀次视频,相应的视频播放数就会⾃增 1。
  • 实际中要开发一个成熟、稳定的真实计数系统,要面临的挑战远不止如此简单:防作弊、按照不同维度计数、避免单点问题、数据持久化到底层数据源等。

2.3 共享会话 

⼀个分布式 Web 服务将⽤⼾的 Session 信息(例如⽤⼾登录信息)保存在各⾃的服务器中,但这样会造成⼀个问题:出于负载均衡的考虑,分布式服务会将⽤⼾的访问请求均衡到 不同的服务器上,并且通常⽆法保证⽤⼾每次请求都会被均衡到同⼀台服务器上,这样当⽤⼾刷新⼀ 次访问是可能会发现需要重新登录,这个问题是⽤⼾⽆法容忍的。

Cookie(浏览器存储数据的机制
Session(服务器这边存储数据的机制)

基于键值对来存储

如果每个应用服务器,维护自己的会话数据,此时彼此之间不共享,用户请求访问到不同的服务器上,就可能会出现一些不能正确处理的情况了~~

升级操作!!!

2.4 手机验证码 

很多应⽤出于安全考虑,会在每次进⾏登录时,让⽤⼾输⼊⼿机号并且配合给⼿机发送验证码, 然后让⽤⼾再次输⼊收到的验证码并进⾏验证,从⽽确定是否是⽤⼾本⼈。为了短信接⼝不会频繁访问,会限制⽤⼾每分钟获取验证码的频率,例如⼀分钟不能超过 5 次。
  • 1.生成验证码.
    用户输入一下手机号 ~~
    点击获取验证码~~【限制(1分钟之内,最多获取 5 次验证码(主要还是怕用户频繁获取验证码,对于我们的服务器压力过大~~)或者每次获取验证码必须间隔 30 秒(验证码存在一个有效时间,此处假定是 5 分钟)~~】
  • 2.检查验证码.
    把短信收到的验证码这一串数,提交到系统中~~ 系统进行验证验证码是否正确~~

3.业务 

  • 业务其实就是一个公司/一个产品,是如何解决一个/一系列问题的~~
  • 解决问题的过程,就可以称为是"业务"
  • 一个公司/产品要想生存,要想赚钱, 就得能帮别人解决问题!
  • 不同的公司, 不同的产品,有不同的业务~~
    不同的业务就需要不同的技术作为支撑!!
  • 业务是非常重要的!!
    很多时候,优化技术解决不了的问题,可以通过优化业务来解决~~
  • 实际开发过程中,必须要结合实际业务场景,做一些技术上的调整~~

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

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

相关文章

【软件工程】【23.04】p1

关键字: 软件模型、提炼、加工表达工具、通信内聚、访问依赖、边界类交互分析、RUP核心工作流、首先测试数据流、软件验证过程、CMMI过程域分类工程类; 软件工程目的、功能需求是需求的主体、结构化方法、耦合、详细设计工具、类、类图、RUP采用用例技…

三十一、openlayers官网示例Draw Features解析——在地图上自定义绘制点、线、多边形、圆形并获取图形数据

官网demo地址: Draw Features 先初始化地图,准备一个空的矢量图层,用于显示绘制的图形。 initLayers() {const raster new TileLayer({source: new XYZ({url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/…

软件性能测试有哪些测试类型和方法?

软件性能测试是一种通过模拟真实用户使用情况,评估软件系统在各种压力和负载下的表现的测试方法。在今天这个讲究效率的时代,软件性能测试是不可或缺的一环。它能帮助开发人员和企业发现潜在的性能问题,提前优化改进,保证软件系统…

Xinstall助力实现App间直接跳转,提升用户体验

在移动互联网时代,App已成为我们日常生活中不可或缺的一部分。然而,在使用各类App时,我们经常会遇到需要在不同App之间切换的情况,这时如果能够直接跳转,将会大大提升用户体验。而Xinstall正是这样一款能够帮助开发者实…

设计模式19——观察者模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 观察者模式(Observ…

LearnOpenGL(二十)之立方体贴图

一、创建立方体贴图 首先,生成一个纹理,并将其绑定到纹理目标GL_TEXTURE_CUBE_MAP: unsigned int textureID; glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_CUBE_MAP, textureID); 因为立方体贴图包含有6个纹理&#xff0…

MySQL select for update 加锁

背景 当多人操作同一个客户下账号的时候,希望顺序执行,某个时刻只有一个人在操作;当然可以通过引入redis这种中间件实现,但考虑到并发不会很多,所以不想再引入别的中间件。 表结构 create table jiankunking_accoun…

光伏智慧化运营解决方案的应用和价值

在社会对新能源需求的不断扩大,光伏已经成为了可再生能源的重要组成部分,随着光伏电站数量和规模的不断扩大,相关企业和用户都就开始关注如何能够高效精准的进行电站管理,对此,鹧鸪云提出了光伏智慧化运营解决方案&…

短视频内容创意方法有哪些?成都科成博通文化传媒公司

短视频内容创意方法有哪些? 随着移动互联网的迅猛发展,短视频平台已成为人们日常生活中不可或缺的一部分。短视频以其短平快的特点,迅速吸引了大量用户。然而,面对海量的短视频内容,如何让自己的作品脱颖而出&#xf…

极验3逆向 JS逆向最新点选验证码 逆向分析详解

目录 声明! 一、请求流程分析 二、w参数生成位置 三、主要问题 四、结果展示 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 声明! 本文章中所有内容仅供学习交流…

SEO之核心关键词(二)

初创企业或者需要建站的朋友看以下两篇文章,谢谢支持: 我给不会敲代码又想搭建网站的人建议新手上云 (接上一篇。。。。) 4、查询搜索次数 经过自己及朋友、同事的头脑风暴和检查竞争对手网站之后,再到Google 关键词…

VSCODE中F12无法跳转,快捷键设置F12和insert混淆了

异常现象 最近用新电脑(华为)的时候,发现VSCODE经常按F12无法跳转,在快捷键设置当中,也是设置成功的; 此时重新去快捷键设置,会发现按 F12变为了Insert 解决方法 华为笔记本的Fx按键&#x…

(2020|ICML PMLR,线性 Transformer,核函数,RNN)Transformer 是 RNN

Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention 公众号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 线性 Transformers 3.1. Transformer 3.2.…

从华为云Redis到AWS ElastiCache的操作方法

越来越多企业选择出海,那么就涉及到IT系统的迁移,本文将详细介绍如何将华为云Redis顺利迁移到AWS ElastiCache的操作方法,九河云将为您介绍迁移步骤以帮助您顺利完成这一重要任务。 **1. 确定迁移计划** 在开始迁移之前,首先要制…

2024年上半年软件设计师试题及答案(回忆版)

目录 基础知识选择题案例题1.缺陷识别的数据流图2.球队、球员、比赛记录的数据库题3.用户、老师、学生、课程用例图4.算法题5.程序设计题基础知识选择题 树的节点,度为4的有4个,度为3的有8个,度为2个有6个,度为1的有10个,问有几个叶子结点 二位数组,一个元素2个字节,A0…

Niantic利用Meta Llama让数字生物栩栩如生

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【Ambari】Docker 安装Ambari 大数据单机版本

目录 一、前期准备 1.1 部署 docker 1.2 部署 docker-compose 1.3 版本说明 二 、镜像构建启动 2.1 系统镜像构建 2.2 安装包源镜像构建 2.3 kdc镜像构建 2.4 集群安装 2.5 容器导出为镜像 三、Ubuntu环境安装测试 3.1 环境准备 3.2 集群容器启动 一、前期准备 1.…

Golang协程和通道

文章目录 协程(goroutine)基本介绍GMP模型协程间共享变量 通道(channel)基本介绍channel的定义方式channel的读写channel的关闭channel的遍历方式只读/只写channelchannel最佳案例select语句 协程(goroutine&#xff0…

具有固定宽度的盒子:\makebox, \parbox

makebox \makebox 是 LaTeX 中的一个命令&#xff0c;用于创建一个具有固定宽度的盒子&#xff0c;并在该盒子内放置内容。这个命令可以用于控制文本或对象的位置和对齐。 语法如下&#xff1a; \makebox[<width>][<alignment>]{<content>}其中&#xff1…

C++ 常量和变量

1 常量 具体把数据写出来 2,3&#xff0c;4&#xff1b;1.2 1.3;“Hello world!”,“C” cout<<2015 常量&#xff1a;不能改变的量。 字面常量&#xff08;字面量、直接常量&#xff09;:直接写出的数据。 符号常量&#xff1a;用符号表示数据&#xff0c;但它一旦确定…