redis 的单线程:
Redis 读操作?
诸如持久化,删除,集群同步都是多线程
IO多路复用:
Redis 网络框架调用 epoll 机制,让内核监听这些套接字。此时,Redis 线程不会阻塞在某一个特定的监听或已连接套接字上
旁路缓存. {
db 主要存储
读:读缓存,不存在读db,写缓存
写:改db,删除缓存
}
读写穿透 {
redis作为主要存储
读: 1. 缓存没有,读取db写入到redis 2. 有,直接返回
写:1. 缓存没有,去更新db 2. 有,先更新redis,然后redis去更新db
}
弱原子性 :不提供回滚
隔离性 : 提交事务(exec) 之前,其他事务的修改会影响标记为,提交时直接放弃事务
aof 日志:
先执行命令,再写日志;
写回时机的策略:
1. every second 2. every time(每写一条,就同步) 3.no(交给 os)
rdb快照
某一刻的所有内存数据(redis) 记录
评价:rdb可能在崩溃时丢失更多数据,aof 可能消耗更多空间
删除大key:
string del 不多说
渐进式删除
list strim
set srem
hash hdel