Redis学习笔记(四)

news2024/11/15 12:28:12
  • 事务

    • 一个命令执行的队列,中间不会被打断或者干扰
    • 基本操作、
      • 开启事务:multi
        • 作用:设定事务的开启位置,执行此命令后,后续所有指令均加入事务中
      • 执行事务:exec
        • 作用:设定事务结束的位置,同时执行事务
      • 取消事务:discard
        • 作用:终止当前事务的定义
    • 注意
      • 如果事务中包含的命令存在语法错误,整体事务中的命令均不会执行
      • 运行错误的命令不会被执行
      • 已经执行完毕的命令对应的数据不会自动回滚,需要程序员手动回滚
    • 手动事务回滚
      • 记录操作过程中被影响数据之前的状态
        • 单数据:string
        • 多数据:hash、list、set、zset
      • 设置指令回复所有被修改的项
        • 单数据:直接set
        • 多数据:修改对应值或整体复制
      • 添加监视锁:watch key1 [key2…]
      • 取消所有key的监视:unwatch
      • 如果exec之前key发生了变化,那么终止事务执行
    • 分布式锁
      • 创建锁:setnx lock-key value
        • 有值则返回设置失败,无值返回成功
        • 返回成功,拥有控制权,进行下一步具体的业务操作
        • 返回失败,不具有控制权,排队或等待
      • 删除锁:del lock-key
    • 分布式锁改良——为锁添加时间限定
      • expire lock-key second
      • pexpire lock-key milliseconds
      • 在这里插入图片描述
  • 删除策略

    • 过期数据:超过存活时间的数据

    • 每个数据对应的地址,对应着一个删除时间

    • 目标:在内存占用和CPU占用之间寻找一种平衡

    • 定时删除

      • 创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作
      • 优点:节约内存、快速释放掉不必要的内存占用
      • 缺点:CPU压力很大,会影响redis服务器响应时间和指令吞吐量
      • 总结:用处理器性能换取存储空间(拿时间换空间)
    • 惰性删除

      • 数据到达过期时间不做处理,等下次访问该数据时:
        • 发现未过期,返回数据
        • 发现已过期,删除,返回不存在
      • 优点:节约CPU性能,发现必须删除时才删除
      • 缺点:内存压力很大,出现长期占用内存的数据
      • 总结:用存储空间换取处理器性能(拿时间换空间)
    • 定期删除

      • 在这里插入图片描述
      • 周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比方式控制删除频度
      • 特点1:CPU性能占用设置有峰值,检测频度可自定义
      • 特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理
      • 总结:周期性抽查存储空间(随机抽查,重点抽查)
    • 在这里插入图片描述

    • 逐出算法

      • 最大可使用内存:maxmemory
        • 占物理内存的百分比,默认为0表示不限制。生产环境中根据需要设定,通常在50%以上
      • 每次选取待删除数据的个数:maxmemory-samples
        • 选取数据时并不会全库扫描,采用随机获取数据的方式作为待检测删除数据
      • 删除策略:maxmemory-policy
        • 到达最大内存后,对被挑选出来的数据进行删除的策略
        • 在这里插入图片描述
  • redis配置

    • 服务器配置
      • 设置服务器以守护进程方式运行: daemonize yes|no
      • 绑定主机地址:bind 127.0.0.1
      • 设置服务器端口号:port 6379
      • 设置数据库数量:databases 16
      • 设置服务器以指定日志记录级别:loglevel debug |verbose|notice|warning
        • 开发期设置为verbose,生产环境中配置为notice降低写日志IO的频度
      • 日志记录文件名:logfile 端口号.log
    • 客户端配置
      • 设置同一时间最大客户连接数:maxclients 0
        • 默认无限制,当客户端连接达到上限,redis会关闭新的连接
      • 客户端闲置等待最大时长,达到最大值后关闭连接: timeout 300
        • 如需关闭该功能,设置为0
    • 在这里插入图片描述
  • 高级数据类型

    • Bitmaps

      • 基本操作
        • 获取指定key对应偏移量上的bit值:getbit key offset
        • 设置指定key对应偏移量上的bit值,value是1或0:setbit key offset value
      • 扩展操作
        • 对指定key按位进行交、并、非、异或操作,并将结果保存在destKey中
          • bitop op destKey key1 [key2…]
            • op
              • and:交
              • or:并
              • not:非
              • xor:异或
        • 统计key中1的值
          • bitcount key [start end]
    • HyperLogLog

      • 基数:数据集去重后的元素个数
      • HyperLogLog用来做基数统计
      • 基本操作
        • 添加数据:pfadd key element [element …]
        • 统计数据:pfcount key [key…]
        • 合并数据:pfmerge destkey sourcekey [sourcekey…]
      • 在这里插入图片描述
    • GEO

      • 基本操作
        • 添加坐标点:geoadd key longitude latitude member [longitude latitude member]
        • 获取坐标点:geopos key member [member]
        • 计算坐标点距离:geodist key member1 member2 [unit]
        • 在这里插入图片描述

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

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

相关文章

【MySQL】表的增删改查(一)

你可以了解世间万物,但追根溯源的唯一途径便是亲身尝试。——《心灵捕手》 前言: 大家好,我是拳击哥,今天给大家讲解的是mysql表GRUD操作中的新增数据、查询数据以及表中数据的排序、去重等。因篇幅过长,分为两期来讲解…

Linux——匿名管道、命名管道及进程池概念和实现原理

目录 一.什么是匿名管道 二.如何使用匿名管道 (一).pipe原理 (二).pipe使用 三.命名管道概念及区别 (一).什么是命名管道 (二).与匿名管道的联系和区别 四.命名管道的使用 &…

