- 1 设置带过期时间的 key # 时间复杂度:O(1),最常用的方式 expire key seconds # 字符串独有的方式 setex(String key, int seconds, String value) 12345 除了string独有设置过期时间方法,其他类型都需要依靠expire方法来设置时间。 如果没有设置时间,那缓存就是永不过期。 如果设置... 1 设置带过期时间的 key # 时间复杂度:O(1),最常用的方式 expire key seconds # 字符串独有的方式 setex(String key, int seconds, String value) 12345 除了string独有设置过期时间方法,其他类型都需要依靠expire方法来设置时间。 如果没有设置时间,那缓存就是永不过期。 如果设置...
- 1 sdown和odown转换机制 两种失败状态 1.1 概念 sdown主观宕机 一个哨兵自己觉得一个master宕机odown客观宕机 quorum数量的哨兵都觉得一个master宕机 1.2 达成条件 sdown 一个哨兵ping一个master,超过is-master-down-after-millisecondsodown 一个哨兵在指定时... 1 sdown和odown转换机制 两种失败状态 1.1 概念 sdown主观宕机 一个哨兵自己觉得一个master宕机odown客观宕机 quorum数量的哨兵都觉得一个master宕机 1.2 达成条件 sdown 一个哨兵ping一个master,超过is-master-down-after-millisecondsodown 一个哨兵在指定时...
- 2 大Key 如果一个Key的Value特别大,那么可能会对Redis产生巨大的性能影响,因为Redis是单线程模型,对大Key进行查询或删除等操作,可能会引起Redis阻塞甚至是高可用切换。 应该如何查询Redis中的大Key,以及如何在设计上实现大Key的拆分呢? 2.1 单个K存储的V很大 key分类如下: 该key需要每次都整存整取 尝试将对象分拆成几... 2 大Key 如果一个Key的Value特别大,那么可能会对Redis产生巨大的性能影响,因为Redis是单线程模型,对大Key进行查询或删除等操作,可能会引起Redis阻塞甚至是高可用切换。 应该如何查询Redis中的大Key,以及如何在设计上实现大Key的拆分呢? 2.1 单个K存储的V很大 key分类如下: 该key需要每次都整存整取 尝试将对象分拆成几...
- 1 现在常见的Java工程师/架构师对缓存技术的了解和掌握程度 工作中都会用到一些缓存技术,redis/memcached基础使用,初步的集群知识 我面试过的人里,能掌握到很少的缓存架构的人,屈指可数,个位数,而且都是在大公司有过类似的大型复杂系统架构经验的人 2 缓存架构/技术掌握的不够,对你的发展带来了哪些阻碍? 2.1 工作中 如果你这块技术掌握不够,然... 1 现在常见的Java工程师/架构师对缓存技术的了解和掌握程度 工作中都会用到一些缓存技术,redis/memcached基础使用,初步的集群知识 我面试过的人里,能掌握到很少的缓存架构的人,屈指可数,个位数,而且都是在大公司有过类似的大型复杂系统架构经验的人 2 缓存架构/技术掌握的不够,对你的发展带来了哪些阻碍? 2.1 工作中 如果你这块技术掌握不够,然...
- 1 秒杀场景下的数据一致性问题 某商品库存10,A想买6,B想买5。 1.1 做梦 A先买走6,库存剩4,此时B应该无法购买5,给出数量不足提示 1.2 现实 AB获取到商品都剩10,A买走6,在A更新库存前,B又买走5,此时B更新库存,商品还剩5。 1.3 想当然地解决方案 给共享资源或对共享资源的操作加锁,来保证对资源的访问互斥。利用Reentran... 1 秒杀场景下的数据一致性问题 某商品库存10,A想买6,B想买5。 1.1 做梦 A先买走6,库存剩4,此时B应该无法购买5,给出数量不足提示 1.2 现实 AB获取到商品都剩10,A买走6,在A更新库存前,B又买走5,此时B更新库存,商品还剩5。 1.3 想当然地解决方案 给共享资源或对共享资源的操作加锁,来保证对资源的访问互斥。利用Reentran...
- 1 客户端优化 pipeline 批量操作 连接池应用 2 合理的淘汰机制 设置合理的内存大小设置合理的过期时间选择合适的淘汰策略 3 内存优化 https://redis.io/topics/memory-optimization 不同大小,底层数据结构不同: hash-max-ziplist-value 64 zset-max-ziplist-val... 1 客户端优化 pipeline 批量操作 连接池应用 2 合理的淘汰机制 设置合理的内存大小设置合理的过期时间选择合适的淘汰策略 3 内存优化 https://redis.io/topics/memory-optimization 不同大小,底层数据结构不同: hash-max-ziplist-value 64 zset-max-ziplist-val...
- 只要使用Redis缓存,就必然存在缓存和DB的数据一致性问题。若数据不一致,那么业务应用从缓存中读取的数据就不是最新数据,这会导致严重的错误。比如把电商商品的库存信息缓存在Redis,若库存信息不对,则业务层下单操作就可能出错,这是不能接受的。 为何缓存和DB数据会不一致 数据一致性是什么意思,“一致性”包含如下情况: 若缓存中有数据,则缓存的数据值需要和DB值相... 只要使用Redis缓存,就必然存在缓存和DB的数据一致性问题。若数据不一致,那么业务应用从缓存中读取的数据就不是最新数据,这会导致严重的错误。比如把电商商品的库存信息缓存在Redis,若库存信息不对,则业务层下单操作就可能出错,这是不能接受的。 为何缓存和DB数据会不一致 数据一致性是什么意思,“一致性”包含如下情况: 若缓存中有数据,则缓存的数据值需要和DB值相...
- 请求/响应协议和RTT Redis是一种基于客户端-服务端模型及请求/响应协议的TCP服务。 这意味着一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常以阻塞模式,等待服务端响应服务端处理命令,并将结果返回给客户端。 因此,例如下面是4个命令序列执行情况: Client: INCR X Server: 1 Client: IN... 请求/响应协议和RTT Redis是一种基于客户端-服务端模型及请求/响应协议的TCP服务。 这意味着一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常以阻塞模式,等待服务端响应服务端处理命令,并将结果返回给客户端。 因此,例如下面是4个命令序列执行情况: Client: INCR X Server: 1 Client: IN...
- 好友相关的功能至少包含 关注 / 取关我(他)的关注我(他)的粉丝共同关注我关注的人也关注他 这样的功能如果采用数据库,只是单纯得到用户的一些粉丝或者关注列表,也很简单、易实现,但若我想查出两个甚至多个用户共同关注人或想查询两个或者多个用户的共同粉丝,就会很麻烦,效率也不会很高。 但如果用 redis 去做的话就会相当的简单且高效。因为 redis 自己本身带有专... 好友相关的功能至少包含 关注 / 取关我(他)的关注我(他)的粉丝共同关注我关注的人也关注他 这样的功能如果采用数据库,只是单纯得到用户的一些粉丝或者关注列表,也很简单、易实现,但若我想查出两个甚至多个用户共同关注人或想查询两个或者多个用户的共同粉丝,就会很麻烦,效率也不会很高。 但如果用 redis 去做的话就会相当的简单且高效。因为 redis 自己本身带有专...
- 1 需求 添加积分 在用户签到的基础上添加用户积分,签到 1 天送 10 积分,连续签到 2 天送 20 积分,3 天送 30 积分,4 天以上均送 50 积分。积分排行榜 2 表设计 利用MySQL保存积分数据 这类似于一张日志表,因此数据量很大,想要统计用户积分做排行榜时,表数据可能如下: 3 实现TopN积分排行榜 MySQL 方案 统计 SQL ... 1 需求 添加积分 在用户签到的基础上添加用户积分,签到 1 天送 10 积分,连续签到 2 天送 20 积分,3 天送 30 积分,4 天以上均送 50 积分。积分排行榜 2 表设计 利用MySQL保存积分数据 这类似于一张日志表,因此数据量很大,想要统计用户积分做排行榜时,表数据可能如下: 3 实现TopN积分排行榜 MySQL 方案 统计 SQL ...
- 一切网络通信,皆需要双方遵守协议才能互联。Redis协议在以下几点之间做出了折衷: 简单的实现快速被计算机解析简单到可被人工解析 网络层 Redis在TCP端口6379上监听到来的连接,客户端连接到来时,Redis服务器为此创建一个TCP连接。在客户端与服务器端之间传输的每个Redis命令或者数据都以\r\n结尾。 请求 Redis接收由不同参数组成的命令。一... 一切网络通信,皆需要双方遵守协议才能互联。Redis协议在以下几点之间做出了折衷: 简单的实现快速被计算机解析简单到可被人工解析 网络层 Redis在TCP端口6379上监听到来的连接,客户端连接到来时,Redis服务器为此创建一个TCP连接。在客户端与服务器端之间传输的每个Redis命令或者数据都以\r\n结尾。 请求 Redis接收由不同参数组成的命令。一...
- 简介 Redisson 是一个高级的分布式协调 Redis 客服端,能帮助用户在分布式环境中轻松实现一些 Java 的对象 (Bloom filter, BitSet, Set, SetMultimap, ScoredSortedSet, SortedSet, Map, ConcurrentMap, List, ListMultimap, Queue, Blockin... 简介 Redisson 是一个高级的分布式协调 Redis 客服端,能帮助用户在分布式环境中轻松实现一些 Java 的对象 (Bloom filter, BitSet, Set, SetMultimap, ScoredSortedSet, SortedSet, Map, ConcurrentMap, List, ListMultimap, Queue, Blockin...
- 1 热点key的产生原因 1.1 用户消费的数据>>>生产的数据 比如秒杀活动、热点微博、热评,某件商品被数万次点击浏览或购买时,就会造成热点问题被大量发布、浏览的热点新闻、热点评论等读多写少场景也会产生热点问题 1.2 请求的分片过于集中,突破单点性能极限 在服务端读数据进行访问时,往往会对数据进行分片,此过程中会在某一主机 Server 上... 1 热点key的产生原因 1.1 用户消费的数据>>>生产的数据 比如秒杀活动、热点微博、热评,某件商品被数万次点击浏览或购买时,就会造成热点问题被大量发布、浏览的热点新闻、热点评论等读多写少场景也会产生热点问题 1.2 请求的分片过于集中,突破单点性能极限 在服务端读数据进行访问时,往往会对数据进行分片,此过程中会在某一主机 Server 上...
- Session代表的是客户端与服务器的一次交互过程,这个过程可以是连续也可以是时断时续的。曾经的Sevlet时代(JSP),一旦用户与服务端交互,Tomcat就会为用户创建一个session,同时前端会有一个jsessionid,每次交互都会携带。 服务器只要在接到用户请求时候,就可以拿到jsessionid, 并根据这个ID在内存中找到对应的会话session,当拿到... Session代表的是客户端与服务器的一次交互过程,这个过程可以是连续也可以是时断时续的。曾经的Sevlet时代(JSP),一旦用户与服务端交互,Tomcat就会为用户创建一个session,同时前端会有一个jsessionid,每次交互都会携带。 服务器只要在接到用户请求时候,就可以拿到jsessionid, 并根据这个ID在内存中找到对应的会话session,当拿到...
- 各种社交软件里面都有附件的人的需求,在该应用中,我们查询附近 1 公里的食客,同时只需查询出 20 个即可。 解决基于地理位置的搜索,很多数据库品牌都支持:MySQL、MongoDB、Redis 等都能支持地理位置的存储。 当用户登录应用时,或者保持用户登录后用户在使用应用时,客户端是可以时刻获取用户位置信息的(前提是用户要开启位置获取的权限),客户端获取到最新的地理... 各种社交软件里面都有附件的人的需求,在该应用中,我们查询附近 1 公里的食客,同时只需查询出 20 个即可。 解决基于地理位置的搜索,很多数据库品牌都支持:MySQL、MongoDB、Redis 等都能支持地理位置的存储。 当用户登录应用时,或者保持用户登录后用户在使用应用时,客户端是可以时刻获取用户位置信息的(前提是用户要开启位置获取的权限),客户端获取到最新的地理...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签