
Redis
文章平均质量分 93
01Byte空间
做过开发,创过业,踩过坑。从Java后台开发,PL/SQL开发,Pro*C开发,到shell脚本,再到兼职开发的MySQL DBA。
为人友善诚恳,工作踏实,吃苦耐劳,富有朝气,激情,以及团队合作意识。
专注后端技术:Java、Shell、Socket、MySQL、Oracle、Linux、中间件、分布式、微服务。偶尔扯扯淡、分享技术干货。
https://github.com/zhouxx1055
https://zhouxx.blog.youkuaiyun.com/
展开
-
面试题:Java基础之算法系列【Redis位图BitMap的应用案例】
Redis的位图(Bitmap)是一种非常有用的数据结构,特别适用于需要处理大量布尔值或二值状态数据的场景。::位图由一系列二进制位组成,每位只能表示0或1,因此非常适合存储布尔类型的数据。例如,记录用户的在线状态(在线为1,离线为0)或某事件的发生状态(发生为1,未发生为0)。:位图可以用于统计特定条件下的数据数量。例如,统计用户的登录天数、某段时间内的活跃用户数,或者统计某事件在特定时间段内发生的次数。通过BITCOUNT命令,可以快速计算出位图中被设置为1的位的数量。。原创 2024-12-29 18:45:24 · 758 阅读 · 0 评论 -
科普文:Redis系列之【Redis 实践之21条军规及详细解读】
关于redis使用的一些坑进行了经验总结,希望能给大家带来一些帮助适用场景:并发量大、访问量大的业务规范:介绍军规内容解读:讲解军规设置原因,解读比军规内容更重要写在前面的话:总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。原创 2024-08-15 00:07:36 · 517 阅读 · 0 评论 -
科普文:Redis系列之【Redis 实践之常见的坑】
好了,总结一下,这篇文章我们主要讲了 Redis 在「命令使用」、「数据持久化」、「主从同步」3 个方面可能存在的「坑」。准备好了思维导图,方便你更好地理解和记忆。希望你在使用 Redis 时,可以提前规避这些坑,让 Redis 更好地提供服务。最后,我想和你聊一聊在开发过程中,关于踩坑的经验和心得。其实,接触任何一个新领域,都会经历陌生、熟悉、踩坑、吸收经验、游刃有余这几个阶段。那在踩坑这个阶段,如何少踩坑?或者踩坑后如何高效率地排查问题呢?1) 多看官方文档 + 配置文件的注释。原创 2024-08-15 00:06:57 · 677 阅读 · 0 评论 -
科普文:Redis系列之【Redis实践之分布式锁中的坑】
本文将给大家分析阐述,Redis分布式锁的12个坑,建议直接用redisson实现的分布式锁,可以避免踩坑,需要的朋友可以参考下。其实,在我们绝大多数分布式业务场景中,使用redis分布式锁就够了,真的别太较真。因为数据不一致问题,可以通过最终一致性方案解决。但如果系统不可用了,对用户来说是暴击一万点伤害。可以参考前面三篇文章,有条件的尽量选择Etcd实现的分布式锁,其次是ZK;一般Redisson的分布式锁能够满足我们大多数业务场景。具体抉择仅供参考,一切从实际触发。原创 2024-08-15 00:06:23 · 1043 阅读 · 0 评论 -
科普文:Redis系列之【Redis 实践及思考】
在做需求的过程中,发现了很多东西不能拍脑袋决定,而是前期做技术方案的时候,想清楚,调研好,用数据和逻辑去说服自己。原创 2024-08-14 15:54:47 · 1018 阅读 · 0 评论 -
科普文:Redis系列之【Redis 性能问题及优化方案】
redis-cli 使用: 使用 redis-cli 可以方便地进行数据的操作、缓存命中率的监控,以及模拟测试数据等。slow log 命令使用: 慢查询日志可以输出所有时长大约指定毫秒的 Redis 命令,方便进行性能问题的定位。redis-benchmark 命令使用:该命令用于进行性能和压力测试,一般常用于 Cluster 测试。需要重点指出的是,关于 Redis 的性能优化,其核心在于采取灵活的策略和一系列方案的组合应用。原创 2024-08-14 15:43:25 · 1129 阅读 · 0 评论 -
科普文:从源码解读5种Redis基本数据类型
redis作为一款优化到极致的中间件,不会单纯使用一种数据类型去实现一个功能,而会根据当前的情况选择最合适的数据结构,比如zset就是dict + skiplist,甚至当元素较少的时候zsetAdd方法会优先选择ziplist而不直接使用skiplist,以到达节约内存的效果(当小key泛滥的时候很有效果),当一种数据结构存在不足的情况下,可以通过和其它数据结构搭配来弥补自身的不足。决定了一个跳表的内存占用和查询复杂度:概率设置越低,层数越少,元素指针越少,内存占用也就越少,但查询复杂会变高,反之亦然。原创 2024-07-29 19:29:50 · 855 阅读 · 0 评论 -
实战:Redis实现排行榜、点赞和关注功能的基本操作
关注功能是社交网络中的核心功能,用户可以关注其他用户以获取其动态。Redis的集合(Set)数据结构也适合实现关注功能,分别用两个集合存储每个用户的关注列表和粉丝列表。:使用有序集合(Sorted Set),其中成员是用户ID或项目ID,分数是对应的积分或权重。:使用集合(Set),一个集合存储关注列表,一个集合存储粉丝列表。原创 2024-07-27 22:39:20 · 1296 阅读 · 0 评论 -
科普文:RedSearch全文搜索
RediSearch是一个Redis模块,为Redis提供查询、二次索引和全文搜索。要使用RediSearch,首先要在Redis数据上声明索引。然后可以使用重新搜索查询语言来查询该数据。RedSearch使用压缩的反向索引进行快速索引,占用内存少。RedSearch索引通过提供精确的短语匹配、模糊搜索和数字过滤等功能增强了。原创 2024-07-22 02:59:24 · 865 阅读 · 0 评论 -
规范:Redis规范
在公司项目中,redis属于高频使用,在使用中,我们遇到了各种各样的redis问题,于是针对自身情况梳理了一个redis使用规范。原创 2024-07-21 09:51:38 · 1369 阅读 · 0 评论 -
实战:搞懂Redisson、分布式锁、限流器
Redission是一个基于Redis实现的Java分布式对象存储和缓存框架。它提供了丰富的分布式数据结构和服务。例如:分布式锁、分布式队列、分布式Rate Limiter等。Redisson顾名思义,Redis的儿子,Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。原创 2024-07-19 12:07:15 · 1491 阅读 · 0 评论 -
实战:Memcached的概念作用以及用法详解
memcached是LiveJournal旗下的Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已经成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。传统的Web应用都将数据保存到RDBMS中,应用服务器从RDBMS中读取数据、处理数据并在浏览器中显示。但是随着数据量增大、访问的集中、就会出现RDBMS的负担加重、数据库响应变慢、导致整个系统响应延迟增加。原创 2024-07-18 09:48:58 · 968 阅读 · 0 评论 -
实战:Redis性能测试、调优和使用规范
如果你的业务对数据的实时性要求较高,或者不能容忍数据的丢失,可以选择AOF持久化,或者同时开启RDB和AOF持久化,让AOF优先于RDB恢复数据。如果你的业务对数据的实时性要求不高,或者可以容忍一定的数据丢失,你可以选择RDB持久化,或者关闭持久化,只依赖主从复制来保证数据的可用性。比如,假设我们的服务器内存为16GB,为了保证Redis的正常运行,我们应当将Redis实例的最大内存限制设置在12GB以下,以防止内存溢出。因此,在保存数据时,应该设置一个合理的过期时间,以自动清理不再需要的数据。原创 2024-07-18 02:53:57 · 2234 阅读 · 0 评论 -
实践:Redis6.0配置文件解读
详细解读redis配置文件Units配置数据单位换算关系配置大小单位:当需要内存大小时,可以指定。开头定义了一些基本的度量单位,只支持bytes,不支持bit,大小写不敏感,因此 1GB 1Gb 1gB 都是一样的:原创 2024-07-18 02:13:53 · 1339 阅读 · 0 评论 -
科普文:深入理解Redis
话说有一名意大利程序员,在 2004 年到 2006 年间主要做嵌入式工作,之后接触了 Web,2007 年和朋友共同创建了一个网站,并为了解决这个网站的负载问题(为了避免 MySQL 的低性能),于是亲自定做一个数据库,并于 2009 年开发完成,这个就是 Redis。这个意大利程序员就是 Salvatore Sanfilippo 江湖人称 Redis 之父,大家更习惯称呼他 Antirez。原创 2024-07-17 11:03:43 · 1076 阅读 · 0 评论 -
实战:Redis布隆过滤器性能对比
特点:对于某个bit 设置0或1,对于大量的值需要存储,非常节省空间,查询速度极快,但是不能查询整个key所有的bit,在一次请求有大量的值需要过滤的场景会出现多次请求getbit,性能会急剧下降,需要把多个gitbit合并成批次,使用lua脚本或者pipeline执行提高效率。特点:redis 4.0 以上官方提供的一个插件,原生Bloom过滤器,参数包括 布隆过滤器的大小,误差率等,支持批量写入和批量查询,性能更优,针对一次大量请求,批量查询接口性能更快。原创 2024-07-14 17:10:15 · 560 阅读 · 0 评论 -
科普文:Redis一问一答
缓存穿透是指在缓存系统中,频繁查询一个不存在于缓存中的数据,从而导致每次查询都必须请求数据库,造成数据库负担过重。这种情况通常发生在恶意攻击、大量无效请求或数据更新不及时的情况下。缓存穿透会导致以下问题:数据库压力增大: 由于每次查询都需要访问数据库,会导致数据库的负载大幅增加,可能引发性能问题。响应时间延长: 由于缓存未命中,每次查询都要请求数据库,导致响应时间延长,影响用户体验。原创 2024-07-14 17:02:02 · 883 阅读 · 0 评论 -
科普文:从Redis1.0到Redis7.0的发展历程来理解为什么Redis钟爱单线程
Redis自身出道就是优秀,基于内存操作、数据结构简单、多路复用和非阻塞 I/O、避免了不必要的线程上下文切换等特性,在单线程的环境下依然很快;但对于大数据的 key 删除还是卡顿厉害,因此在 Redis 4.0 引入了多线程unlink key/flushall async 等命令,主要用于 Redis 数据的异步删除;而在 Redis6/7中引入了 I/O 多线程的读写,这样就可以更加高效的处理更多的任务了,Redis 只是将 I/O 读写变成了多线程。原创 2024-07-10 13:45:48 · 1894 阅读 · 0 评论 -
限流:深入理解微服务高可用三板斧“限流”
限流顾名思义,就是对请求或并发数进行限制;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请求进行限制,以防止自身服务由于资源耗尽而停止服务。在限流中有两个概念需要了解。阈值:在一个单位时间内允许的请求量。如 QPS 限制为10,说明 1 秒内最多接受 10 次请求。拒绝策略:超过阈值的请求的拒绝策略,常见的拒绝策略有直接拒绝、排队等待等。原创 2024-07-10 09:07:38 · 1029 阅读 · 0 评论 -
Java web应用性能分析之【高并发之缓存-多级缓存】
缓存是一种临时存储数据的技术,意味着在数据被使用之前将其复制到一个更快的存储介质中。在计算机领域,缓存一般用于提高系统的响应速度和性能。缓存是一种提高系统性能的技术,但需要适时清理以避免问题。删除缓存可以释放存储空间并保持系统的稳定性,但也可能带来一些不便。因此,在删除缓存之前,我们需要慎重考虑,并了解系统的特殊需求。1.磁盘缓存:存储在硬盘等永久性存储介质上,用于加速数据的读取和访问。2.CPU缓存:位于处理器内部的高速存储器,用于暂时存储频繁访问的数据或指令,提高计算机的性能。原创 2024-05-18 10:46:38 · 1614 阅读 · 0 评论