首页 > 数据库 >redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅

时间:2023-05-23 11:06:33浏览次数:60  
标签:事务 策略 删除 redis 缓存数据 报错 key 执行



文章目录

  • 一、删除策略
  • 二、淘汰策略
  • 三、数据库与缓存数据一致性
  • 四、redis事务
  • 五、redis发布订阅


一、删除策略

redis使用:惰性删除+定期删除
1、定时删除–>以CPU内存换redis内存
定时删除过期的缓存值
2、惰性删除–>以redis内存换CPU内存
查询到该key时如果过期,删除该过期的缓存值
3、定期删除
1)redis在启动的时候读取配置文件hz的值,默认为10

2)每秒执行hz次serverCron()–>databasesCron()—>actveEXpireCyle()
3)actveEXpireCyle()对每个expires[]进行逐一检测,每次执行250ms/hz
4)对某个expires[
]检测时,随机挑选N个key检查
如果key超时,删除key
如果一轮中删除的key的数量>N*25%,循环该过程
如果一轮中删除的key的数量小于等于N25%,检查下一个expires[ ]
current_db用于记录actveEXpireCyle()进入哪个expires[ * ] 执行,如果时间到了,那么下次根据current_db继续执行

二、淘汰策略

redis内存使用达到设置值的时候执行

逐出算法:

相关配置:

maxmemory: 最大可使用内存,占用物理内存的比例,默认值为0,表示不限制。生产环境一般根据需求设置,通常50%以上

maxmemory-policy: 达到最大内存后,对挑选出来的数据进行删除策略

maxmemory-samples: 每次选取待删除数据的个数,选取数据时并不会全库扫描,采用随机获取数据的方式作为待检测删除数据

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_缓存

三、数据库与缓存数据一致性

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_缓存_02

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_缓存_03

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_缓存_04

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_数据_05

四、redis事务

  • 1、什么是redis的事务?

redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体,就是一个队列。当执行的时候,一次性按照添加顺序依次执行,中间不会被打断或者干扰。

  • 2、能干嘛?
    一个队列中,一次性,顺序性,排他性的执行一系列命令
  • 3、redis事务基本操作
    开启事务:multi 设置事务的开始位置,这个指令开启后,后面所有的指令都会加入事务中
    执行事务: exec 设置事务的结束位置,同时执行事务,与multi成对出现,成对使用
    取消事务:discard 终止当前事务,取消multi后,exec前的所有指令

1)加入事务的命令并没有立马执行,而且加入队列中,exec命令后才执行
2)discard 终止当前事务,取消multi后,exec前的所有指令
加入和执行事务有错误会怎么办?
3)加入事务语法报错,事务则取消
4)执行事务报错,则成功的返回成功,失败的返回失败,不影响报错后面的指令

注意: 已经执行完毕的命令对应的数据不会自动回滚,需要程序员自己实现

监控key

watch: 对key进行监控,如果在exec执行前,监控的key发生了变化,终止事务执行

unwatch: 取消对所有的key进行监控

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_缓存_06

  • 4、事物情况:

1)正常执行

注意:加入事务的命令并没有立马执行,而且加入队列中,exec命令后才执行

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_数据_07

2)取消事务

discard 终止当前事务,取消multi后,exec前的所有指令

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_redis_08

3)程序加入队列出错

加入事务语法报错,事务则取消

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_redis_09

4)程序执行报错

执行事务报错,则成功的返回成功,失败的返回失败,不影响报错后面的指令

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_redis_10

五、redis发布订阅

查看菜鸟教程

redis专题六:redis 删除策略、淘汰策略、数据库与缓存数据一致性、事物、发布订阅_缓存_11

标签:事务,策略,删除,redis,缓存数据,报错,key,执行
From: https://blog.51cto.com/u_16125162/6330104

相关文章

  • SpringBoot声明连接多个redis数据源配置模版
    在实际开发中,我们可能会用到2个不同的redis数据源;如何连接查询详情:文章目录一、依赖二、配置文件三、config类配置四、序列化问题五、封装工具类一、依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-dat......
  • Redis常见场景问题和解决方案
    缓存穿透(查不到数据)概述当用户想要查询一个数据,发现Redis中不存在,也就是所谓的缓存没有命中,于是这个数据请求就会打到数据库中。结果数据库中也不存在这条数据,那么结果就是什么都没查询出来。那么当用户很多时候的查询,缓存中都没有数据,请求直接打到数据库中,这样就会给数据库造成很......
  • Redis主从复制实现与原理
    一、概述主从复制,是指将一台Redis服务器的数据复制到其他的Redis服务器。前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower);数据是从主节点复制到从节点的。其中,主节点负责写数据(当然有读的权限),从节点负责读数据(它没有写数据的权限)。默认的配置下,每个Redis都是主节点。一......
  • 如何利用Redis进行事务处理呢?
    一、概述事务的本质,其实就是一组命令的集合。一个事务中的所有命令都会按照命令的顺序去执行,而中间不会被其他命令加塞。Redis提供了事务相关的5个指令,分别是:DISCARD、EXEC、MULTI、UNWATCH和WATCH。如下图所示:下面我们就对Redis的事务操作一一的进行介绍。二、MULTI(v1.2.0)指令格式......
  • 聊聊如何利用spring插件来实现策略模式
    前言偶然的机会发现spring有个spring-plugin,官网对它的介绍是SpringPluginprovidesamorepragmaticapproachtoplugindevelopmentbyprovidingthecoreflexibilityofhavingpluginimplementationsextendingacoresystem'sfunctionalitybutofcoursenotdel......
  • redis,缓存雪崩,缓存穿透,缓存更新,缓存降级,缓存预热等问题
    一、缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成......
  • 【面试系列6】Redis
    redisredis是什么?内存数据库,一切数据操作都在内存中进行,所以速度很快,常被用来做缓存,消息队列,分布式锁。具有高效的数据结构,String、list、hash、set、zset,bitmaps、hyperloglog、geo、stream。redis还支持事务、持久化、多种集群方式、发布订阅模型、内存淘汰机制等等。re......
  • 策略模式(Strategy Pattern)
    一、模式动机策略模式(StrategyPattern)用于算法的自由切换和扩展,是一种使用较为广泛的行为型模式。策略模式对应于解决某一问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便地更换算法或者增加新的算法。它将每一个算法封装在一个称为具体策略的类中,......
  • 策略模式的实际应用
    publicinterfaceTransactionDetailProcessor{/***判断是否策略包含内容**@paramstrategy*@return*/booleanfitStrategy(QueryOrderDetailStrategystrategy);voidprocess(OperationContextcontext,TransactionDetailV......
  • Linux Redis 做成系统服务
    概述系统:CentOS7.6Redis安装后启动方式:redis-server/xxx/xxx/redis.conf。若不指定配置文件,则redis-server不会读取任何配置文件,而是使用自身携带固定配置信息启动。若想将redis做成系统服务,则需在/etc/init.d目录下添加一个配置文件,文件中指定要启动的程序,如何可以使用系统服......