redis 基础篇(redis 理解)
目录
redis 特性介绍
redis 的一些特性(优点)
1. 在内存中存储数据
2. 可编程的
3. 可扩展
4. 持久化
5. 支持集群
6. 高可用
redis 的应用场景
数据库
作缓存
会话存储
作消息队列
redis 不适合做的事情
redis 介绍
redis 客户端形态
命令行
图形化界面
基于 redis 的 api 自行开发客户端
redis 特点
redis 特性介绍
redis 实际上是一个 内存中存储数据的中间件。
用于作为数据库,用于作为数据缓存。
适应于分布式操作系统。
redis 的一些特性(优点)
1. 在内存中存储数据
MySql 主要是通过表来存储数据,而 redis 主要通过键值对来存储数据,MySql 是关系型数据库,而 redis 是非关系型数据库。
redis 的 key 都是 string, value 则是一些数据结构。
value 的类型:
-
string
-
hashes
-
lists
-
sets
-
sorted
-
sets
-
streams
-
...
上述的这些数据结构都可以用键值对类组织。
2. 可编程的
针对 redis 的操作,可以直接通过简单的交互式命令进行操作,也可以通过一些脚本的方式,批量执行的一些操作。
3. 可扩展
可以通过一些语言编写 redis 的扩展(本质就是一个动态链接库)
支持的语言:
-
C
-
C++
-
Rust
4. 持久化
redis 是把数据放在内存上的,但是内存上的数据是易失的,进程退出/系统重启就丢失了。
持久化的原理:
redis 会把数据也存储到硬盘上一份,但是主要是以内存为主,影片上的数据就相当于备份,如果重启就会将数据恢复到内存。
5. 支持集群
类似于分库分表,一个 redis 能存储的数据是有限的,所以就可以映入多个主机,部署多个 redis 节点,每个 redis 存储数据的一部分。
6. 高可用
高可用(备份),redis 支持“主存结构”,从节点就相当于主节点的备份。
对于 redis 的特性其实还有一个——快。
-
redis 的数据在内存,就比访问硬盘的数据库就快。
-
redis 的核心功能都比较简单, 核心功能就是简单操作内存中的数据结构。
-
从网络角度上,redis 使用了 IO 多路复用的方式(epoll)
-
redis 使用的是单线程模型(虽然更高版本的 redis 引入了多线程),这样的单线程模型,介绍了不必要的线程竞争开销。
redis 的应用场景
数据库
把 redis 当作数据库。
大多数情况下,我们数据库优先考虑的是大,但是还是有一些场景,考虑的是“快”。
作缓存
使用 MySql 存数据,大,慢,但是我们可以把热点数据拿出来放在 redis 中。
上面的两个 redis 的应用场景下: 1.存全量数据,这里的数据是不能随便丢的。 2.作缓存 redis 里面的数据是可以丢失部分的。
会话存储
redis 可以作会话存储。
为了是实现用户身份信息的保存,我们还是需要 session 来配合,session 存储在服务器里面, cookie 只是一个用户身份的标识。
所以为了方便,就可以把会话存储到 redis 里面,每一次用户就可以快速的进行身份识别。
这样做即使应用服务器重启了,用户的身份信息不会丢失。
作消息队列
这里的消息队列是一个服务器。
但是 redis 作为消息队列并不是很完美。
RabbitMQ, Kafka, RocketMQ.....作为消息队列是很好的。
redis 不适合做的事情
redis 不适合存储大规模数据~
redis 是一个使用内存存储数据的中间件。
一般被作为 内存数据库/缓存/消息队列来使用~
redis 介绍
-
redis 的客户端和服务器是用网络通信的
-
redis 的客户端和服务器可以在同一台主机上,如果在同一台主机上,那么就是使用本地环回。
-
redis 服务端不是只为了一个客户端提供服务。
-
redis 服务器(本体)负责提供存储和管理数据。
redis 客户端形态
命令行
redis-cli -h 127.0.0.1 -p 6379
上面就是 redis 客户端的登录方式
-
-h:表示登录的主机 ip
-
-p:表示端口号 port
图形化界面
(桌面程序,web 程序)
这个一般不常用。
基于 redis 的 api 自行开发客户端
就是使用编写代码来操作 redis,这个是最常用的。
redis 特点
redis 是比较快的,但是这里的快是和 mysql 比较的。
比如现在有一个单机系统,然后要存储一些数据, redis 是通过键值对来存储的,如果现在使用 map 和 redis 来比较,那么显然是redis 是比 map 直接操作内存慢的,redis 还是要通过网络,才能操作内存。
所及 redis 还是适应于分布式。
上述场景是否要引入 redis,还是要结合实际场景来确认。
引入 redis 的缺点:
-
慢!
优点:
-
即使应用服务器重启也不会影响存入的数据。
未来要扩展成分布式也是使用 redis 是更佳的。
相关文章:
redis 基础篇(redis 理解)
目录 redis 特性介绍 redis 的一些特性(优点) 1. 在内存中存储数据 2. 可编程的 3. 可扩展 4. 持久化 5. 支持集群 6. 高可用 redis 的应用场景 数据库 作缓存 会话存储 作消息队列 redis 不适合做的事情 redis 介绍 redis 客户端形态 命…...
C++系列-函数重载
C系列-函数重载 函数重载函数重载的条件函数重载注意事项引用作为重载函数重载遇到默认参数 函数重载 函数名可以相同, 提高复用性 函数重载的条件 同一个作用域下函数名相同函数参数不同 – 参数个数不同 – 参数顺序不同 – 参数类型不同不可以使用返回值作为重…...
Linux scp命令
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。 scp [可选参数] file_source file_target 参数说明: -1: 强制scp命令使用协议ss…...
vue 简单实验 v-bind 变量与html属性绑定
1.代码 <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <div id"bind-attribute"><span v-bind:title"message">鼠标悬停几秒钟查看此处动态绑定的提示信息!</sp…...
114.(cesium篇)cesium去掉时间轴并用按钮控制运动
地图之家总目录(订阅之前必须详细了解该博客) 完整代码工程包下载,运行如有问题,可“私信”博主。效果如下所示: cesium去掉时间轴并用按钮控制运动 下面献上完整代码,代码重要位置会做相应解释 <html lang...
2023年清洁能源与智能电网国际会议(CCESG 2023)
会议简介 Brief Introduction 2023年清洁能源与智能电网国际会议(CCESG 2023) 会议时间:2023年 召开地点:中国南宁 大会官网:CCESG 2023-2023 International Joint Conference on Clean Energy and Smart Grid 由IASED主办, CoreS…...
RISC-V中国峰会 | 256核服务器高调亮相,谁与争锋?
8月23日,第三届RISC-V中国峰会(RISC-V Summit China 2023)在北京香格里拉饭店正式开幕,来自世界各地的行业精英汇聚一堂,为RISC-V生态系统建言献策,凝心聚力! 中国工程院院士倪光南、RISC-V国际…...
树套树小结
树状数组套权值线段树,实现过程类似主席树,采用动态开点实现 https://www.luogu.com.cn/problem/P3380 树状数组部分 线段树部分...
android 解决sdk代码冲突
1. 在引用sdk的外面添加排除sdk implementation ("androidx.core:core-ktx:1.9.0"){exclude (group:androidx.appcompat, module:appcompat)} 2. 全局指定对应的sdk版本 configurations.all {resolutionStrategy.eachDependency { DependencyResolveDetails detail…...
C++逆天合集
1.基础知识 1. 创建 编译 运行 touch a.cpp gedit a.cpp g -o a.out a.cpp ./a.out 2. a 等价于a a 1 3. ::运算符 4. 类型转换 赋给无符号类型超出其表达范围时,对总数取模得余数 赋给带符号类型超出其表达范围时,结…...
stm32之15.超声波与灯光功能一起实现(进阶)
主函数代码修改 --------------------- 源码 int main(void) {uint32_t t0;uint32_t distance;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);led_init();key_init();/* 初始化串口1波特率为115200bps,若发送/接收数据有乱码,请检查PLL */usart1_ini…...
美创科技荣获“2023年网络安全优秀创新成果大赛—杭州分站赛”两项优胜奖
近日,由浙江省互联网信息办公室指导、中国网络安全产业联盟(CCIA)主办,浙江省网络空间安全协会承办的“2023年网络安全优秀创新成果大赛-杭州分站赛”正式公布评选结果。 经专家评审,美创科技报名参赛的解决方案—“医…...
使用gdb+gdbserver远程调试aarch64平台程序
嵌入式开发板子(aarch64)程序编译(在ubuntu远程调试) 1.支持coredump, 并且设置coredump路径等 //生成文件路径与格式 echo /data/coredump/%e-%t-%p-%c.core > /proc/sys/kernel/core_pattern // 设置开启coredump 并设置显示文件大小 void set_coreDumpAvalib(const rl…...
【CesiumJS入门】(9)获取地表两点的距离及中心点——EllipsoidGeodesic
前言 一般情况下,我们可以直接通过Cesium.Cartesian3.distance(left, right)来获取两点的距离,但获取到的是两点的直线距离: const start new Cesium.Cartesian3.fromDegrees(113,23); const end new Cesium.Cartesian3.fromDegrees(113,…...
OLED透明屏介绍:领先科技的革命性创新
OLED透明屏作为一项领先的科技创新,在产品设计和用户体验方面展现出了巨大的潜力。 在这篇文章中,尼伽将介绍OLED透明屏的定义、特点、应用领域以及未来发展趋势,以帮助您全面了解OLED透明屏。 一、OLED透明屏的定义与原理 1.1 定义&#x…...
ESXI补丁更新
一、准备工作 VMware 产品的补丁可从https://customerconnect.vmware.com/patch下载 使用 vSphere Web Client 将补丁上载至 ESXi 主机中的数据存储。(注意:VMware 建议在数据存储中创建一个新目录并将补丁文件上载至此目录。) 迁移主机上正…...
【每日易题】数组下标的逆天用法——你见过把数组存储的值当作数组下标来解题的吗?
君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,在最近是刷题中,遇到了一种非常新奇的数组下标的用法,今天想来给大家分享一下这种神奇的思路和方法,希望能在你遇到类似问题时能通…...
mysql基本操作
常用的数据类型 int 整型用于定义整数类型的数据float 单精度浮点4字节32位 准确表示到小数点后六位 double 双精度浮点8字节64位双精度浮点8字节64位char 固定长度的字符类型用于定义字符类型数据varchar可变长度的字符类型 text文本image图片de…...
vue组件的使用
一、首先要穿件组件构造器对象,或者导入组件 1..在本部分注册组件其中组件为子组件 2.在本部分注册组件 二、而后注册组件 1.在本部分注册组件其中组件为子组件 2.在本部分注册组件 三、 接着,使用组件。 1.在本部分注册组件其中组件为子组件 其中v-i…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...
