摘要:keys命令的时间复杂度为O(n),当生产环境数据量大,数据数量很多时,使用keys命令将会耗时高,导致服务器CPU急剧升高。由于redis是单线程模型,在执行耗时的keys等时间复杂度高的命令时,将会导致其他命令阻塞,生产上可能会导致缓存雪崩,导致大量请求全部打到数据库上,从而导致数据库被压垮,从
阅读全文
摘要:转自 https://blog.csdn.net/shuangyueliao/article/details/89344256 一、写在前面 现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeep
阅读全文
摘要:转自:https://blog.csdn.net/sym542569199/java/article/details/88746776 从redis 2.6.0版本开始,redis内置了Lua解释器,并提供了eval命令来解析Lua脚本求值。 1. 语法格式 语法: eval script numk
阅读全文
摘要:某功能会频繁地大批量地往redis写入数据,数据量大概10内超过10000条 插入时可能会报错,报错时间点不定,大概都是运行一段时间后报错,错误信息如下: nested exception is io.lettuce.core.RedisCommandExecutionException: MISC
阅读全文
摘要:./redis-cli keys "IQC::USER:*" | xargs /usr/local/redis/bin/redis-cli del
阅读全文
摘要:转自https://www.cnblogs.com/martinzhang/p/3415204.html Optimistic locking using check-and-set(乐观锁)乐观锁介绍:watch指令在redis事物中提供了CAS的行为。为了检测被watch的keys在是否有多个c
阅读全文
摘要:最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。 读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。 更新的时候,先更新数据库,然后再删除缓存。 为什么是删除缓存,而不是更新缓存? 原因很简单,很多时候,在复杂点的缓存场景,缓存不单单是
阅读全文
摘要:一般主要包括4种处理过期方,其中expire都是以秒为单位,pexpire都是以毫秒为单位的。 备注:timestamp为unix时间戳(例如:timestamp=1499788800 表示将在2017.07.12过期)1、2两种方式是设置一个过期的时间段,就是咱们处理验证码最常用的策略,设置三分钟
阅读全文
摘要:redis 过期策略 redis 过期策略是:定期删除+惰性删除。 所谓定期删除,指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。 假设 redis 里放了 10w 个 key,都设置了过期时间,你每隔几百毫秒,就检查 10w 个
阅读全文