redis学习笔记 | 青训营笔记

103 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记

常用数据类型

  1. 字符串
  • redis的基本数据结构
  1. 散列
  • 散列是字典结构
  • 不可以嵌套
  • 散列的字段值只能是字符串
  • 整个散列结构共享过期时间,不能为单个字段单独设置过期时间
  1. 列表
  • 底层结构是双向链表
  • 适合中间数据不常访问的情况,比如存储文章,且通常只显示最新的k个文章
  1. 集合
  • 底层结构是hash表
  1. 有序集合
  • 底层是跳表

进阶

  1. 事务:保证一个事务内的指令要么全都执行,要么全都不执行

  2. 错误处理

  • 语法错误,一个事务中,如果出现语法错误,则整个事务都不会执行
  • 运行时错误,某一条指令执行失败,redis会继续执行事务内的其他命令,并且不提供回滚功能
  1. watch
  • watch命令用于监视某个变量,如果该变量曾经被修改,就阻止一个事务的执行
  • 如果期间被监视的变量过期了,不会被认为是被修改
  1. sort
  • 可以对列表、集合、有序集合进行排序
  • 排序的时间复杂度是O(n+mlogm),其中n是总的数据,m是需要获取的数量。
  • 排序结果可以用store存储
  1. 消息队列
  • BRPOP指令可以使用一个列表实现优先队列,如果队列中没用元素,该指令会阻塞,直到队列中加入了元素
  • 可以用优先队列设置消息的优先级
  1. 订阅和发布消息

持久化

RDB

  1. 每过一段时间,定时把redis的数据快照写入数据库
  2. 开始fork时,程序会开启新的线程,然后拷贝所有数据到磁盘上的临时文件夹之后,然后用这个临时文件夹替换RDB文件

AOF

  1. 每次执行更改命令后,都把更改写入AOF文件
  2. 达到一定条件后,重写AOF文件,把被覆盖的记录去除
  3. 虽然每次执行更改命令后,都修改了AOF,但是由于系统缓存,系统并不会真正写入磁盘,需要设置同步到磁盘的时间(默认三十秒)。

集群

目前没有使用过集群,以后再来补上