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

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.mzph.cn/news/841335.shtml

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

相关文章

Java的线程的使用

一.两种创建线程的方式 1.继承Thread类(匿名内部类) 创建方式: 1.定义一个子类继承Thread,重写run方法 2.创建子类对象, 3.调用子类对象的start方法(启动还是执行的run方法) 优缺点&#x…

公安知识学习与题目练习系统

一、系统概述 系统采用C用户小程序端、管理员Web端架构。通过UniappVueSpringboot主流技术实现。具体功能分为,管理侧:可以维护学习知识点、更新知识点详情;C端用户:可以学习知识点、在线刷题练习的功能。次系统在公安专业知识学习…

绘唐科技绘唐ai工具邀请码

绘唐科技绘唐ai工具邀请码 绘唐AI工具 https://qvfbz6lhqnd.feishu.cn/wiki/QBr4wOAz2ilF4NknrqbcoKRhn2c TensorFlow是一个开源的机器学习框架,由Google开发并维护。它提供了一个灵活且高效的接口,用于构建和训练各种机器学习模型。 TensorFlow的基本概念包括: 1. 张量(…

牛客网刷题 | BC99 正方形图案

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi学习了循环&am…

使用Java和XxlCrawler获取各城市月度天气情况实践

目录 前言 一、历史数据获取 1、关于天气后报 2、信息界面分析 二、数据的提取开发 1、PageVo的定义 2、属性定义 3、实际信息抓取 三、信息抓取调试以及可能的问题 1、信息获取成果 2、关于超时的问题 四、总结 前言 这篇文章主要来源于一个我们家小朋友的一个作业…

计算机基础概论:构筑数字社会的硬件基础与交互技术

🔥 个人主页:空白诗 文章目录 🎯 引言💻 什么是计算机?🌱 计算机的起源与发展🛠️ 电脑硬件的五大核心组件1. 中央处理器 (CPU) - 智慧的心脏2. 随机存取内存 (RAM) - 快速的记忆体3. 存储设备 …

安卓手机听书的各种免费方案

categories: Tips tags: Tips 写在前面 最近 Tencent 突然给微信读书上限制了, 普通用户一个月内仅能导入 3 本书, 这就让经常在 weread 上面听书入眠的我很无奈了. 折腾一下备选方案吧, 肯定是免费优先咯. 下面主要从支持 tts 的阅读器/ tts 免费中文引擎两个角度来讲. r…

Linux驱动(3)- LInux USB驱动层次

在Linux系统中,提供了主机侧和设备侧USB驱动框架。 从主机侧,需要编写USB驱动包括主机控制器驱动,设备驱动两类,USB 主机控制驱动程序控制插入其中的USB设备。 USB设备驱动程序控制该设备如何作为从设备与主机进行通信。 1.主机…

Attention相关问题笔试解析。

Attention相关问题笔试解析。 题目描述一:【选择】题目描述二:【简答】题目描述三:【代码】Scaled Dot-Product Attention:下面是用PyTorch实现的一个Attention机制的代码。这个实现包括一个简单的Scaled Dot-Product Attention机…

XX数字中台技术栈及能力

XX数字中台技术栈及能力 1 概述 XX数字中台面向数据开发者、数据管理者和数据应用者,提供数据汇聚、融合、治理、开发、挖掘、共享、可视化、智能化等能力,实现数据端到端的全生命周期管理,以共筑数字基础底座,共享数据服务能力…

Java核心: 脚本引擎和动态编译

静态语言和动态语言的在相互吸收对方的优秀特性,取人之长补己之短。脚本引擎和动态编译就是其中一个关键特性,扩展了Java的能力边界。这一篇我们主要讲两个东西: ScriptEngine,执行脚本语言代码,如JavaScript、Groovy JavaCompile…

插入排序(概述)

描述 插入排序为将一个数插入到以排序好的数组中 目录 描述 原理 特性 代码 原理 我们以升序为例 先将新数插入到数组的最后一位,记录下新数的值 从新数的位置开始往前遍历,如果前一位大于新数的值 则将当前位置修改为前一位的值 如果前一位小…

爬虫案例:有道翻译python逆向

pip install pip install requestspip install base64pip install pycrytodome tools 浏览器的开发者工具,重点使用断点,和调用堆栈 工具网站:https://curlconverter.com/ 简便请求发送信息 flow 根据网站信息,preview,respon…

php之sql代码审计

1 SQL注入代码审计流程 1.1 反向查找流程 通过可控变量(输入点)回溯危险函数 查找危险函数确定可控变量 传递的过程中触发漏洞 1.2 反向查找流程特点 暴力:全局搜索危险函数 简单:无需过多理解目标网站功能与架构 快速:适用于自动化代码审…

RK3588 opencv maliGPU图像拼接

1 左边图 图像大小:1920*1080 2右边图 图像大小:1920*1080 3拼接好的图像 图像大小&#xff1a;1920 *1080 4代码 #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp>//图像融合 #include <opencv2/xfeatures2d.…

基于SpringBoot和Mybatis实现的留言板案例

目录 一、需求及界面展示 二、准备工作 引入依赖 .yml文件相关配置 数据库数据准备 三、编写后端代码 需求分析 代码结构 Model Mapper Service Controller 前端代码 四、测试 一、需求及界面展示 需求&#xff1a; 1. 输入留言信息&#xff0c;点击提交&…

qt-C++笔记之使用QtConcurrent异步地执行槽函数中的内容,使其不阻塞主界面

qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面 code review! 文章目录 qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面1.QtConcurrent::run基本用法基本用法启动一个全局函数或静态成员函数使用 Lambda…

iOS--锁的学习

iOS--锁的学习 锁的介绍线程安全 锁的分类自旋锁和互斥锁OSSpinLockos_unfair_lockpthread_mutexpthread_mutex的属性 NSLockNSRecursiveLockNSConditionNSConditionLockdispatch_semaphoredispatch_queuesynchronizedatomicpthread_rwlock&#xff1a;读写锁dispatch_barrier_…

摸鱼大数据——Hive基础理论知识——Hive基础架构

1、Hive和MapReduce的关系 1- 用户在Hive上编写数据分析的SQL语句&#xff0c;然后再通过Hive将SQL语句翻译成MapReduce程序代码&#xff0c;最后提交到Yarn集群上进行运行 2- 大家可以将Hive理解成有道词典&#xff0c;帮助你翻译英文 2、Hive架构 用户接口: 包括 CLI、JDBC/…