怎么查网站是那个公司做的,网站建设的请示报告,长沙网络优化推广公司,123手机浏览器redis的数据类型#xff1f;
string字符串#xff1a;类似于java中MapString,String。存储字符串、JSON数据、验证码等。
Hash字典#xff1a;类似java中MapString, MapSpring,String。比较适合存储对象数据。
List列表#xff1a;类似java中Ma…redis的数据类型
string字符串类似于java中MapString,String。存储字符串、JSON数据、验证码等。
Hash字典类似java中MapString, MapSpring,String。比较适合存储对象数据。
List列表类似java中MapString, ListString。有序、可重复集合。
Set集合类似java中MapString, SetString。无序不可重复。redis提供了交集、并集等操作。
ZSet有序集合类似java中MapString, Sort SetString。redis中在zset中提供了score属性可以根据score进行排序。常用于排行榜等。
什么是缓存击穿、穿透、雪崩
缓存击穿redis中某一个key到了过期时间但这个key还承接着大量的并发请求导致并发到达数据库导致数据库压力剧增压垮、断掉。
解决给key设置合理有效时间对应热点key设置永不过期。互斥锁当缓存失效时通过互斥锁来保护数据库的访问过程。当一个热点key失效时用互斥锁方式只让一个请求到数据库查询数据并加载到缓存。逻辑过期当查询缓存发现逻辑时间已过期时会成功获取一个互斥锁并开启一个新线程进行查询数据库重建缓存数据的操作然后写入缓存并重置逻辑过期时间最后释放锁。这种方法可以在缓存击穿问题发生时避免大量请求直接访问数据库减轻数据库压力。
缓存穿透查询了一个redis中不存在并且数据库中也不存在的数据。每次请求直达数据库
解决缓存空数据keynull。布隆过滤器先在布隆过滤器中判断是否存在不存在直接返回。
缓存雪崩在同一时间内redis中大量的key都过期了导致大量请求到达数据库。
解决给不同的可以设置不同的过期时间给过期时间添加随机姓。利用redis集群提高可用性。
redis的数据过期策略和数据淘汰策略
惰性过期策略查询一个key判断是否过期过期直接删除。
定期过期策略在redis中每过一段时间查询key是否过期过期直接删除。
redis的过期策略是惰性过期策略加定期过期策略。查询一个key若过期就直接删除。每隔一段时间随机抽取一定数量的key查询是否过期过期直接删除。
当redis的内存满了会触发数据淘汰策略。
redis内存不够不删除任何数据直接报错。redis的默认方式
LRU最近最少使用。用当前时间减去最后一次访问时间值越大被删除的优先级越高。
LFU最少频率使用。redis中会统计每个key的访问频率值越小被删除的优先级越高。
redis是单线程为什么还那么快
因为redis是纯内存操作的redis是单线程。
每来一个请求IO多路复用就会创建一个socket这样redis就可以同时处理多个请求了。然后redis会把socket压到一个队列中一个一个执行。单线程处理并返回结果。
redis的持久化
RDB是基于内存快照的方式进行数据的全量备份。redis的主进程根据配置自动触发fork一个子进程进行全量备份二进制文件。但redis宕机会丢失距下一次快照时间内的数据。重启后恢复数据快。redis默认开启
AOF是基于日志文件进行数据备份。每一次Redis写操作都记录在AOF日志中。当AOF体积大到配置值会触发AOF重写操作生成一个新的AOF文件。AOF比RDB文件大重启后恢复数据较慢。
redis分布式锁
Redis分布式锁是由Redisson实现的。原理为setnx和lua脚本setnx是判断key是否存在若存在才添加这个行为可以视为上锁。Del删除key可以视为释放锁。
redisson有个watchDog的线程一个线程获取锁后watchDog会给持锁线程续期。
Redisson是可重入锁内部有hash存储线程与重入次数同一个线程每次获取锁会对应加1释放锁会减1
Redisson不能解决主从数据一致的问题但可以用redisson提供的红锁解决但性能很低可以用zookeeper。
主从数据同步
一个redis的并发能力是有上限的进一步提高并发能力就需要搭建主从集群。redis集群分为主节点只有一个提供读和写操作。从节点多个提供读操作。从节点需要与主节点进行数据同步。从节点请求同步发送自己的版本id和偏移量信息主节点判断是否是第一次同步数据若为第一次bgsave则会fork一个子进程生成rdb文件发给子节点子节点根据rdb进行数据同步。若不为第一次主节点每次操作会记录到一个relp的文件根据从节点发来的偏移量发送记录操作。子进程根据写操作同步数据。
哨兵机制
场景redis是集群部署并且还有哨兵集群。哨兵会实时监控主节点redis的情况当一个哨兵检测主节点redis宕机并不会主从替换因为一个哨兵检测异常可能因为网络的问题导致。当大部分哨兵发现主节点redis异常会进行哨兵选举让一个哨兵进行主从切换。自动切换