Redis(一):初始Redis

Redis基本介绍

Redis 的全称是 Remote Dictionary Server,Redis是一个开放源代码、内存数据结构存储系统,被广泛应用于缓存、消息队列、实时统计等场景。Redis使用C编写,支持多种数据结构,例如字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。Redis支持许多高级特性,例如事务处理(transactions)、Pub/Sub(发布/订阅)模式、Lua脚本、持久化、自动故障转移等。由于其高性能、易于使用和广泛的应用场景,Redis被广泛应用于Web应用程序、移动应用程序和其他各种领域。

redis 作为近年校招以来默认就是了解的一项技能,被诸多公司青睐,必有其过人之处:

一:Redis 特性

速度快

正常情况下,Redis 执行命令速度非常快,官方给的数字是读写性能达到:10万/秒,这里页与机器的性能有关,这里不讨论机器之间的区别,大概将redis 是速度快分为以下四点:(面试很容易问道)

  1.  Redis 的所有数据都是存放在内存中的,众所周知,访问内存的速度是访问硬盘的速度的 几百~几千倍
  2.  Redis 是使用C语言来实现的 ,而 C 语言是一种编译型语言,它的执行效率非常高,所以 Redis 的执行速度非常快。
  3.  Redis 使⽤了单线程模型,预防了多线程可能产⽣的竞争问题;这里说的单线程是指执行命令时的单线程,在 redis 6.0 版本中引入了多线程机制来处理网络和 IO
  4. 作者对于 Redis 源代码可以说是精打细磨,曾经有⼈评价 Redis 是少有的集性能和优雅于⼀⾝的开源代码。

基于键值对的数据结构服务器

⼏乎所有的编程语⾔都提供了类似字典的功能,例如:C++中的 map、Java中的 map、Python ⾥ 的 dict 等,类似于这种组织数据的⽅式叫做基于键值对的⽅式,与很多键值对数据库不同的是,Redis 中的值不仅可以是字符串,⽽且还可以是具体的数据结构,这样不仅能便于在许多应⽤场景的开发,同时也能提⾼开发效率。它提供的具体的五种数据结构,放到后面再介绍。

丰富的功能

除了 5 种数据结构,Redis 还提供了许多额外的功能:

  • 提供了键过期功能,可以⽤来实现缓存。
  •   提供了发布订阅功能,可以⽤来实现消息系统。
  •   ⽀持 Lua 脚本功能,可以利⽤ Lua 创造出新的 Redis 命令。
  •   提供了简单的事务功能,能在⼀定程度上保证事务特性。
  •   提供了流⽔线(Pipeline)功能,这样客⼾端能将⼀批命令⼀次性传到 Redis,减少了⽹络的开销。

简单稳定

Redis 的简单主要体现在三个方面:

一:redis 的源码简单,最早的版本呢只有两万行,redis 3.0 添加了集群机制也只有五万行,相对于其他数据库源码而言十分简单

二:redis 使用了单线程模型,不仅使redis 服务器处理模型变得简单,也使得客户端开发变得简单了

三: redis 不需要依赖于操作系统中的类库,redis 自己实现了事件处理的相关操作功能

但与简单相对的是 Redis 具备相当的稳定性,在⼤量使⽤过程中,很少出现因为 Redis ⾃⾝ BUG
⽽导致宕掉的情况。

客⼾端语⾔多

redis 提供了简单的 TCP 通信协议,很多编程语言可以很方便的接入到 redis ,并且由于 redis 收到广大社区和公司的认可,支持 reids的客户端也非常多,几乎覆盖了主流的编程语言。 

持久化(Persistence)

由于数据存放在内存中,这样看来数据是不安全的,一旦断电或者机器故障,重要数据就会丢失,但是 reids 提供了两种持久化方式:AOF 和 RDB ,可以将内存中的数据保存在硬盘中,这样就保证了数据的课持久性,后续会重点介绍。

主从复制 (Replication)

Redis 提供了复制功能,实现了多个相同的数据 Redis 副本,主服务器负责写,从服务器负责读;主从复制功能是分布式 redis 的基础

 高可用(High Availability)和分布式(Distributed)

