
redis
文章平均质量分 73
啊勇的博客
一位技术小白,努力成为技术大牛
展开
-
redis中ziplist,skiplist
skiplist,ziplist是redis数据结构比较经典的应用,可以参考其中的思想原创 2021-12-06 21:50:12 · 2145 阅读 · 0 评论 -
Redis基本使用案例
说出以上使用案例,说明你使用过redis,面试官会认为你真正的使用过redis原创 2021-12-06 21:38:29 · 1889 阅读 · 0 评论 -
Redis和数据库数据不一致的问题
针对读多写少的高并发场景,我们可以使用缓存来提升查询速度。• 如果数据在Redis存在,应用就可以直接从Redis拿到数据,不用访问数据库。• 如果Redis里面没有,先到数据库查询,然后写入到Redis,再返回给应用。问题一:一旦被缓存的数据发生变化的时候,我们既要操作数据库的数据,也要操作Redis的数据,所以问题来了。现在我们有两种选择:• 先操作Redis的数据再操作数据库的数据• 先操作数据库的数据再操作Redis的数据只要有一方失败就会导致数据不一致这种情况需要更具原创 2021-12-06 21:26:49 · 3695 阅读 · 0 评论 -
Redis的持久化方式
Redis支持两种方式的持久化,一种是RDB方式、另一种是AOF(append-only-file)方式,两种持久化方式可以单独使用其中一种,也可以将这两种方式结合使用。原创 2021-12-06 21:25:24 · 15177 阅读 · 2 评论 -
Redis高可用
集群模式,主从复制模式,原创 2021-12-06 21:24:06 · 507 阅读 · 0 评论 -
redis做分布式锁
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。redis分布式锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。 解铃还须系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。可选参数从 Red原创 2021-12-06 21:16:55 · 173 阅读 · 0 评论 -
Redis的内存淘汰策略,过期策略
过期策略定期删除redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。1.从过期字典中随机 20 个 key;2.删除这 20 个 key 中已经过期的 key;redis默认是每隔 100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。注意这里是随机抽取的。为什么要随机呢原创 2021-12-06 17:00:22 · 578 阅读 · 0 评论 -
Redis缓存雪崩,缓存穿透,缓存击穿
缓存雪崩1,缓存同一时间大面积的失效(缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删光了,缓存同时失效),请求全部走数据库。2,Redis挂掉了,请求全部走数据库。导致数据库CPU和内存负载过高,甚至宕机。存雪崩如果发生了,很可能就把我们的数据库搞垮,导致整个服务瘫痪!缓存雪崩的事前事中事后的解决方案如下:对于缓存数据设置的过期时间是相同的,缓存大面积的失效1、在缓存的时候给过期时间加上一个随机值,这样就会大幅度的减少缓存在同一时间过期。2,Redis挂掉原创 2021-12-06 16:57:26 · 590 阅读 · 0 评论 -
Redis常用的5种数据类型底层结构是怎样构成的
前言Redis是一个基于内存中的数据结构存储系统,可以用作数据库、缓存和消息中间件。Redis支持五种常见对象类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)以及有序集合(Zset),我们在日常工作中也会经常使用它们。知其然,更要知其所以然,本文将会带你读懂这五种常见对象类型的底层数据结构。1. 对象类型和编码Redis使用对象来存储键和值的,在Redis中,每个对象都由redisObject结构表示。redisObject结构主要包含三个属性:type、enco原创 2021-09-24 20:58:47 · 476 阅读 · 0 评论