redis详解之redis的简介,初始认识,指令以及应用场景(和MySQL对比)未完

Redis简介


Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

1、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以 再次加载进行使用。

2、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset, hash等数据结构的存储。

3、Redis支持数据的备份,即master-slave模式的数据备份。

mysql简介


MySQL:2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用.

Redis的各种用途以及使用场景


一、为什么使用:

        1. 解决应用服务器的cpu和内存压力,减少数据库的压力

        2. 减少io的读操作,减轻io的压力。

        3. 关系型数据库的扩展性不强,难以改变表结构。

二、优点:

        1. nosql数据库没有关联关系,数据结构简单,拓展表比较容易

        2. nosql读取速度快,对较大数据处理快

三、适用场景:

        1. 数据高并发的读写

        2. 海量数据的读写

        3. 对扩展性要求高的数据

四、使用场景:

        1. 配合关系型数据库做高速缓存(DB(Oracle、Mysql等)+redis)

                (1)缓存高频次访问的数据,降低数据库io

        2.可以持久化特定数据。

                (1) 利用zset类型可以存储排行榜

                (2)利用list的自然时间排序存储最新n个数据

        3.redis中键的生存时间:缓存的数据有效时间

                (1)限时的优惠活动信息

                (2)网站数据缓存(对于一些需要定时更新的数据,例如:积分排行榜)

                (3)手机验证码

                (4)限制网站访客访问频率(例如:1分钟最多访问10次)

                  (5)点赞

MySQL的各种用途以及使用场景

1  web网站系统

   Web站点是mysql最大的客户群,也是mysql发展史上最为重要的支撑力量。Mysql之所以成为web站点开发者们最青睐的数据库管理系统,是因为mysql数据库的安装配置都非常简单,其使用过程中的维护也不像多大型商业数据库管理系统那么复杂,而且性能出色。还有一个非常重要的原因,就是mysql是开放源代码的,完全可以免费使用。

2 日志记录系统

  Mysql数据库的插入和查询非常高效,如果设计得较好,在使用myISAM存储引擎的时候,两者可以做到互不锁定,具有很高的并发性能。所以,对需要大量插入和查询日志记录的系统,比如处理用户的登录日志、操作日志等,都是非常适合的应用系统。

3 数据仓库系统

通过mysql的简单复制功能。可以很好地将数据从一台主机复制到另外一台,不仅仅在局域网内,在广域网同样可以复制。当然,很多人可能会说,其他数据库同样也可以做到,不是只有mysql有这样的功能。确实,很多数据库同样能做到,但是mysql是免费的,其他数据库大多是按照主机数量或cpu数量来收费的,当我们使用大量的pc server的时候,license费用相当惊人。目前基于比较成熟的数据仓库解决方案主要是mysql与infobright相结合的DW系统。

4 嵌入式系统

  嵌入式环境对软件系统最大的限制是硬件资源非常有限,在嵌入式环境下运行软件系统,必须是轻量级低消耗的软件。

redis和mysql查询的对比

redis底层是key-value的形式,直接通过key去查

而mysql是通过主键索引去查,主键索引以b+树的形式存储在内存当中

redis和mysql存储的对比

1.存储的位置不同,mysql主要是将数据存储在物理硬盘上的,redis主要是将数据存储在内存中的。因为这点就会产生许多不同。物理硬盘成本更低,断电也仍然存在,更加安全可靠,但是基于硬盘的io操作会更加耗时。而redis将数据存储在内存中,断电就消失,所以相对而言会不安全一些,而且内存的成本比硬盘更高,但是基于内存的读写效率会更高。
2.存储数据的形式不同,mysql数据是存储在表中,表中有许多的字段,每条记录里包含多个字段,每个字段有不同的含义。而redis存储数据是以键值对的形式,一个键对应一个值。

Redis常用的数据结构及实际应用场景

一、字符串(String)
字符串是Redis中最基本的数据结构,可以存储任意类型的数据,包括文本、数字等。它具有高效的读写操作和丰富的字符串处理函数,适用于各种场景。

1.1 使用场景:缓存
示例案例:缓存用户信息
在Web应用中,经常需要从数据库中读取用户信息,并在多次访问中重复使用。使用Redis的字符串结构可以将用户信息缓存在内存中,以提高读取性能。例如,将用户ID作为键,用户信息的序列化字符串作为值存储在Redis中,当需要获取用户信息时,先查询Redis缓存,如果缓存中不存在,则从数据库中读取,并将读取结果存储到Redis缓存中,以便下次快速获取。

1.2 使用场景:计数器
示例案例:统计文章浏览量
在许多网站中,需要统计文章的浏览量,用于评估文章的受欢迎程度。使用Redis的字符串结构可以方便地实现计数器功能。例如,将文章ID作为键,使用字符串结构存储文章的浏览量。每次有用户浏览文章时,通过对应的键对浏览量进行自增操作,从而实现简单高效的浏览量统计。