Python——分支语句

1.bool 数据类型:真和假,只有两个值,就是True和False。 2.if语句使用的语法: 3.else语句:(同上) 4.比较运算符: a b:a和b是否相等 a ! b: a和b是否不相等 a…

【网络层】子网划分、无分类编址CIDR、构成超网、ARP协议

注:最后有面试挑战,看看自己掌握了吗 文章目录子网划分-----减少浪费IP----两级IP不够灵活-----变三级IP地址-----对外还是表现以前的网络号---------只是拿出部分主机号来做子网号子网划分实例-------对外不展示内部的子网划分----子网掩码---与运算---…

什么是【固件】?

文章目录一、软件 硬件 固件二、BIOS(Basic Input/output System)三、百度百科的解释四、固件的工作原理五、应用六、参考链接一、软件 硬件 固件 通常我们会将硬件和软件分开看待,二者协同工作为我们提供计算机的体验。硬件是摸得着的实体&…

[附源码]计算机毕业设计学生宿舍维修管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

假设检验(1)-假设检验的基本概念

数理统计的另一基本任务是对总体参数作某种假设,然后根据所得的样本,运用统计分析的方法来检验这一假设是否成立,从而作出接受或拒绝的决定. 这就是假设检验问题. 3. 1. 1 假设检验的基本思想和推理方法 我们先举一个…

C\C++刷题DAY5

目录 1.第一题 2.第二题 3.第三题 1.第一题 160. 相交链表 - 力扣(LeetCode) 思路分析: 看链表相不相交,是看链表的地址。把两个链表的地址一一比对,如有有相同的地址,那么相交,如果各不相同…

详解自监督发展趋势! 何恺明连获三年CVPR最高引用的秘诀是?

点击文末公众号卡片,不错过计算机会议投稿信息 0 引言 许多加了我好友的读者知道尼谟之前的研究方向是“自监督学习”,而最近我无意中发现,CVPR最近三年引用量最高的论文竟然都是来自监督学习领域的,且三篇论文的作者都包括Face…

(四)进程管理:进程基本概念

文章目录一. 进程的概念二. 进程的结构和特征1. 进程的结构2. 进程的特征三. 进程与【线程】1. 进程与线程的关系与区别2. 线程的实现方式1. 纯用户级方式(淘汰)2. 纯内核级方式3. 组合方式一. 进程的概念 进程(Process)&#xff…

C#,彩色图片转为灰度图的快速算法与源代码

彩色图转为灰度图的场景非常多,比如人工智能的训练与识别时,需要将彩色图片转为灰度图。 以下文字来自于: 彩色图像转灰度图像原理python_蜗牛的笨笨的博客-CSDN博客_python 彩色图转灰度图现在我们所接触到的图像绝大多数都是数字图像&…

[附源码]计算机毕业设计springboot疫情背景下社区互助服务系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

u-boot常用命令

u-boot常用命令查看u-boot所支持的命令查询命令u-boot版本环境变量板子相关信息环境变量操作内存操作网络操作EMMC和 SD卡操作FAT 格式文件系统操作EXT格式文件系统操作ubi格式文件系统操作boot 操作bootzbootmbootUMS 命令常用其他uboot环境变量:bootcmd和bootargs…

python基础语法15-网络编程理论

网络编程是指在程序中实现两台计算机之间的通信。 Python提供了大量的内置模块和第三方模块用于支持各种网络访问,而且Python语言在网络通信方面的优点特别突出,远远领先其他语言。 一、IP: 1.概念: IP:互联网协议地址(Internet Protocol Add…

CCNA-应试教育-思科网院-CCNAv7: Switching, Routing, and Wireless Essentials 交换、路由和无线基础。

CCNA-应试教育-思科网院-CCNAv7: Switching, Routing, and Wireless Essentials 交换、路由和无线基础。 拓扑 – SRWE 最终 PT 技能评估 (PTSA) 拓扑图这样连 题目 SRWE Final PT Skills Assessment (PTSA) A few things to keep in mind while co…

大淘营淘宝复制的“添加、删除、替换属性”功能如何使用?

一、添加属性添加属性填写的格式为“属性名称:属性值”,“”是添加的意思。举个例子,比如我要添加的属性为“AA”,属性值为“aa”,那么,在软件上需要填“AA:aa”。注:“:”是半角字符,中间不要有…

嵌入式 程序调试之gdb和gdbserver的交叉编译及使用

嵌入式 程序调试之gdb和gdbserver的交叉编译及使用 一、简述 记--交叉编译gdb、gdbserver并调试嵌入式程序。 gdb是功能非常强大的常用调试工具,可以直接下断点进行单步调试,是差错排错的利器。 常见三种不同使用场景的gdb: x86 pc端gdb(以下…

MyBatis ---- 自定义映射resultMap

MyBatis ---- 自定义映射resultMap1. resultMap处理字段和属性的映射关系2. 多对一映射处理a>级联方式处理映射关系b>使用association处理映射关系c>分布查询3. 一对多映射处理a>collectionb>分步查询1. resultMap处理字段和属性的映射关系 当实体类中的属性名…

一文详解数据链路相关技术

一文详解数据链路相关技术1.MAC地址2.共享介质型网络争用方式令牌传递3.非共享介质网络4.环路检测技术生成树方式源路由法5.VLAN1.MAC地址 MAC地址直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太…

云服务器使用及Linux基本命令

文章目录前言一、Linux1.Linux发现版本2.Linux环境搭建方式云服务器使用终端软件连接Linux3.Linux基础命令(1)ls:列出该目录下的所有子目录与文件。(2)pwd:显示当前所在用户(3)cd :改…