SRE-Redis基本概念篇

redis的基本概念

1.1redis的基本概念

1.1redis的特点
1.1.1速度快
  • redis是把数据存放在内存中,从内存读取数据
  • redis采用了单线程的架构,避免了多线程的资源竞争问题
  • redis的源码非常简介,可以说是集性能和优雅与一身的代码
  • redis是用C语言实现的,而众所周知,C语言是“距离”操作系统最近的编程语言,执行速度快
1.1.2基于键值对的服务器

Redis的全程是Remote Dictionary Server,是集合了五种数据结构:字符串、列表、哈希、集合、有序集合,可以说五种数据结构都是围绕于key-value的形式,而value不仅仅可以是值,还能是具体的数据结构,这给予了Redis强大的变化性和灵活能力。

1.1.3丰富的功能
  • 提供了key过期的功能,这能运用于实现缓存
  • 提供了发布订阅的功能,可运用于消息队列,如celery
  • 支持lua脚本功能,当觉得Redis的命令实现功能不够时,就能利用lua来创建新的功能
  • 提供了简单的事务功能,不过不能支持回滚,但也能一定程度上保持事务的特性
  • 提供了pipeling功能,这样客户端可以将多条命令一次io,减少了网络的开销
1.1.4简单稳定

Redis的简单表现在两方面,一方面是在3.0版本之前源代码仅3万行,后面3.0加入了集群后代码加到了5万行,而5万行的源代码对于开发人员来说,要理解掌握它也显得并不是那么难;另一方面就是Redis是单线程的结构,这使得Redis的服务端处理模型变得简单,客户端开发也显得简单。
Redis虽然代码少,并且是单线程的,但是它又非常的稳定,很少会出现因为自身bug而down掉的情况。

1.1.5客户端语言多

Redis目前基本可以说和MySQL的知名度一样高了,太多的运用场景,太多的支持语言,常见的比如:java的jedis,Python的redis、PHP、C、C++等等。

1.1.6持久化

redis还支持两种方式的持久化,即将数据写入磁盘的方法,RDB和AOF,两种方法各有利弊

1.1.7主从复制

redis主数据库负责写,从数据库负责读

1.1.8高可用和分布式

redis从2.8版本后提供了高可用实现了redis sentinel,即redis的“哨兵机制”,可以保证redis节点的故障发现和自动转移,这实现了redis强大的分布式功能

1.2redis的使用场景
1.2.1缓存

缓存可以说是Redis最常用的功能之一了,合理的缓存不仅可以加快速度的访问速度,以及可以减少后端的压力(通常就是MySQL的压力)。可以说,一个合理的缓存可以极大地提高网站的性能。

1.2.2排行榜系统

利用Redis的列表和有序集合的特点,可以制作排行榜系统,而排行榜系统目前在商城类、新闻类、博客类等等,都是比不可缺的。

1.2.3计数器的应用

计数器的应用基本和排行榜系统一样,都是多数网站的普遍需求,如视频网站的播放计数,电商网站的浏览数等等,但这些数量一般比较庞大,如果存到关系型数据库,对MySQL或者其他关系型数据库的挑战还是很大的,而Redis基本可以说是天然支持计数器应用。

1.2.4消息队列系统

Redis支持发布订阅系统和阻塞队列的功能,可以充当一般的消息队列功能,虽然和专业的消息队列MQ比如RebbitMQ比起来还优点差距,但也基本够用了,比如celery的异步模型,Redis也是celery官方指定的2种队列的一种。

1.2.5 社交网络

对于社交网络来说,一般用户量是及其庞大的,此时的关系型数据库就捉襟见肘了,比如好有点赞、关注、推送等等功能,用Redis就能比较轻松地实现这些功能。

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

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

相关文章

漏洞原理RCE漏洞

远程代码执行漏洞 远程代码执行漏洞(Remote Code Execution,RCE)是一种安全漏洞,攻击者可以利用这种漏洞在远程服务器上执行任意代码。这意味着攻击者可以完全控制受影响的系统,并执行恶意操作。 远程代码执行漏洞通常存在于Web应用程序或服务器软件中。攻击者可以通过不正…

无需 Root 卸载手机预装软件,精简过的老年机又行了

基础准备 准备目标手机、USB 数据线、以及一台电脑。手机 USB 连接电脑,开发者选项中打开 USB 调试。(开发者选项默认隐藏,需要在关于手机中多次点击版本号才能调出)。 安装手机驱动,下载安装 ADB 工具包。 开始操作…

容器化搭建prometheus

前言 在之前的博客,我介绍了consonl对node的自动发现,kube-api的自动发现,今天介绍Prometheus的自动发现,也就是Prometheus的容器化部署。 实验部署 (1)创建node的yaml文件 mkdir /opt/prometheus/node vi…

elasticsearch优化总结

参考: Manuals | Docker Docs Run Elasticsearch locally | Elasticsearch Guide [8.12] | Elastic 让你的ES查询性能起飞:Elasticsearch 查询优化攻略“一网打尽” - 知乎

CRM系统的好处,以及如何选择合适的CRM系统?

任何足以拥有在线形象的企业都需要投资于CRM或客户关系管理软件。 任何小型企业都希望提高其利息和销售回报率,同时还希望加强客户关系和内部运营。 但并非所有的CRM软件都符合同样出色的标准。那些成功的应该是你的多合一工具,可以简化你的优先级并跟…

