当前位置: 首页 > news >正文

【Redis】数据类型、事务执行、内存淘汰策略

目录

数据类型

 Redis事务执行步骤

步骤: 

redis内存淘汰策略

设置内存淘汰策略

1.设置配置文件

2.通过命令设置


数据类型

官网解释

Understand Redis data types | Redis

首先,Redis 的所有键都是字符串,常用的数据类型有 5 种:String 字符串类型、List 列表类型、Hash 哈希表类型、Set 集合类型、Sorted Set 有序集合类型

底层实现:

 Redis事务执行步骤

事务相关命令:

MULTI :开启事务,redis会将后续的命令逐个放入队列中,然后使用EXEC命令来原子化执行这个命令系列。

EXEC:执行事务中的所有操作命令。

DISCARD:取消事务,放弃执行事务块中的所有命令。

WATCH:监视一个或多个key,如果事务在执行前,这个key(或多个key)被其他命令修改,则事务被中断,不会执行事务中的任何命令。

UNWATCH:取消WATCH对所有key的监视。

步骤: 
  • 开启:以MULTI开始一个事务

  • 入队:将多个命令入队到事务中,接到这些命令并不会立即执行,而是放到等待执行的事务队列里面

  • 执行:由EXEC命令触发事务

当一个客户端切换到事务状态之后, 服务器会根据这个客户端发来的不同命令执行不同的操作:

  • 如果客户端发送的命令为 EXEC 、 DISCARD 、 WATCH 、 MULTI 四个命令的其中一个, 那么服务器立即执行这个命令。
  • 与此相反, 如果客户端发送的命令是 EXEC 、 DISCARD 、 WATCH 、 MULTI 四个命令以外的其他命令, 那么服务器并不立即执行这个命令, 而是将这个命令放入一个事务队列里面, 然后向客户端返回 QUEUED 回复。

 

注:Redis不支持事务回滚 

redis内存淘汰策略

早期版本的 Redis 有以下 6 种淘汰机制(也叫做内存淘汰策略):

  1. noeviction:不淘汰任何数据,当内存不足时,新增操作会报错,Redis 默认内存淘汰策略;
  2. allkeys-lru:淘汰整个键值中最久未使用的键值;
  3. allkeys-random:随机淘汰任意键值;
  4. volatile-lru:淘汰所有设置了过期时间的键值中最久未使用的键值;
  5. volatile-random:随机淘汰设置了过期时间的任意键值;
  6. volatile-ttl:优先淘汰更早过期的键值。

在 Redis 4.0 版本中又新增了 2 种淘汰机制:

  1. volatile-lfu:淘汰所有设置了过期时间的键值中,最少使用的键值;
  2. allkeys-lfu:淘汰整个键值中最少使用的键值。

其中 allkeys-xxx 表示从所有的键值中淘汰数据,而 volatile-xxx 表示从设置了过期键的键值中淘汰数据。 所以,现在 Redis 的版本中有 8 种内存淘汰策略。

设置内存淘汰策略

Redis 内存淘汰策略有两种设置方式:

  1. 修改 redis 配置文件设置内存淘汰策略;
  2. 连接 redis 服务器,通过命令设置内存淘汰策略。

具体设置执行如下。

1.设置配置文件

通过 redis 的配置文件 redis.conf 来设置内存淘汰策略:

maxmemory-policy allkeys-lru
2.通过命令设置

先连接到 redis 服务器,然后通过命令修改淘汰策略:

127.0.0.1:6379> config set maxmemory-policy allkeys-lru

注意事项:通过命令设置内存淘汰策略,在 redis 重启之后会失效,所以最好是在配置文件中设置内存淘汰策略。

http://www.lryc.cn/news/328078.html

相关文章:

  • Python Flask Web框架初步入门
  • 【设计模式】工厂方法模式详解
  • 独立游戏《星尘异变》UE5 C++程序开发日志3——UEC++特供的数据类型
  • 递归方法的理解
  • css之flex布局文本不换行不显示省略号的解决方法
  • 华清远见STM32U5开发板助力2024嵌入式大赛ST赛道智能可穿戴设备及IOT选题项目开发
  • 若依框架实现不同端用户登录(后台管理用户和前台会员登录——sping security多用户)
  • 【解決|三方工具】Obi Rope 编辑器运行即崩溃问题
  • 岭师大数据技术原理与应用-序章-软工版
  • Leetcode 680. 验证回文串 II
  • 网络安全接入认证-802.1X接入说明
  • iPhone的iOS系统:定义移动智能体验,引领科技潮流之巅
  • 计算机网络:传输控制协议(Transmission Control Protocol-TCP协议
  • GEE实践应用|热岛效应(一)地表温度计算
  • Java查找算法知识点(含面试大厂题和源码)
  • 67、yolov8目标检测和旋转目标检测算法部署Atlas 200I DK A2开发板上
  • A Little Is Enough: Circumventing Defenses For Distributed Learning
  • 文心一言 VS 讯飞星火 VS chatgpt (225)-- 算法导论16.3 7题
  • 【计算机】——51单片机——持续更新
  • QT资源添加调用
  • LeetCode-49. 字母异位词分组【数组 哈希表 字符串 排序】
  • 绘制特征曲线-ROC(Machine Learning 研习十七)
  • .Net 知识杂记
  • 海豚【货运系统源码】货运小程序【用户端+司机端app】源码物流系统搬家系统源码师傅接单
  • 01---java面试八股文——mybatis-------10题
  • 增强现实(AR)的开发工具
  • 用Unity制作正六边形拼成的地面
  • Spark部署详细教程
  • 慧天[HTWATER]:创新城市水务科技,引领行业变革
  • vscode调试Unity