1.3 使用场景:分布式锁
示例案例:限制某个操作的并发执行
在分布式系统中,为了保证数据的一致性和避免冲突,常常需要使用分布式锁来控制对共享资源的访问。使用Redis的字符串结构可以实现简单的分布式锁。例如,将锁的名称作为键,对应的值作为标识,通过设置键值对的过期时间和原子操作来确保锁的互斥性和超时机制,从而实现分布式系统中的并发控制。

二、列表(List):
列表是Redis中的一个有序集合,可以存储多个字符串元素,支持从列表的两端进行元素的插入和删除操作,提供了强大的列表处理函数。

2.1 使用场景:消息队列
示例案例:异步任务处理
在许多应用中,需要处理大量的异步任务,使用消息队列可以有效地解耦任务的生产者和消费者。Redis的列表结构可以作为简单的消息队列来使用。例如,将任务的内容作为字符串添加到Redis列表的尾部,消费者从列表的头部获取任务进行处理,实现异步任务的分发和处理。

2.2 使用场景:最新消息排行
示例案例:社交媒体动态更新
在社交媒体应用中,需要及时地向用户展示最新的消息或动态,使用Redis的列表结构可以方便地实现最新消息的排行。例如,将每条消息的内容作为字符串插入到Redis列表的头部,限制列表的长度为固定值,当超过指定长度时,自动删除最旧的消息,从而保持最新消息的更新。

三、哈希表(Hash):
哈希表是Redis中的一个键值对集合,可以存储多个字段和对应的值,适用于存储对象属性、配置信息等复杂数据结构。

4.1 使用场景:存储对象属性
示例案例:用户个人信息管理
在许多应用中,需要存储和管理用户的个人信息,使用Redis的哈希表结构可以方便地实现用户信息的存储和访问。例如,将每个用户的个人信息存储在一个哈希表中,使用用户ID作为键,个人信息的各个属性(如姓名、年龄、性别等)作为字段,对应的值作为属性的值。通过哈希表操作可以快速获取、更新用户的个人信息。

4.2 使用场景:配置信息存储
示例案例:应用程序配置管理
在应用程序中,通常需要存储和管理各种配置信息,如数据库连接信息、缓存策略等。使用Redis的哈希表结构可以方便地存储和管理这些配置信息。例如,将配置项的名称作为字段,对应的值作为配置项的值,通过哈希表操作可以快速获取和更新配置信息。

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

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

相关文章

机器视觉在智能工厂中的核心作用

机器视觉技术在智能工厂中发挥着至关重要的作用,它不仅能够大幅提升生产效率,还能够显著提高产品质量。在选择机器视觉系统时,传统工业智能视觉设备因其紧凑的设计和高度集成化而受到青睐,而嵌入式机器视觉系统则因其配置的灵活性…

打印机项目需求

打印机项目需求 工作情况如下 我拿着一张带有二维码的纸张对准“打印机的摄像头”“打印机的摄像头”解析我的二维码假如解析后的二维码内容是:24030924发送一个http请求:https://…/getMessage?code24030924外部服务器会返回一个json数据{‘地址’:‘…

适配器模式已经在SpringMVC中的源码实现

介绍: 1、适配器模式将某个类的接口转换成客户端期望的另一种接口表示 2、目的:兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为:包装器。 3、属于:结构型模式 4、分3类:1&#xff0…

c语言:辛巳蛇宝男

辛巳蛇宝男 任务描述 2001年01月24日是农历辛巳蛇年的春节(大年初一),2002年02月11日是辛巳蛇年的除夕。赵中瑞的生日是2002年01月07日,所以我们称他为“辛巳蛇宝男”,赵中瑞想知道还有谁和他一样是“辛巳蛇宝男”,你帮他找出来…

leetcode 134.加油站

本题运用暴力的形式确实是可以的,但是在于暴力的话会非常的麻烦,需要在循环中不断的判断特殊条件。 这里需要用到贪心的算法: 首先我们可以想,既然我们已经知道了在当前加油站的加油量和从当前加油站到下一个加油站耗费的油量&a…

难❗️计算机考研408难度又破新高!

24年408考研,如果只用王道的复习资料,最多考100-120分 就是这么的现实,王道的资料虽然好,但是并不能覆盖全部的知识点和考点,而且24年的408真题考的很怪,总结起来就是下面这些特点: 偏&#x…

多线程求解5千万内有多少个质数?

单线程的解法 如下&#xff1a; #include <iostream>using namespace std;static bool isPrime(int num) {if (num 1){return false;}if ((num 2) || (num 3)){return true;}int mod num % 6; if ((mod ! 1) && (mod ! 5)){return false;//不是6的倍数1的&…

数电学习笔记——逻辑函数的代数法化简

