这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
常用数据类型
- 字符串
- redis的基本数据结构
- 散列
- 散列是字典结构
- 不可以嵌套
- 散列的字段值只能是字符串
- 整个散列结构共享过期时间,不能为单个字段单独设置过期时间
- 列表
- 底层结构是双向链表
- 适合中间数据不常访问的情况,比如存储文章,且通常只显示最新的k个文章
- 集合
- 底层结构是hash表
- 有序集合
- 底层是跳表
进阶
-
事务:保证一个事务内的指令要么全都执行,要么全都不执行
-
错误处理
- 语法错误,一个事务中,如果出现语法错误,则整个事务都不会执行
- 运行时错误,某一条指令执行失败,redis会继续执行事务内的其他命令,并且不提供回滚功能
- watch
- watch命令用于监视某个变量,如果该变量曾经被修改,就阻止一个事务的执行
- 如果期间被监视的变量过期了,不会被认为是被修改
- sort
- 可以对列表、集合、有序集合进行排序
- 排序的时间复杂度是O(n+mlogm),其中n是总的数据,m是需要获取的数量。
- 排序结果可以用store存储
- 消息队列
- BRPOP指令可以使用一个列表实现优先队列,如果队列中没用元素,该指令会阻塞,直到队列中加入了元素
- 可以用优先队列设置消息的优先级
- 订阅和发布消息
持久化
RDB
- 每过一段时间,定时把redis的数据快照写入数据库
- 开始fork时,程序会开启新的线程,然后拷贝所有数据到磁盘上的临时文件夹之后,然后用这个临时文件夹替换RDB文件
AOF
- 每次执行更改命令后,都把更改写入AOF文件
- 达到一定条件后,重写AOF文件,把被覆盖的记录去除
- 虽然每次执行更改命令后,都修改了AOF,但是由于系统缓存,系统并不会真正写入磁盘,需要设置同步到磁盘的时间(默认三十秒)。
集群
目前没有使用过集群,以后再来补上