Redis

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

什么是Redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
1、 字符串类型
2、 散列类型 hash被(string和json)取代了
3、 列表类型
4、 集合类型
5、 有序集合类型。

概述

在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要说明的是,这些操作的时间复杂度为O(1),即常量时间内完成次操作。Set可包含的最大元素数量是4294967295。
和List类型不同的是,Set集合中不允许出现重复的元素,这一点和C++标准库中的set容器是完全相同的。换句话说,如果多次添加相同元素,Set中将仅保留该元素的一份拷贝。和List类型相比,Set类型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计算操作,如unions(并集)、intersections(交集)和differences(差集)。由于这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络IO开销。

redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用,变化不大)
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)
分布式集群架构中的session分离。【第二个大型电商项目中使用】

Redis中server命令

Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )
Redis Flushdb 命令用于清空当前数据库中的所有 key。
SHUTDOWN 命令是关闭redis服务
数据类型的使用方法 (String、list、hash、set、zset)

常用命令

l hset key field value:为指定的key设定field/value对(键值对)
l hmset key field value [field2 value2 …]:设置key中的多个filed/value
l hget key field:返回指定的key中的field的值
l hmget key fileds:获取key中的多个filed的值
l hgetall key:获取key中的所有filed-vaule
l hdel key field [field … ] :可以删除一个或多个字段,返回值是被删除的字段个数
l lpush key values[value1 value2…]:在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。
l lrange key start end:获取链表中从start到end的元素的值,start、end从0开始计数;也可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推…
l lpop key:返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若key存在,则返回链表的头部元素。
l rpop key:从尾部弹出元素。
l rpushx key value:在该list的尾部添加元素
l lset key index value:设置链表中的index的脚标的元素值value(执行的是替换该位置的数据),0代表链表的头元素,-1代表链表的尾元素。操作链表的脚标不存在则抛异常。
l rpoplpush resource destination:将链表中的尾部元素弹出并添加到头部。

Redis 持久化(RDB,AOF)

1.为什么要持久化:
Redis是内存数据库。他将自己的数据库存储状态存储在内存中,如果不想方法把数据库状态保存到磁盘中,一旦服务进程退出,服务器中的数据库状态也将消失不见。
2.解决方法:redis提供了RDB持久化功能,这个功能将redis内存中的数据库状态保存到磁盘中,避免数据意外丢失。
3.RDB持久化:
RDB持久化功能产生一个RDB文件(经过压缩的二进制文件)可还原成数据库状态。
保存在硬盘里,存在即可还原。
3.3保存条件
[redis]$ more /usr/local/redis/conf/redis.conf
save 900 1 #服务器900秒内,对数据库至少修改一次
save 300 10 #服务器300秒内,对数据库至少10次修改
save 60 10000 #服务器60秒内,对数据库至少10000次修改
dbfilename “dump.rdb” #持久化文件名称
dir "/data/dbs/redis/ #持久化数据文件存放的路径
满足任意三个条件之一,bgsave就会执行。
Value:1.字符串对象,2.列表对象3.集合对象,4.哈希表对象5.有序集合对象
扩展:1.不包含任何键值对的RDB文件
2包含字符串键的RDB文件
3包含过期时间的字符串键的RDB文件
4包含集合键的RDB文件

4.简单介绍AOF持久化和AOF文件与RDB持久化的区别.:

因为AOF文件的更新频率比RDB文件的更新频率高,所以:
如果服务器开启了AOF持久化功能,那么服务器会优先使用AOF文件来还原数据库状态。
只有在AOF持久化功能处于关闭状态的时候,服务器才会使用RDB文件来还原数据库状态。
.AOF
默认情况下,AOF是处于关闭状态的
只要当前指令会修改Redis中的数据,那么Redis就会将这条命令存储到硬盘中,比较消耗资源,当然我们也可以通过固态硬盘等硬件来提升性能
Redis会遇到的问题以及解决方案

1.缓存雪崩

