1. 5种基本数据类型
string: 字符串
set name tom
get name
exists name
del name
list: 列表 (ziplist + quicklist)
rpush books python
hash: 字典
hset books python ‘python books’
set: 集合
sadd books nodejs
zset: 有序集合 (跳跃列表)
zadd books 9.1 ‘nodejs deepin’
2 Redis 过期机制
- 定期删除
- 惰性删除
- 定时删除(定时扫描一定数量设置了expire 的key,设置最大使用内存限制)
3. Redis 内存淘汰机制
noeviction: 达到内存限制,禁止写入
allkeys-lru: 达到限制,从所有key 中淘汰最少使用的
allkeys-random: 达到限制, 所有key 中随机淘汰
volatile-lru: 达到限制, 淘汰设置了 expire 的 key 中最近 最少使用的 key
volatile-random: 达到限制, 淘汰设置了 expire 的 key 中最近 最少使用的 key
volatile-ttl: 达到限制, 淘汰设置了 expire 的 key 中最久 最少使用的 key
volatitle-lfu: 淘汰设置了 expire 的最少使用到key(redis 4.0)
allkey-lfu: 淘汰设置了 expire 的最少使用到key (redis 4.0)
LRU是Least Recently Used的缩写,即最近最少使用。LRU源于操作系统的一种页面置换算法,选择最近最久未使用的页面予以淘汰。在Redis里,就是选择最近最久未使用的key进行删除。4.Redis 固化
4.1 RDB 持久化(快照)
# 以下配置表示的条件:
# 服务器在900秒之内被修改了1次
save 900 1
# 服务器在300秒之内被修改了10次
save 300 10
# 服务器在60秒之内被修改了10000次
save 60 10000
stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程停不停止写入?
rdbcompression yes // 导出的rdb文件是否压缩
Rdbchecksum yes // 导入rbd恢复时数据时,要不要检验rdb的完整性
dbfilename dump.rdb //导出来的rdb文件名
dir ./ //rdb的放置路径
4.2 AOF 持久化(日志)
在生产环境里面,一般来说AOF都是要打开的,除非你说随便丢个几分钟的数据也无所谓。appendonly no # 是否打开 aof日志功能
appendfsync always # 每1个命令,都立即同步到aof. 安全,速度慢
appendfsync everysec # 折衷方案,每秒写1次
appendfsync no # 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof. 同步频率低,速度快,
no-appendfsync-on-rewrite yes: # 正在导出rdb快照的过程中,要不要停止同步aof
auto-aof-rewrite-percentage 100 #aof文件大小比起上次重写时的大小,增长率100%时,重写
auto-aof-rewrite-min-size 64mb #aof文件,至少超过64M时,重写
5. 缓存淘汰三种模式(应用)
- Cache Aside 更新模式
- Read/Write Through 更新模式
- Write Behind Caching 更新模式
5.1 Cache Aside 更新模式
5.2 Read/Write Through 更新模式
5.3 Write Behind Caching 更新模式
6. 布隆过滤器
默认不带功能,需要安装插件配置。
原理
- 布隆过滤器是用于判断一个元素是否在集合中。通过一个位数组和N个hash函数实现。
- 优点:
- 空间效率高,所占空间小。
- 查询时间短。
- 缺点:
- 元素添加到集合中后,不能被删除。
- 有一定的误判率