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

redis学习笔记(六)

redis每种数据结构的应用场景

1. 字符串 (String)
  • 应用场景 :

    • 缓存:存储频繁访问的数据,如网页缓存、会话信息等。
    • 计数器:实现统计和计数功能,如访问计数、统计数据等。
    • 键值存储:简单的键值对存储,如用户配置信息、配置参数等。
    • 消息队列:使用 SETGET 命令快速传递消息。
2. 哈希 (Hash)
  • 应用场景
    • 对象存储:将复杂的数据对象存储为哈希结构,如用户信息、商品详情等。
    • 分组数据:组织和管理相关数据,如用户的属性信息、订单的各个字段等。
    • 小型数据集:适用于存储少量字段的对象,并且可以通过字段名快速访问。
3. 列表 (List)
  • 应用场景
    • 消息队列:使用 LPUSHBRPOP 命令实现队列功能,如任务队列、消息队列等。
    • 时间序列数据:存储有序的数据集合,如日志记录、时间序列数据等。
    • 历史记录:实现浏览记录、聊天记录等有序历史记录的功能。
4. 集合 (Set)
  • 应用场景
    • 去重:使用集合的唯一性特征存储唯一元素,如用户标签、兴趣爱好等。
    • 集合运算:实现交集、并集、差集等操作,如推荐系统中的用户兴趣分析。
    • 成员管理:管理具有独特属性的集合,如社交网络中的好友列表等。
5. 有序集合 (Sorted Set)
  • 应用场景
    • 排行榜:实现游戏中的排行榜、网站的热度榜单等,支持按分数排序和范围查询。
    • 时间序列数据:按时间戳排序的数据,如实时数据流、日志记录等。
    • 任务调度:按优先级调度任务,支持根据分数快速排序和检索。
6. 位图 (Bitmap)
  • 应用场景
    • 统计分析:实现高效的布尔标记,如用户签到、活跃度统计等。
    • 压缩存储:节省存储空间,适用于大规模的数据集,如用户活跃状态的标记。
    • 位操作:进行快速的位级操作,如每日活跃用户统计。
7. 超日志 (HyperLogLog)
  • 应用场景
    • 去重计数:实现大规模数据的基数统计,如唯一访客数、独立用户数等。
    • 数据分析:进行大数据量的统计分析,减少内存占用。
8. 地理空间索引 (Geo)
  • 应用场景
    • 地理定位:存储地理位置数据,进行距离计算、位置查询等功能。
    • 位置服务:实现位置相关的服务,如附近的商家、用户位置跟踪等。
9. 流 (Stream)
  • 应用场景
    • 日志记录:实时记录和处理日志数据,如系统日志、用户活动日志等。
    • 事件流处理:处理和分析实时事件流,如用户行为数据、传感器数据等。
    • 消息队列:实现高吞吐量的消息队列,支持持久化和消息消费。

十五、Redis.conf详解

redis配置文件

十六、Redis持久化

1、rdb:redis database

快照

dump.rdb文件

触发机制

  1. save的规则满足会触发rdb规则
  2. flushall清空会默认产生一个rdb文件
  3. 退出redis,也会产生rdb文件

备份就自动生成一个dump.rdb文件

如何恢复

  1. 只要把rdb文件放到redis启动目录下就可以了
  2. 查看需要存放的位置:
 config get dir
优点:
  1. 适合大规模的数据恢复
  2. 对数据的完整性要求不高
缺点:
  1. 需要一定的时间间隔进行操作,如果redis意外宕机了,这个最后一次修改数据就没有的了
  2. fork进程的时候,会占用一定的内存空间

2、aof:append only file

appendonly.aof

记录所有写的操作。默认不开启,要手动配置。

重启redis就能生效。

如果这个aof文件有错误,这时候redis是启动不起来的,我们需要修复这个文件。

redis提供了一个工具:redis-check-aof --fix

如果文件正常,重启就可以直接恢复了

appendonly no 
appendfilename "appendonly.aof"
appendfsync everysec   #每秒执行一次
#rewrite 重写 
优点:
  1. 每一次修改都同步,文件的完整会更加好
  2. 每秒同步一次,可能会丢失一秒的数据
  3. 从不同步,效率最高
缺点:
  1. 相对于数据文件来说,aof远远打于rdb,修复的速度也比rdb慢
  2. aof运行效率也比rdb慢,所以我们redis默认配置的就是rdb持久化
http://www.lryc.cn/news/444673.html

相关文章:

  • spring与springmvc整合
  • 如何使用Optuna在PyTorch中进行超参数优化
  • 2.Spring-容器-注入
  • 在uboot中添加自定义命令
  • AngularJS 模块
  • [yotroy.cool] MGT 388 - Finance for Engineers - notes 笔记
  • 2024年9月python二级易错题和难题大全(附详细解析)(三)
  • 【LLM多模态】Animatediff文生视频大模型
  • PDB数据库中蛋白质结构文件数据格式
  • C++自动驾驶面试核心问题整理
  • 2024寻找那些能精准修改PDF内容的工具
  • POI操作EXCEL增加下拉框
  • 新手教学系列——基于统一页面的管理后台设计(二)集成篇
  • 计算机毕业设计之:基于微信小程序的疫苗预约系统的设计与实现(源码+文档+讲解)
  • Redis事务总结
  • 1.4 MySql配置文件
  • 前后端分离集成CAS单点登录
  • 全栈开发(四):使用springBoot3+mybatis-plus+mysql开发restful的增删改查接口
  • 计算机组成原理==初识二进制运算
  • 【machine learning-十-grading descent梯度下降实现】
  • python网络游戏
  • 使用Charles抓包Android App数据
  • 通信工程学习:什么是VM虚拟机
  • C#环境搭建和入门教程--vs2022之下
  • 自定义类型
  • 数仓项目环境搭建
  • Vue3(二)计算属性Computed,监视属性watch,watchEffect,标签的ref属性,propos属性,生命周期,自定义hook
  • 栈:只允许在一端进行插入或删除操作的线性表
  • spring boot 热部署
  • 携手阿里云CEN:共创SD-WAN融合广域网