发生场景 :当Redis服务器重启或者大量缓存在同一时期失效时,此时大量的流量会全部冲击到数据库上面,数据库有可能会因为承受不住而宕机
解决方案 :
均匀分布 : 我们应该在设置失效时间时应该尽量均匀的分布,比如失效时间是当前时间加上一个时间段的随机值
熔断机制 : 类似于SpringCloud的熔断器,我们可以设定阈值或监控服务,如果达到熔断阈值(QPS,服务无法响应,服务超时)时,则直接返回,不再调用目标服务,并且还需要一个检测机制,如果目标服务已经可以正常使用,则重置阈值,恢复使用
隔离机制 : 类似于Docker一样,当一个服务器上某一个tomcat出了问题后不会影响到其它的tomcat,这里我们可以使用线程池来达到隔离的目的,当线程池执行拒绝策略后则直接返回,不再向线程池中增加任务
限流机制 : 其实限流就是熔断机制的一个版本,设置阈值(QPS),达到阈值之后直接返回
双缓存机制 : 将数据存储到缓存中时存储俩份,一份的有效期是正常的,一份的有效期长一点.不建议用这个方案,因为比较消耗内存资源,毕竟Redis是直接存储到内存中的

2.缓冲穿透

发生场景 : 此时要查询的数据不存在,缓存无法命中所以需要查询完数据库,但是数据是不存在的,此时数据库肯定会返回空,也就无法将该数据写入到缓存中,那么每次对该数据的查询都会去查询一次数据库
解决方案 :
布隆过滤 : 我们可以预先将数据库里面所有的key全部存到一个大的map里面,然后在过滤器中过滤掉那些不存在的key.但是需要考虑数据库的key是会更新的,此时需要考虑数据库 --> map的更新频率问题
缓存空值 : 哪怕这条数据不存在但是我们任然将其存储到缓存中去,设置一个较短的过期时间即可,并且可以做日志记录,寻找问题原因

【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

通过Redis实现数据的交集、并集、补集

场景说明 今天我们来模拟一个这样的场景,我们在本地有多个文本文件,每个文件里面存了很多的32位的字符串作为用户的唯一标识,每个用户存做一行,假如我们每天都有非常大规模的用户,这样我们可能在工作中就存在需要对这些用户进行交集、并集或补集等处理,最简单的方式是通过Java中的集合来进行运算即可,比如通过HashSet来进行相应的一些运算,但是这样的运算存在一个局限性,那就是我们一般在JVM运行过程中初始的内存是有限的,这样如果全部在JVM内存中进行计算的话,很容易出现内存空间不足导致的OOM异常,那么我们今天来

技术人集结地 4318

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

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

菜鸟的博客 4539

【Redis缓存机制】6.Set集合类型操作使用

Set集合类型 (1)介绍 redis的set是string类型的无序集合 set元素最大可以包含(2的32次方-1)个元素 关于set集合类型除了基本的添加删除操作,其它有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现类似好友推荐的功能。 注意:每个集合中的各个元素不能重复。 (2)操作 sadd key...

有趣的人生 一半是山川湖海 一半是初心情怀 308

5种主流触觉传感器对比:GelSight、DIGIT、Taxim、GelSlim和TACTO如何选?

本文深度解析了GelSight、DIGIT、Taxim、GelSlim和TACTO五款主流触觉传感器的技术原理与核心特性。通过对比视觉传感与电学传感两大技术路径,为机器人灵巧抓取、精密检测等应用场景提供清晰的选型决策指南,帮助开发者根据项目需求在分辨率、响应速度、集成度与成本之间找到最佳平衡。

Black的专栏 931

Scratch-陶陶摘苹果

Scratch版-陶陶摘苹果([蓝桥杯][算法]) 题目要求: 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。 现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。 用scratch怎么完成呢? 首先加入角色题目介绍 接下来用询问框来录入苹果的高度并且记录到列表里 数据初始化 .

qq_38784092的博客 2903

redis linux 删除数据结构,Redis集合数据结构和常用命令

Redis 的集合不是一个线性结构,而是一个哈希表结构,它的内部会根据 hash 分子来存储和查找数据,理论上一个集合可以存储 2 的 32 次方减 1 个节点(大约 42 亿)个元素,因为采用哈希表结构,所以对于 Redis 集合的插入、删除和查找的复杂度都是 0(1),只是我们需要注意 3 点。对于集合而言,它的每一个元素都是不能重复的,当插入相同记录的时候都会失败。集合是无序的。集合的每一个...

