分类
redis

redis 基础总结

redis定义:
用C语言编写,基于内存且可以持久化的日志型,以key-value形式高性能缓存的数据库

特点
执行速度快
key-value键值对的结构
简单的持久化:rdb或aof文件的存储
支持事务:使操作具有原子性
高可用,支持分布式集群,主从复制

执行快的原因:
完全基于内存
采用单线程运行,节约I/O开销,避免上下文切换
采用多路I/O复用,非阻塞I/O
数据结构简单

数据结构:
字符串(string):是二进制安全的,可以存储所有数据,最 大存储512M
哈希(hash):适合存储整张表,对象等
列表(list):存储有序的字符串,一个列表最多存储2的32次幂-1个元素
无序集合(set):存储无序的,且不能重复的元素,一个集合最多存储2的32次幂-1个元素
有序集合(zset):存储有序的,且不能重复的元素,一个
版本3.2新增的结构:
地图空间( geo ):记录地图的经纬度信息
版本5.0新增的结构:
位图( bitmap ):在字符串类型上的面向位的操作的集合(优势:节省空间)
HyperLoglog: 主要适用场景是海量数据的计算。特点是速度快

缓存中遇到的一些特殊情况及处理方法总结:
1.缓存雪崩:指缓存中的大量数据在某一段时间失效,造成大量的请求连接后端数据库,给后端数据库造成很大的压力
处理方法:1>降低缓存过期的重复率
2>做缓存过期标识,当过期则触发工作线程在后台更新key缓存
2.缓存穿透:若key值在缓存和数据库中同时不存在,当请求在缓存中查找不存在,则去后端数据库中去查找。大量的这样的请求会给后端数据库带来很大的访问压力
处理方法:1>布隆过滤器
2>简单粗暴法:若缓存中不存在,则在现在缓存中存入key,再从后台数据库查找,即时查找结果为空,此时缓存中已有key值来应付接下来请求
3.缓存击穿:key值在缓存中存在,但过期了,若某一个时刻大量的请求来获取key,请求会绕过缓存,从后端服务器获取数据,并回设缓存,这样会给数据库造成压力
处理方法:通过互斥锁(mutex key)

发表评论

电子邮件地址不会被公开。 必填项已用*标注