Redis 提供了⾼可⽤实现的 Redis 哨兵(Redis Sentinel),能够保证 Redis 结点的故障发现和故
障⾃动转移。也提供了 Redis 集群(Redis Cluster),是真正的分布式实现,提供了⾼可⽤、读写和容量的扩展性。

二:Redis 使用场景

1. 缓存(Cache)

这是 reids 使用最多的场景,基本上所有的大型网站都在使用 redis,合理的使用缓存加速数据的访问速度,而且能够有效的降低后端服务器的压力。redis 提供了键过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。

2. 排行榜系统

redis 提供了列表和有序集合的结构,这些数据结构可以很方便的构建出各种排行榜,例如:按照热度排名的排行版,按照发布时间的排行榜等等

3. 消息队列

其实,redis 最开始是作为一个消息队列出现的,redis 提供了发布订阅和阻塞队列的功能,但是只能对于一般的消息队列功能满足,无法和其他成熟的消息队列一教高下;但最后使用 redis 做缓存却火了起来。

4. 计数器应用

通过 Redis 的计数器和有序集合,可以实时统计用户的访问量、点赞数、评论数、转发数等指标

redis 还可以作为 session 存储,将 session 存储在 reids 中,等等.......

redis 的基本介绍就到这里,下一章来讲讲redis 常见数据结构类型。

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

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

相关文章

【ArcGIS Pro微课1000例】0036:栅格影像裁剪与提取(矢量范围裁剪dem高程数据)

本实验讲解在ArcGIS Pro中进行栅格影像裁剪与提取(矢量范围裁剪dem高程数据)的方法。DEM、DOM、DSM等栅格数据方法也可以实现。 文章目录 一、加载实验数据二、裁剪工具的使用1. 裁剪栅格2. 按掩膜提取一、加载实验数据 加载配套实验数据包中的0036.rar中的dem数据和矢量裁剪…

jconsole的基本使用和死锁的检测

jconsole的基本使用和死锁的检测 因为jconsole是JDK自带的,所以安装了JDK就可以直接打开了。 1. 打开方式 cmd命令行打开:输入jconsole,然后按Enter JDK安装目录,bin目录下,双击即可打开 选择一个进程然后打开 可…

C语言字符串

字符串 字符串字面量 字符串字面量是用一对双引号括起来的字符序列。 例:"When you come to a fork in the road,take it." 延续字符串字面量 如果发现字符串字面量太长而无法放置在单独一行以内,只要把第一行用字符 \ 结尾,那…

深入解析Selenium动作链:精通点击、拖拽、切换等操作

背景: 一些交互动作都是针对某个节点执行的。比如,对于输入框,我们就调用它的输入文字和清空文字方法;对于按钮,就调用它的点击方法。其实,还有另外一些操作,它们没有特定的执行对象&#xff0…

中国信通院王蕴韬:从“好用”到“高效”,AIGC需要被再次颠覆

当下AIGC又有了怎样的颠覆式技术?处于一个怎样的发展阶段?产业应用如何?以及存在哪些风险?针对这些问题,我们与中国信通院云计算与大数据研究所副总工程师王蕴韬进行了一次深度对话,从他哪里找到了这些问题…

C#中的警告CS0120、CS0176、CS0183、CS0618、CS8600、CS8602、CS8604、CS8625及处理

目录 一、CS0120 二、CS0176 1.解决前 2.解决后 3.解决办法 三、CS0183 四、CS0618 五、CS8600 六、CS8602 七、CS8622 1. 解决前: 2. 解决后: 3.解决方法: 八、CS8604和CS8625 一、CS0120 严重性 代码 说明 项目 文件 行…

电路 buck-boost相关知识

BUCK-BOOST 文章目录 BUCK-BOOST前言一、DC-DC工作模式电容电感特性伏秒积平衡原理 二、BUCK电路三、BOOST电路四、BUCK-BOOST电路总结 前言 最近需要用到buck-boost相关的电路知识,于是便写下这篇文章复习一下。 一、DC-DC 在学习buck-boost电路之前我们先来看一…

