redis
文章平均质量分 53
浩丶木
这个作者很懒,什么都没留下…
展开
-
redis过期策略
定时删除redis会将每个设置了过期时间的key放入一个独立的字典当中,以后会定时遍历这个字典来删除到期的key。惰性删除除了定时遍历之外,他还会使用惰性策略来删除过期的key。所谓惰性策略就是在客户端访问这个key的时候,redis对key的过期时间进行检查,如果过期了就立即删除。如果说定时删除是集中处理,那么惰性删除就是零散删除。定时扫描策略1.从过期字典中随机选出20个key2.删除这20个key中已经过期的key3.如果过期的key的比例超过四分之一,那就重复步骤1同时,为了保证过期原创 2022-01-17 16:56:42 · 670 阅读 · 0 评论 -
redis-事务
指令:multi:表示事务的开始exec:表示执行事务discard:表示事务的丢弃watch:监视某个变量的状态当一个客户端处于事务状态时,这个客户端发送的命令,服务器是否会立即执行,分为以下2种情况:如果客户端发送的命令为MULTI、EXEC、WATCH、DISCARD四个命令中的其中1个,服务器会立即执行这个命令。如果客户端发送的命令为以上4个命令外的其它命令,服务器不会立即执行这个命令,而是将其放到事务队列里,然后向客户端返回QUEUED回复。服务器一旦收到exec指令,才开始执行整个原创 2022-01-15 16:35:42 · 68 阅读 · 0 评论 -
布隆过滤器
什么是布隆过滤器可以把布隆过滤器理解为一个不怎么精确的set结构,当你是用他的contains方法判断某个对象是否存在的时候,他可能会误判。但是布隆过滤器也不是特别不精确,只要参数设置的合理,他的精确度也可以控制得相对足够精确。实现原理:布隆过滤器是一个bit数组当我们要映射一个值到布隆过滤器的时候,我们需要使用多个不同的哈希函数对该值进行哈希映射,并对每个生成的哈希值指向的bit位置变成1。再增加一个值值得注意的是,4 这个 bit 位由于两个值的哈希函数都返回了这个 bit 位,因此它被覆原创 2022-01-13 15:52:15 · 227 阅读 · 0 评论 -
HyperLoglog
HyperLoglog提供不精确的去重技术方案,但是也不是非常离谱,标准误差是0.81%。同时他需要的12kb的空间。但是在技术比较小的时候,他的存储空间采用稀疏矩阵存储,空间占用又很小,仅仅在技术慢慢变大,稀疏矩阵占用空间渐渐超过了阈值的时候,才会一次性转变成稠密矩阵,才会占用12kb的空间。算法:HyperLogLog算法是近似统计大量去重元素数量的算法,它内部维护了16384个桶来记录各自桶的元素数量,当一个元素过来,它会散列到其中一个桶。当元素到来时,通过 hash 算法将这个元素分派到其中的一原创 2022-01-13 15:22:22 · 448 阅读 · 0 评论 -
关于redis的夺命11连问
1.redis基本数据类型有哪些string set zest list hash2.redis为什么快绝大部分请求是纯粹的内存操作,并且采用了单线程,避免了不必要的上下文切换和竞争条件,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。3.为什么redis6.0之后改为多线程对一些大的键值对进行删除操作的话,在短时间内是删不完的,那么对于单线程来说就会阻塞后边的操作4.什么是热key,热key问题怎么解决突然有很多的请求去访问redis上的某个特定的key,造成流量过大,到达物理网原创 2021-05-17 21:19:47 · 92 阅读 · 2 评论 -
redis常见问题
redis缓存穿透和雪崩缓存穿透用户想要查询一个数据,发现redis内存数据库中没有。也就是缓存没有命中,于是向持久层数据库进行查询,如果这也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库,这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。解决方案1.布隆过滤器对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,从而避免了对底层存储系统的查询压力。缓存空对象当存储层不命中后,及时返回的空对象也将其缓存起来,同时会设置一原创 2021-04-18 14:26:02 · 95 阅读 · 0 评论 -
主从复制以及哨兵模式
redis主从复制概念:是指将一台redis服务器的数据,复制到其他的redis服务器,前者称为主节点,后者称为从节点;数据的赋值是单项的,只能由主节点到从节点。主节点以写为主,从节点以读为主默认情况下,每台redis服务器都是主节点,且一个主节点可以有多个从节点,但一个从节点只能有一个主节点。复制原理slave启动成功连接到master后会发送一个sync同步命令master接到命令,启动后台的存盘进程,同时搜集所有接收到的修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到原创 2021-04-18 13:43:26 · 248 阅读 · 0 评论 -
redis持久化
1.rdb持久化在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是snapshot快照,他恢复的时候是将快照文件直接读到内存里面。redis会单独创建一个子进程来进行持久化,会先将数据写入到一个临时文件当中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程时不进行任何io操作。确保了极高的性能触发机制:1.save的规则满足的情况下,会自动出发rdb规则2.执行flushall命令,也会出发rdb规则3.退出redis,也会产生rdb文件优点:1.适合原创 2021-04-17 18:14:53 · 94 阅读 · 0 评论 -
redis事务
redis事务本质:一组命令的集合,一个事务中的所有命令都会被序列化,在事务执行过程当中,会按照顺序执行redis事务没有隔离级别的概念redis单条命令式保存原子性,但是事务不保证原子性编译性异常:事务中的所有命令都不会执行运行时异常:如果事务队列中存在语法性错误,那么执行命令的时候,其他命令是可以正常执行的,错误命令将会抛出异常悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁乐观锁总是假设最好的情原创 2021-04-17 12:26:32 · 65 阅读 · 0 评论 -
redis-五大基本类型
string类型命令说明set设置key或者valueget获取key的值exists判断key是否存在append向字符串后面追加一些内容strlen获取字符串的长度getrange截取字符串的一部分setrange替换指定位置的字符串setex设置过期时间setnx不存在再设置mset一次性设置多个k或者vmget一次性获取多个vIncr进行数值类型的+1操作incrby根据提供的数据原创 2021-04-16 16:53:18 · 85 阅读 · 0 评论 -
redis基本信息
Nosql概述Nosql的特点:1.方便扩展2.大数据量高性能3.数据类型多样Nosql四大分类kv键值对文档型数据库列存储数据库图关系数据库Redisredis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave同步。作用:1.内存存储,持久化,内存中是断电即失。2.效率高,可以用于高速缓存3.发布订阅系统4.地图信息分析5.计时器,计数器基础知识redis默认有16个数据库默认使用的是第0个可以使用sel原创 2021-04-16 08:27:23 · 176 阅读 · 0 评论