Redis学习笔记(四)
创始人
2024-03-16 10:12:03
0
  • 事务

    • 一个命令执行的队列,中间不会被打断或者干扰
    • 基本操作、
      • 开启事务: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]
        • 在这里插入图片描述

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...