weixin_39719585的博客 160

【matlab】基于 Simulink 的空调恒温控制系统仿真建模

本文介绍了基于Simulink的空调恒温控制系统仿真建模方法。系统采用PID控制算法,通过传感器测量温度、控制器计算信号、执行器调节功率来实现恒温控制。文章详细阐述了Simulink模型搭建步骤,包括PID控制器、房间热力学特性模拟等模块的实现,并提供了测试流程和多种实际部署场景。该方法可有效验证控制算法性能,优化系统设计,适用于家用、商用、工业及汽车空调系统。未来可结合智能算法和节能优化技术进一步提升系统性能。

走向CTO的路上... 920

redis 数据类型和常用的操作命令

1、string类型 最为基础的数据存储类型。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。 命令 描述 例子 Set 赋值 SET key value Get 获取值 GET key ...

chaochunge的博客 294

基于LSTM GRU RNN的交通流量预测-完整数据代码

基于LSTM GRU RNN的交通流量预测-完整数据代码

923

嵌入式视频应用开发者必读:嵌入式Linux+FFmpeg硬件编解码实战指南

在嵌入式Linux上,FFmpeg支持多种硬件加速API,比如VAAPI、VDPAU、CUDA,以及针对特定平台的专用接口(如NVIDIA的NVENC、Intel的QSV、ARM的Mali)。FFmpeg的硬件解码通过-hwaccel参数启用,咱们以常见的H.264和HEVC(H.265)格式为例,展示如何用VAAPI和V4L2实现高效解码。: FFmpeg硬件加速需要额外的库,比如libva(VAAPI)、libv4l2(V4L2)或libnvcodec(CUDA)。

大模型大数据攻城狮的专栏 2204

redis 五种数据结构常用操作命令详解(String,list,set,zset,hash)

无论是哪家公司,都很重视Spring框架技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,好了希望这篇文章对大家有帮助!《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!序key Stringvalue ZSET值=分数+值无论是哪家公司,都很重视Spring框架技术,重视基础,所以千万别小看任何知识。

2301_79655473的博客 1040

基于STM32的智能浇花系统毕业设计(全部资料)

摘要:本文设计了一种基于STM32单片机的智能浇花系统,集成了环境温湿度检测、土壤温湿度监测、LCD显示、Wi-Fi联网及手机APP远程控制等功能。系统通过传感器实时采集环境参数,自动控制水泵工作实现智能灌溉,同时支持用户通过手机APP远程监控和调节。论文详细阐述了硬件选型、软件设计及系统测试过程,验证了系统的稳定性和实用性。该设计为家庭园艺提供了智能化解决方案,具有节水高效、操作便捷等特点。关键词:STM32;智能灌溉;远程控制;环境监测;Wi-Fi通信。

3254968421的博客 1195

Redis(Redis基础,SpringCache,SpringDataRedis)

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

qq_49474843的博客 2940

TripoSR: Fast 3D Object Reconstruction from a Single Image 论文阅读

模型的主要参数,如变换器的层数、三平面的维度、NeRF模型的具体细节和主要训练配置,在表1中详细说明。TripoSR的算法流程结合了先进的数据处理、模型设计和训练技术,使其能够在不到0.5秒的时间内从单张图像中快速生成详细的3D网格。总体而言,TripoSR是一个强大的3D重建工具,它在速度和质量上都表现出色,但也需要考虑到其对计算资源的需求和在处理极端复杂场景时可能遇到的挑战。:通过精心策划的训练数据集和多样化的数据渲染技术,TripoSR提高了模型的泛化能力和对真实世界图像的适应性。

Christo的博客 1946

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【Redis】初识 Redis

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

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【Redis】Redis键值存储

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

白晨的博客 2260

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【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的博客 1978

Redis——Redis简介

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

码说芯语的博客 5589

【Redis】贰 —— Redis基本命令

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

2401_86777036的博客 3092

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的博客 3819

[redis系列] redis脚本

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

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

Redis:初识Redis

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

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

【Redis】Spring使用Redis

Spring使用Redis

yj20040627的博客 1782
上一篇: Maven 介绍
下一篇: Dubbox框架简介
Carl God
博客等级 码龄7年 1908粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl God

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值