
Redis
文章平均质量分 77
整理工作和学习过程中一些Redis的问题,方便需要时候查询,也方便交流改进
stormkai
Java
展开
-
Redis持久化
Redis持久化RDB、AOF。RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做,简单来说就是把内存中的所有数据都记录到磁盘中。当Redis故障重启后,此磁盘读取快照文件,恢复数据。AOF全称为Append Only File(追加文件),Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件原创 2024-01-02 11:45:00 · 410 阅读 · 0 评论 -
Redis双写一致性
Redis数据双写一致性:当修改数据库中数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致。延迟双删(有脏数据风险):先删缓存,再修改数据库,延时再删缓存(删除可能是脏数据的缓存)。延迟时间不可控。异步通知(数据最终一致性):基于MQ;基于canal;分布式锁(数据强一致性,性能低):使用读多写少的情况,强一致,性能低原创 2024-01-02 10:45:00 · 1328 阅读 · 0 评论 -
Redis数据淘汰策略
Redis数据淘汰策略:当Redis的内存不够用时,此时向Redis添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据删除操作被称之为内存的淘汰策略。LRU:最近最少使用;LFU:最少频率使用。8种淘汰策略:noeviction(默认)不淘汰任何key,当内存满时不允许写入新数据,会直接报错;volatile-ttl对设置了ttl的key,比较key的剩余ttl值,越小越优先淘汰;allkeys-random对全体key,随机进行淘汰;volatile-random对设置了ttl原创 2024-01-02 09:45:00 · 405 阅读 · 0 评论 -
Redis数据删除策略(惰性删除+定期删除)
Redis数据删除策略:惰性删除+定期删除。惰性删除:设置key过期时间后,不管它,需要用该key时,再检查是否过期,过期就删掉,没过期返回。对CPU友好,对内存不友好。定期删除:每隔一堆时间,对一些key(随机)进行检查,删除里面过期的key。两种模式:SLOW模式和FAST模式。SLOW模式:定时任务,执行频率默认10hz,每次不超过25ms。在redis.conf中修改。FAST模式:执行频率不固定,两次间隔不低于2ms,每次耗时不超过1ms。优点:可以限制操作的执行时长和频率来减少对cpu的影响缺点原创 2024-01-02 02:46:13 · 1449 阅读 · 0 评论 -
Redis缓存穿透,缓存击穿,缓存雪崩
Redis缓存穿透,缓存击穿,缓存雪崩。缓存穿透:查询一个不存在的数据,mysql查询不到也不会写入缓存,导致每次请求都查数据库。解决方案:1.缓存空数据;2.使用布隆过滤器。缓存击穿:某个key设置了过期时间,过期时候有大量并发请求过来,这些并发请求瞬间把mysql压垮。解决方案:1.互斥锁;2.逻辑过期.缓存雪崩:同一时间大量的缓存key同时过期或者Redis服务宕机,导致大量的请求到达mysql,给mysql带来巨大压力。解决方案:1.redis集群提高服务可用性;2.多级缓存;3.降级限流;4.给k原创 2024-01-02 09:00:00 · 1135 阅读 · 0 评论 -
Redis之zset类型
Redis之zset类型:添加元素:ZADD key score member [score member ...]按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素:ZRANGE key start stop [WITHSCORES]获取元素的分数:ZSCORE key member删除元素:ZREM key member [member ...]获取指定分数范围的元素:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset原创 2023-09-27 20:17:28 · 259 阅读 · 0 评论 -
Redis之set类型
Redis之set类型:添加元素:SADD key member [member ...]删除元素:SREM key member [member ...]获取集合中的所有元素:SMEMBERS key判断元素是否在集合中:SISMEMBER key member获取集合中的元素个数:SCARD key从集合中随机弹出一个元素,元素不删除:SRANDMEMBER key [数字]从集合中随机弹出一个元素,出一个删一个:SPOP key将元素从一个集合转移到另外一个集合:SMOVE ...原创 2023-09-25 21:27:29 · 536 阅读 · 0 评论 -
Redis之list类型
Redis之list类型:向列表左边添加元素:LPUSH key value [value...]向列表右边添加元素:RPUSH key value [value...]从列表左边弹出元素:LPOP key从列表右边弹出元素:RPOP key查看列表:LRANGE key start stop获取列表中元素的个数:LLEN key删除列表中指定的值:LREM key count value获取/指定索引元素的值:LINDEX key index; LSET key index value原创 2023-09-21 21:41:22 · 167 阅读 · 0 评论 -
Redis之hash类型
Redis之hash类型设置/获取一个字段:HSET key field value; HGET key field一次设置/获取多个字段:HMSET key field value [field value ...]/HMGET key field [field ...]获取所有字段值:HGETALL key获取kye内全部field数量:HLEN key删除key内字段:HDEL key field判断字段是否存在:HEXISTS key field...原创 2023-09-20 20:47:47 · 297 阅读 · 0 评论 -
Redis之String类型
Redis之String类型:赋值/取值:set key value ; get key同时设置/获取多个值: mset key value [key value ...]; mget key [key ...]数值增减:INCR key; INCRBY key increment; DECR key; DECRBY key decrement;获取字符串长度:STRLEN key向尾部追加值:APPEND key value分布式锁:setnx key value;原创 2023-09-19 21:41:08 · 285 阅读 · 0 评论 -
Redis中flushdb和flushall命令的区别
Redis中flushdb和flushall命令都可以清空数据库,不过需要注意以下几点: flushdb命令只会清除当前数据库中的数据,而不会影响其他数据库 flushall会清除Redis实例所有数据库(0-15)的缓存数据,执行时候需要小心原创 2023-06-26 17:44:25 · 4675 阅读 · 1 评论 -
Redis列表类型(list)模拟队列操作
lpush表示从从列表左边添加元素,返回值表示增加元素后列表的长度。lpush也可以同时添加多个元素,如rpop表示从右侧元素列表中移除元素,返回被移除的元素。llen返回列表的长度lrange返回指定区间的元素,0代表列表的第一个元素,1代表列表的第2个元素,以此类推;也支持负数,-1代表列表的最后一个元素,-2代表列表的倒数第2个元素以此类推。del删除list列表所有元素rpush表示从从列表右边添加元素,返回值表示增加元素后列表的长度。rpush也可以同时添加多个元素,如。原创 2023-06-26 16:18:18 · 1120 阅读 · 0 评论