Redis

Redis7系列:Redis对决RedisStack Redis 是一个开源的内存数据库,以高性能、低延迟著称,支持基础数据结构(如字符串、哈希、列表、集合、有序集合等),常用于缓存、消息队列、实时数据处理等场景。Redis Stack 是 Redis 的扩展版本,整合了 Redis 核心数据库与多个高级功能模块(如全文搜索、JSON 文档存储、图数据库、时间序列等),提供“一站式”解决方案,简化了复杂数据场景的开发。 阅读详情

1.Redis是一个开源的底层使用C语言编写的key-value存储数据库。
数据类型(原子性的操作):string(字符串)、hash(哈希)、list(列表)、set(无序集合)、zset(sorted set:有序集合)

2.应用场景

  • 缓存数据
  • 消息队列

相当于消息订阅系统,比如ActiveMQ、RocketMQ。如果对数据有较高一致性要求时,还是建议使用MQ)

  • 计数器

比如统计点击率、点赞率,redis具有原子性,可以避免并发问题

  • 电商网站信息

大型电商平台初始化页面数据的缓存。比如去哪儿网购买机票的时候首页的价格和你点进去的价格会有差异。

  • 热点数据

比如新闻网站实时热点、微博热搜等,需要频繁更新。总数据量比较大的时候直接从数据库查询会影响性能

3.缓存的作用:

当数据继续增大我们需要利用主从复制技术来达到读写分离

数据库层直接与缓存进行交互,如果缓存中有数据直接返回客户端,如果没有才会从MySql中去查询。从而减小了数据库的压力,提升了效率。

客户端-->数据库层-->缓存-->mysql

4.Redis数据类型的应用场景

String

字符串是最常用的数据类型,他能够存储任何类型的字符串,包括二进制、JSON化的对象、甚至是base64编码之后的图片。在Redis中一个字符串最大的容量为512MB

Hash

常用作存储结构化数据、比如论坛系统中可以用来存储用户的Id、昵称、头像、积分等信息。如果需要修改其中的信息,只需要通过Key取出Value进行反序列化修改某一项的值,再序列化存储到Redis中,Hash结构存储,由于Hash结构会在单个Hash元素在不足一定数量时进行压缩存储,所以可以大量节约内存。

List

List的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis 内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。另外,可以利用 lrange 命令,做基于 Redis 的分页功能,性能极佳,用户体验好。

Set

set 对外提供的功能与 list 类似是一个列表的功能,特殊之处在于 set 是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,这个时候就可以选择使用set。

ZSet

可以按照某个条件的权重进行排序,比如可以通过点击数做出排行榜的数据应用。

5.Redis缓存的数据保持最终一致性

6.Redis存储数据可以设置他的过期时间
Redis过期删除机制:

Redis过期删除采用的是定期删除,默认是每100ms检测一次,遇到过期的key则进行删除,进行随机检测。对于漏网之鱼:当我们去读/写一个已经过期的key时,会触发Redis的惰性删除策略,直接回干掉过期的key。

内存淘汰是指用户存储的一部分key是可以被Redis自动的删除,从而会出现从缓存中查不到数据的情况。

缓存击穿:缓存只是为了缓解数据库压力而添加的一层保护层,当从缓存中查询不到我们需要的数据就要去数据库中查询了。如果被黑客利用,频繁去访问缓存中没有的数据,那么缓存就失去了存在的意义,瞬间所有请求的压力都落在了数据库上,这样会导致数据库连接异常。

如何避免缓存击穿:

1、后台设置定时任务,主动的去更新缓存数据。这种方案容易理解,但是当key比较分散的时候,操作起来还是比较复杂的

2、分级缓存。比如设置两层缓存保护层,1级缓存失效时间短,2级缓存失效时间长。有请求过来优先从1级缓存中去查找,如果在1级缓存中没有找到相应数据,则对该线程进行加锁,这个线程再从数据库中取到数据,更新至1级和2级缓存。其他线程则直接从2级线程中获取

3、提供一个拦截机制,内部维护一系列合法的key值。当请求的key不合法时,直接返回。

缓存雪崩:指缓存由于某些原因(比如 宕机、cache服务挂了或者不响应)整体crash掉了,导致大量请求到达后端数据库,从而导致数据库崩溃,整个系统崩溃,发生灾难-->(缓存击穿)。

如何避免雪崩:

1、给缓存加上一定区间内的随机生效时间,不同的key设置不同的失效时间,避免同一时间集体失效。

2、和缓存击穿解决方案类似,做二级缓存,原始缓存失效时从拷贝缓存中读取数据。

3、利用加锁或者队列方式避免过多请求同时对服务器进行读写操作。

 

7.Redis持久化:

Redis 将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用截图的方式,将内存中的数据不断写入磁盘;或使用类似 MySQL 的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。

8.Redis的缺点:

  • 由于是内存数据库,所以单台机器存储的数据量是有限的,需要开发者提前预估,需要及时删除不需要的数据。
  • 当修改Redis的数据之后需要将持久化到硬盘的数据重新加入到内容中,时间比较久,这个时候Redis是无法正常运行的。