MySQL原理(一)架构组成(2)逻辑模块组成

总的来说,MySQL可以看成是二层架构,第一层我们通常叫做SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,query cache的处理等等&…

Spring Security简介

什么是Spring Security Spring Security是 Spring提供的安全认证服务的框架。 使用Spring Security可以帮助我 们来简化认证和授权的过程。 官网&#xff1a;Spring Security 对应的maven坐标&#xff1a; <!--security启动器--> <dependency><groupId>or…

C++大学教程(第九版)7.28 回文(递归和非递归实现)

文章目录 题目代码运行截图 题目 &#xff08;回文&#xff09;回文是一种字符串&#xff0c;正读和反读该字符都会得到同样的结果。回文的例子包括“radar”和able was ierei saw elba”等。请编写一个递归函数testPalindrome,如果一个字符串是回文&#xff0c;则返回true;否…

Python入门到精通(五)——Python数据容器

Python数据容器 前言 一、list 列表 1、定义 2、列表的下标索引 3、常用操作 4、列表的遍历 二、tuple 元组 1、定义 2、常用操作 三、str 字符串 1、定义 2、常用操作 四、容器序列的切片 五、set 集合 1、定义 ​编辑 2、常用操作 六、dict 字典、映射 1、…

Celery入门

Celery 官网&#xff1a;Celery - Distributed Task Queue — Celery 5.3.6 documentation Celery 官方文档英文版&#xff1a;Celery - Distributed Task Queue — Celery 5.4.0rc1 documentation Celery 官方文档中文版&#xff1a;Celery - 分布式任务队列 — Celery 3.1.…

AUTOSAR内存篇 -内存访问(MemAcc)

文章目录 功能介绍关键特性功能元素内存地址转换内存映射限制内存访问协调Job管理Job处理Job状态Job结果硬件特定的服务Burst模式支持通用锁机制动态内存驱动处理动态内存驱动激活服务调用模块处理

chronyd

chronyd https://chrony-project.org/doc/4.1/chrony.conf.html 无时钟源配置可参考 : Isolated networks 通过互联网同步的两台机器之间的典型精度在几毫秒内&#xff1b; 在 LAN 上&#xff0c;精度通常为数十微秒。 使用硬件时间戳或硬件参考时钟&#xff0c;亚微秒精度…

地图不仅引路:深探Java中Map接口的藏宝图

在Java编程中&#xff0c;处理键值对数据结构的需求十分普遍。Java集合框架&#xff08;Java Collections Framework&#xff09;提供了一个强大的接口Map&#xff0c;专门用来存储和操作一组键值对。本文将带你深入理解Java中的Map接口&#xff0c;包括它的工作原理、常用实现…

Linux网络编程——网络初识

文章目录 1. 网络协议初识1.1 为什么要有网络协议1.2 协议分层 2. OSI七层模型3. TCP/IP五层&#xff08;或四层&#xff09;模型4. 网络传输基本流程5. 以太网通信 1. 网络协议初识 1.1 为什么要有网络协议 早期计算机是独立的&#xff0c;如果要进行数据交互&#xff0c;就…

Jtti:怎么使用shell脚本查询数据库输出文件

在使用 Shell 脚本查询数据库并输出结果到文件时&#xff0c;通常会使用 sqlcmd&#xff08;对于 Microsoft SQL Server&#xff09;或 mysql&#xff08;对于 MySQL&#xff09;等命令行工具。下面是一个简单的示例&#xff0c;演示如何使用 Shell 脚本查询数据库并将结果输出…

超越人类上限的策划:百度输入法在候选词区域植入广告

一位 V2EX 用户最新发帖称&#xff0c;百度输入法的最新版本中引入了一个新功能&#xff0c;将广告直接植入到候选词区域。 具体表现为&#xff0c;当用户输入某些关键词时&#xff0c;候选词区域会显示与输入内容相关的广告链接。例如&#xff0c;用户输入“招商”时&#xf…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树(代码python实践)

文章目录 第5章 决策树—python 实践书上题目5.1利用ID3算法生成决策树,例5.3scikit-learn实例《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树 第5章 决策树—python 实践 import numpy as np import pandas as pd import matplotlib.pyplot as plt …

手动throw异常对象

手动throw异常对象 1.为什么需要手动抛出异常对象&#xff1f;2.如何理解"自动 vs 手动"抛出异常对象&#xff1f;3.如何实现手动抛出异常&#xff1f;4.注意点&#xff1a;throw后的代码不难执行&#xff0c;编译不通过。5.面试题&#xff1a;throw和throws的区别&a…

能源巨头施耐德电气遭遇勒索软件攻击

Bleeping Computer 网站消息&#xff0c;媒体透露能源管理和自动化巨头施耐德电气公司近期遭到 Cactus 勒索软件攻击&#xff0c;导致公司大量数据被盗。 施耐德电气是一家法国跨国公司&#xff0c;主要生产能源和自动化产品&#xff0c;从大卖场的家用电气元件到企业级工业控制…

后序遍历的线索化二叉树

对于后序遍历&#xff0c;需要明确&#xff0c;往往叶子结点&#xff0c;只能指向右子树&#xff08;如果右子树存在的情况&#xff09;&#xff0c;或者指向该结点&#xff08;因为这才是后序遍历&#xff09;&#xff0c;同样在进行退出到前一次递归的时候&#xff0c;我们要…