目录 逻辑函数的化简原则 与或逻辑的化简 1、吸收律(1) ( ABABA) 2、吸收律(2)(3)( AABA&#xff1b;AABAB) 3、多余项定律( ABACBCABAC) 4、拆项法 5、添项法 逻辑函数的化简原则 (1)逻辑函数所用的门最少 (2)各个门的输入端要少 (3)逻辑电路所用的级数要少 (4)逻辑…

力扣——合并k个升序链表

文章目录 题目解析题目链接题目解析 算法讲解暴力解法利用优先级队列进行优化 代码解析 题目解析 题目链接 首先先把题目连接给大家奉上题目链接 题目解析 严格来说这个题目是非常容易理解的相信大家有了合并两个升序链表来理解这个题目就会非常容易理解了。这个题目的意思就…

linux网络通信(TCP)

TCP通信 1.socket----->第一个socket 失败-1&#xff0c;错误码 参数类型很多&#xff0c;man查看 2.connect 由于s_addr需要一个32位的数&#xff0c;使用下面函数将点分十进制字符串ip地址以网络字节序转换成32字节数值 同理端口号也有一个转换函数 我们的端口号位两个字…

华为OD面试分享8(2024年)

个人情况&#xff1a; 23毕业&#xff0c;24一战跨考ustc&#xff0c;觉G。 211本&#xff0c;目标院校。 知识储备&#xff1a; 仅限408 用leetcode刷过408排序算法 0项目经验 时间线&#xff1a; 23.12.27 投的简历。当时啥也不会啥也不知道&#xff0c;听入职的同学说…

python中stringprep --- 因特网字符串预备

在标识因特网上的事物&#xff08;例如主机名&#xff09;&#xff0c;经常需要比较这些标识是否&#xff08;相等&#xff09;。 这种比较的具体执行可能会取决于应用域的不同&#xff0c;例如是否要区分大小写等等。 有时也可能需要限制允许的标识为仅由“可打印”字符组成。…

vue中的slot

在Vue.js中&#xff0c;slot主要有以下几种类型&#xff1a; 默认插槽&#xff08;Default Slot&#xff09; 默认插槽是最常见的一种插槽类型&#xff0c;即没有名称的插槽。当父组件在子组件标签内部放置的所有内容都会被传递到子组件的默认插槽中。 子组件&#xff08;子组件…

【深入理解设计模式】模板方法模式

模板方法模式 模板方法模式是一种行为设计模式,它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。模板方法模式使得子类可以不改变算法结构的情况下,重新定义算法的某些特定步骤。 概述 在面向对象程序设计过程中&#xff0c;程序员常常会遇到这种情况&#xff1a;…

maven踩坑记

1, <relativePath /> 是否指定空仓库 2, setting.xml的jdk版本设置 或者在pom.xml中设置 3, idea单独打包需要指定build打包,springboot2.1.x版本可以直接打包,不需要配置其他信息 <build> <plugins> <plugin> <groupId>…

ESP8266开发板 + DHT11+远程开关+ThingsCloud+APP+QQ邮件推送告警

ESP32 是乐鑫公司推出的 WiFi 芯片&#xff0c;它不仅支持 WiFi 和 BLE&#xff0c;还可以作为可编程的 MCU&#xff0c;通过 Espressif IDF、Arduino 等框架编写固件&#xff0c;用于非常广泛的物联网场景。 这个教程我们分享如何在 Arduino IDE 中使用 ThingsCloud ESP SDK&…

Leetcode - 二分查找 | 在排序数组中查找元素的第一个和最后一个位置

题目一&#xff1a;二分查找 二分查找 看到这道题之后&#xff0c;很快就能想到暴力的解法&#xff0c;把数组遍历一遍就能找到答案&#xff0c;时间复杂度O(n)。 假设存在一批数字[1&#xff0c;1&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;7&#x…

蓝桥杯备战刷题five(自用)

1.数字三角形&#xff08;方向次数限制&#xff0c;动态规划&#xff09; //如果n为奇数时&#xff0c;最后必然走到最后行最中间的数&#xff0c;如果为偶数&#xff0c;则取中间两个数的最大值&#xff0c; //因为向左下走的次数与向右下走的次数相差不能超过 1 #include …

[ai笔记15] openAI官方提示词工程文档(图文重排版本)

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第15篇分享&#xff01; 最近在学习prompt提示词技巧&#xff0c;一番研究发现其实提示词的技巧并不是限定死的&#xff0c;所谓技巧和心法更像是教导我们如何更清晰、更结构化的大模型聊天工具进行沟通…

Python_三元表达式的四合一效果

Python_三元表达式的四合一效果 一、三元表达式二、四合一 一、三元表达式 Python中&#xff0c;三元表达式&#xff08;也称为条件表达式&#xff09;是一种简洁优雅的方式。 根据一个条件的结果返回两个值中的一个&#xff0c;语法如下&#xff1a; value_if_true if condi…