【Redis】Redis入门 redis入门基础、Linux下安装redis 阅读详情

相关推荐

Redis Redis介绍、安装 - Redis客户端

目录redis是什么,他的应用场景是什么?Redis的一些主要特点和应用场景:redis的官方网站:Redisredis是键值型数据库:(也就是key-value模式)(跟python的字典很像)认识NoSQL?SQL和NoSQL的区别数据库结构之间的区别数据库关联之间的区别SQL查询和非SQL查询的区别事务上的差异总结认识Redis特征:一、安装Redis1、单机安装Redis(linux安装 – Centos7.9)1.1、安装Redis依赖(Redis是基于C语言编译的,因此首先需要安装Redis所需

m0_51274464的博客 1534

(转)Csredis 操作redis

使用CSRedisCore操作redis

wangzehong5200的专栏 1891

【Redis】Redis基础——Redis的安装及启动

GitHub上的大神编写了Redis的图形化桌面客户端,不过该仓库提供的是RedisDesktopManager的源码,并未提供windows安装包。# 利用redis-cli来执行 shutdown 命令,即可停止 Redis 服务,因为之前配置了密码,因此需要通过 -u 来指定密码。当然,在连接redis时指定密码,还能连接后使用 AUTH 指定用户名和密码,这里我没有用户名,直接指定密码就好了。2. 修改redis.conf文件中的一些配置,进入后,输入/,在输入内容回车就能搜索到了。

菜鸟的博客 4530

在C#中使用Redis

在C#中使用Redis 简单介绍下Redis的使用和WPF中的应用场景

代码改变世界 4000

遥感生态指数(RSEI)——四个指数的计算

遥感生态指数是在4个生态指数的基础上通过主成分变换得出的一个评价生态环境质量的指标。因此,第二部分就是要分别计算出这4个指数的值。 ①首先,是绿度指数的计算,一般用归一化植被指数(NDVI) NDVI=(NIR-Red)/(NIR+Red) 在Bandmath工具中输入NDVI计算公式 (float(b4-b3))/(b4+b3) 其中,b3、b4分别是红波段和近红外波段 ②其次,是湿度计算。 WET = c1B1 + c2B2 + c3B3...

qq_41978498的博客 9万+

随机森林文本分类

随机森林原理及代码实现 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录随机森林原理及代码实现前言一、集成算法是什么?二、随机森林是什么三、 数据预处理3.1 先来看一下我们的文本数据3.2 预处理3.3 统计评论情感值积极与消极的占比二、使用步骤参数介绍(4个)属性1.引入库2.参数调参方法总结 前言 提示:这里可以添加本文要记录的大概内容: 例如

m0_46579176的博客 5808

Redis缓存不一致的问题(五)

缓存不一致的情况有两种: Redis缓存中是旧值; 数据库中值是旧值; 缓存一致性需要保证的是,当缓存中有值的时候,数据库的值必须与缓存一致。 根据是否接收写请求,可以将缓存分为读写缓存和只读缓存。两种发生缓存不一致的情况不同,需要分开来应对。 在只读缓存中,新增数据会直接写到数据库中,不会操作缓存,所以不会出现缓存不一致。删改数据时,需要删除数据库和缓存中的数据,在删改数据库和缓存时,无论哪个先后,中间出现故障都会产生旧值,即缓存不一致的情况。 如何解决数据不一致 重试机制 可以将要删除的缓存值或者

keYuK0的博客 510

get_seed协议

【代码】get_seed协议。

a545958498的博客 911

不超卖实现

decr 命令在 Redis 中的主要好处包括: 原子性操作:decr 是一个原子操作,这意味着即使在高并发环境下,对于同一 key 的递减操作也是互斥的,不会出现竞态条件(race condition),保证了数据的一致性和完整性。在 Redisson 中,Bucket 类用于操作单个值的 Redis 键,其 trySet(V value) 方法尝试将桶(bucket)的值设置为给定值,如果 bucket 之前没有值,则设置成功并返回 true;//扣减库存(存的是总库存,为了加锁)

m0_75137040的博客 1311

什么是 SAP S/4HANA 的 VDM Layering Architecture 的 CDS Hierarchy View

当涉及SAP S/4HANA的CDS Hierarchy View时,我们正在谈论一种高级数据建模技术,用于构建层次结构化的数据视图,以支持树状和分层数据的处理和分析。CDS(Core Data Services)是SAP的一种数据建模和定义语言,而CDS Hierarchy View则是CDS的一个重要组成部分,用于处理层次数据,如组织结构、产品分类、地理区域等。首先,您可以使用CDS语言创建一个新的CDS Hierarchy View,定义产品分类的层次结构。您还可以定义其他与库存相关的属性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 390

Halcon 形态学 开发案例 (开运算opening(先腐蚀再膨胀)、闭运算closing(先膨胀再腐蚀))

算子方法:功能:使用用户自定义的结构元素对区域进行开运算参数: Region(输入参数) :输入区域 StructElement(输入参数) :结构元素(区域) RegionOpening(输出参数) :开运算后的区域功能:使用圆形结构元素对区域进行开运算参数: Region(输入参数) :输入区域 RegionOpening(输出参数) :开运算后的区域 Radius(输入参数) :圆形结构元素的半径功能:使用矩形结构元素对区域进行开运算。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1618

Redis之redis.conf详解

1、单位 units对大小写不敏感! 2、包含 3、网络 bind 127.0.0.1 #绑定的ip protected-mode yes #保护模式 port 6379 #端口设置 4、通用 daemonize yes #以守护进程的方式运行,默认是no,我们需要自己开启为yes! pidfile /var/run/redis_ 6379.pid # 如果以后台的方式运行,我们就需要指定一个pid文件! # Specify the server verbosity level

Java追求者的博客 336

大模型——Coze工作流实战:一键生成像素风格视频

本文介绍了如何利用Coze平台工作流生成像素风格心理学短视频的方法。通过创建工作流、设置变量节点、调用大模型生成文案、数据格式化处理、合成音频、生成字幕等步骤,最终实现从输入主题到生成完整视频的自动化流程。文章详细展示了每个节点的具体配置方法,包括提示词编写和数据处理脚本,为读者提供了完整的像素风格视频制作解决方案。

817

Redis(Redis基础,SpringCache,SpringDataRedis)

本文详细讲解了redis基础内容,以及Spring Cache,Spring Data Redis技术的使用

qq_49474843的博客 2940

TC397 EB MCAL开发从0开始系列 之 [13.1] Dma配置实战 -实现M2M数据传输(读存储写存储)

TC3XX TC397 MCAL DMA 从0搭建测试用例-实现M2M 存储到存储数据传输

yy九歌的博客 1913

[AI] 企业内网部署大模型的三种常见方案:从“能用”到“好用”的技术选型指南

企业内网部署大模型的三种方案解析:本地模型安全但门槛高,平台方案(如Dify)最平衡推荐,混合架构适合进阶需求。关键路径是渐进式演进,从快速验证到平台化建设,核心在于流程优化而非单纯选模型。数据安全、成本可控和工程落地能力是决策重点。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 770

【Redis】初识 Redis

本期内容主要介绍Redis是什么,认识 Redis,介绍 Redis 的特性以及 Redis 为什么快,并简单介绍了分布式系统。

爱编程爱运动的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Redis】Redis键值存储

首先要强调一点:Redis是key value类型的数据库,Redis所说的数据类型都是key value中的value的数据结构,而key都是字符串。在本文中,我们对Redis的键值存储进行了全面的概述和介绍。首先,我们了解了Redis的五大基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Zset(有序集合),并探讨了它们各自的特点和用法。

白晨的博客 2250

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Redis】Redis的启航之路:Ubantu操作系统下安装Redis

【Redis安装与配置指南】本文详细介绍了Redis数据库的安装步骤:通过apt获取安装包(Y确认安装),用netstat验证服务启动(默认6379端口)。重点讲解了配置文件修改:将IP从127.0.0.1改为0.0.0.0、关闭保护模式以允许远程连接,并重启服务生效。最后演示了使用redis-cli客户端连接服务器及ping测试连通性(返回PONG即成功)。全文提供完整命令行操作指引,适合Redis初学者快速搭建环境。

GGBond778的博客 1971

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Redis——Redis简介

Redis简介、Reids5新特性、基本数据类型:String、Hash、List、Set、Sorted Set、Redis HyperLogLog

码说芯语的博客 5579

【Redis】贰 —— Redis基本命令

本文对于Redis中的一些命令进行了介绍以及使用案例

2401_86777036的博客 3083

Redis:初识Redis

介绍了Redis的基本概念,在软件开发中的定位,以及安装方式

博客网站 https://async-area.com 2067

[redis系列] redis脚本

Redis Lua 脚本功能使得用户能够在 Redis 服务器端执行自定义的 Lua 脚本,从而实现更高效、更灵活的数据操作。Lua 脚本运行在 Redis 服务器内部,这意味着你可以减少客户端与服务器之间的通信开销,并且可以通过原子操作确保多个 Redis 命令的执行一致性。组合功能:Lua 脚本能够将 Redis 中的简单命令组合起来,从而实现复杂的业务需求,避免多次网络往返。数据操作原子性:通过 Lua 脚本,开发者可以在 Redis 中执行应用程序逻辑,对多个键进行条件更新。

深耕后端、偏爱架构,用代码与设计构建可靠系统 1678

Linux安装Redis以及Redis三种启动方式

也就是上面我们说的,窗口要一直打开。后台进程启动搞完之后,以后开启redis后,就可以去进行其他操作了(在src目录下 ./redis-server /opt/soft/redis-4.0.6/redis.conf启动redis)。此时Redis服务已经可以成功启动了,但是小问题来了,界面一直停留在Redis服务窗口中,按ctrl+c虽然可以屏蔽服务窗口,但是也会结束Redis服务。./redis-server代表要启动redis,后面一串代码进入redis.conf来开启redis,就是路径。

m0_74825466的博客 3813

【Redis】Spring使用Redis

Spring使用Redis

yj20040627的博客 1779
上一篇: 面试问题
下一篇: 牛客题目八
trytrylmt
博客等级 码龄9年 7粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值