Redis & 分布式缓存
文章平均质量分 73
分布式缓存
c&0xff00
纸上学来终觉浅
展开
-
Redis的keys命令到底有多慢?
keys命令的用法:keys pattern查找符合正则匹配的key的列表。扫描对象是Redis服务中所有的key,想想都很慢对不对?同时执行keys命令的同时,Redis进程将被阻塞,无法执行其他命令,假如超过了哨兵的down-after-milliseconds配置,还会进行主从切换,切换过程中,如果主节点恢复正常,还可能出现脑裂等一系列问题。所以,生产环境中,建议直接禁用keys命令。Keys命令的替代方案1、scan扫描,避免阻塞2、将需要统计的数据放入一个set中 (但是这样可能出原创 2021-07-24 23:55:25 · 1380 阅读 · 1 评论 -
Redis - 通过SortedSet实现排行榜功能(解决同score下按照时间顺序排名)
背景618活动需要设计一个用户排行榜的功能,考虑到redis有SortedSet数据结构(由跳表 + 字典实现),比较适合实现排行榜。遇坑需求的场景是,如果两个用户的订单数量相同,那么先到达该订单数量的用户排在前面。一开始我先考虑的问题是:在SortedSet中,如果score相同,是怎么排序的呢?后来知道,如果score相同是按照member的字典顺序,即a排在b的前面,1排在2的前面。那我是不是可以把时间戳加到SortedSet的member中,如 时间戳_用户id。为了让时间戳小的排在前原创 2021-06-02 13:15:41 · 2964 阅读 · 0 评论 -
Redis序列化反序列化不一致 - String类型值多了双引号问题
问题背景:A服务写入Redis的数据,B服务读出后,value值多了个双引号。如 “String” 获取到的是 ““String””。问题原因:A服务添加了一个redisTemplate Bean配置:@Configurationpublic class RedisTemplateConfig { @Bean(name = "redisTemplate") public RedisTemplate setRedisTemplate(RedisConnectionFactory re原创 2021-06-01 20:38:00 · 6335 阅读 · 6 评论 -
问题分析:Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.
今天在测试环境,测试报了这样一个错,是jedis报的,不知道怎么解决,我也是搞了好一会,最后发现问题了,做如下总结:本文将会讲解:问题总结发现问题排查问题问题定位发现问题org.springframework.dao.InvalidDataAccessApiUsageException: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Comman原创 2021-03-17 09:07:24 · 618 阅读 · 0 评论 -
Redis常见使用场景问题分析
1、如何从海量key中查询出某一固定前缀的key正例:通过scan命令,scan返回的是一个游标,它不会遍历所有的key,所以速度是比较快的。命令格式:scan cursor MATCH pattern COUNT count这里的count表示你期望获取满足格式的数据量,不一定完全匹配。同时返回的key值有可能重复,在业务层要做好去重。如果一次返回的数据不够,就将上一次返回的cursor再次传入获取。反例:通过keys pattern命令,keys会遍历所有的key,耗时较长。当数据量dbs原创 2020-09-16 16:43:36 · 925 阅读 · 0 评论 -
因Redis使用不当产生的性能问题
因Redis使用不当产生的性能问题背景场景问题出现问题分析背景项目原本使用的缓存框架为EhCache,EhCache主要是基于服务器内存和磁盘进行缓存,同时也提供了相应的集群方案。我们用的是单点方案,不是集群方案。最近切换成了Redis,集成了spring-data-redis,借助原有Spring的@Cacheable注解,就可以直接切过去了。场景项目里的缓存对象主要是一些稳定的且常用的商品对照信息,例如:接口返回的结果是商品编号,项目需要根据编号进行商品名称的转换(以下称为码表转换)。而映射关系原创 2020-06-23 09:42:00 · 190 阅读 · 0 评论