邮件泄密案例分析

近日,一起令人震惊的事件在美军方内部引发了广泛关注。据报道,美军方意外将数百万封包含敏感信息的邮件发至非洲国家马里。这些邮件涉及的内容十分广泛,包括军事行动计划、人员部署、战术策略等,甚至还有部分涉及国家安全和战略决…

前缀和——238. 除自身以外数组的乘积

文章目录 🍷1. 题目🍸2. 算法原理🍥解法一:暴力求解🍥解法二:前缀和(积) 🍹3. 代码实现 🍷1. 题目 题目链接:238. 除自身以外数组的乘积 - 力扣&a…

代码随想录算法训练营第五十八天|739. 每日温度、496. 下一个更大元素 I

第十章 单调栈part01 739. 每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用…

小程序项目:springboot+vue基本微信小程序的学生健康管理系统

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时…

C++ Qt QDataStream用法介绍

作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 基本使用QDataStream写入数据QDataStream读取数据数据流版本错误处理复杂类型自定义类型示例注意事项Qt中QDataStream 提供了一种与平台无关的方式来序列化二进制数据。这意味…

武汉教育E卡通学生证照片尺寸要求及证件照集中采集方法

”武汉教育E卡通“电子学生证旨在数字化中小学生身份,提供通用的教育卡,实现身份认证的电子化、权威化和集成化。校内一卡通系统包括刷卡考勤、电子班牌、图书借阅等,全面记录学生在校业务。同时,采集社会通行、实践活动等数据&am…

vue子组件修改prop的值

1.通过sync修饰符配合$emit&#xff0c;update实现 父组件&#xff1a; <template><child-view :num.sync"num"></child-view> </template> <script>import childView from ./assembly/childexport default {components: {childView…

PTA 密接判定v1(close_contact1)

Omicron变种病毒传染性太强了&#xff0c;城市屡屡破防。封闭在家的我决定为防疫做点事&#xff1a;帮助筛选密切接触、次密切接触人员。 网格员提供了一些小区的风险时段内的接触记录、确诊人员&#xff0c;需要判断人员的风险分类&#xff1a; A类&#xff1a;疑似病例、临床…

Redis大key与热Key

什么是 bigkey&#xff1f; 简单来说&#xff0c;如果一个 key 对应的 value 所占用的内存比较大&#xff0c;那这个 key 就可以看作是 bigkey。具体多大才算大呢&#xff1f;有一个不是特别精确的参考标准&#xff1a; bigkey 是怎么产生的&#xff1f;有什么危害&#xff1f;…

Redis数据备份和还原

Redis SAVE 命令用于创建当前数据库的备份文件&#xff0c;文件名默认为dump.rdb。备份数据库数据可以增强对数据的保护&#xff0c;提升数据的安全性。当数据不小心丢失或者被删除时&#xff0c;我们就可以通过相应的操作进行数据恢复。本节介绍 Redis 的数据备份和数据还原操…

Android RGB转YUV的算法

将 ARGB&#xff08;Alpha-Red-Green-Blue&#xff09;颜色空间转换为 YUV&#xff08;亮度-色度&#xff09;颜色空间的常用算法有以下几种&#xff1a; 矩阵转换法 使用预定义的转换矩阵将 RGB 值转换为 YUV 值。其中&#xff0c;Y 表示亮度&#xff0c;U 和 V 表示色度。这…

MySQL表的操作『增删改查』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; MySQL 学习 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 &#x1f381;软件版本&#xff1a; MySQL 5.7.44 文章目录 1.创建表1.1.创建时指定属性 2.查看表2.1.查看表结构2.2.查看建表信息…

【SpringCloud】为什么选择微服务?

一般的平台会遇到的问题&#xff1a; 服务配置复杂。基础服务多&#xff0c;服务的资源配置复杂&#xff0c;传统方式管理服务复杂 服务之间调用复杂。检索服务、用户中心服务等&#xff0c;服务之间的调用复杂&#xff0c;依赖多 服务监控难度大。服务比较多&#xff0c;…