Redis介绍
- redis由C语言开发,英文全称为:remote dictionary server,是key-value类型的内存型数据库。
使用场景
- 待补充。。。
Redis各版本特性介绍
- Redis先后经历了多个版本,目前最新版本是6.2。这部分对各版本的主要特性做一介绍。
- Redis 3.0
- Redis 4.0
- Redis 5.0
- Redis 6.0
- 新增ACL权限控制功能:
Redis数据类型
- Redis为key-value类型的数据,key为字符串类型,value有五种类型,各类型具体如下:
- 字符串类型
- 跟平常的字符串类型不同,这里的字符串是简单动态字符串,即SDS(simple dynamic string),该类型的特性如下:1)。。。
- 列表
- 集合
- 有序集合
- 散列表(hashtable)
Redis中常用命令
- key过期时间设置
- Redis 中可以通过 4 个独立的命令来给一个键设置过期时间:
expire key ttl
:将 key 值的过期时间设置为 ttl 秒。pexpire key ttl
:将 key 值的过期时间设置为 ttl 毫秒。expireat key timestamp
:将 key 值的过期时间设置为指定的 timestamp 秒数。pexpireat key timestamp
:将 key 值的过期时间设置为指定的 timestamp 毫秒数。- 注:不管使用哪一个命令,最终 Redis 底层都是使用
pexpireat
命令来实现的。
- Redis 中可以通过 4 个独立的命令来给一个键设置过期时间:
- 各类型操作命令
- 字符串:
- 散列表哈希:
- 集合set:
Redis写日志
- Redis写日志有两种策略:RDB,AOF(Append Only File)
- Redis生成 RDB 策略
- Redis 提供了两个指令用于生成 RDB 文件:
save
:主线程执行,会阻塞;bgsave
:调用glibc
的函数fork
产生一个子进程用于写入 RDB 文件,快照持久化完全交给子进程来处理,父进程继续处理客户端请求,生成 RDB 文件的默认配置。bgsave
子进程可以共享主线程的所有内存数据,读取主线程的数据并写入到 RDB 文件。在执行SAVE
命令或者BGSAVE
命令创建一个新的 RDB 文件时,程序会对数据库中的键进行检查,已过期的键不会被保存到新创建的 RDB 文件中。- 当主线程执行写指令修改数据的时候,这个数据就会复制一份副本,
bgsave
子进程读取这个副本数据写到 RDB 文件,所以主线程就可以直接修改原来的数据。
- AOF策略
- 待补充。。。
Redis部署三种模式
- 单节点模式
- 原理:
- 哨兵主要任务:
- 部署方式:
- 集群模式
- 原理:
- 哨兵主要任务:
- 部署方式:
- 哨兵模式
- 原理:
- 哨兵主要任务:
- 部署方式:
Redis哨兵模式底层数据结构
之前在学习redis的时候,对Redis哨兵模式的底层数据结构化了个结构图,方便理解,辅助记忆。
Redis集群模式底层数据结构
Redis中一致性哈希
- 待补充
Redis中渐进式哈希
- 渐进式哈希:
其他
- 待补充。。。。
参考资料
- Redis设计与实现