
redis
文章平均质量分 88
一枚务实的码农
IT码农一枚,分享一些自用的学习资料。
展开
-
订单30分钟未支付自动取消怎么实现?
目录了解需求方案 1:数据库轮询方案 2:JDK 的延迟队列方案 3:时间轮算法方案 4:redis 缓存方案 5:使用消息队列。原创 2023-03-08 23:13:20 · 5601 阅读 · 2 评论 -
比Redis更强,性能直接飙升一倍!
什么是KeyDB?KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能,例如直接备份到AWS S3。KeyDB与Redis协议,模块和脚本保持完全兼容性。这包括脚本和事务的原子性保证。由于KeyDB与Redis开发保持同步,因此KeyDB是Redis功能的超集,从而使KeyDB取代了现有Redis部署。原创 2023-02-27 17:38:20 · 532 阅读 · 0 评论 -
Redis实战之Redisson使用技巧详解
Lettuce:一个可扩展的线程安全的 Redis 客户端,通讯框架基于 Netty 开发,支持高级的 Redis 特性,比如哨兵,集群,管道,自动重新连接等特性。但是两者并没有进一步深化,只给了你操作 Redis 数据库的工具,而 Redisson 则是基于 Redis、Lua 和 Netty 建立起了一套的分布式解决方案,比如分布式锁的实现,分布式对象的操作等等。Redisson:一款架设在 Redis 基础上,通讯基于 Netty 的综合的、新型的中间件,是企业级开发中使用 Redis 的最佳范本。原创 2023-02-26 16:00:00 · 5596 阅读 · 1 评论 -
Redis大key多key拆分方案
业务场景中经常会有各种大key多key的情况, 比如:1:单个简单的key存储的value很大2:hash, set,zset,list 中存储过多的元素(以万为单位)3:一个集群存储了上亿的key,Key 本身过多也带来了更多的空间占用(如无意外,文章中所提及的hash,set等数据结构均指redis中的数据结构 )由于redis是单线程运行的,如果一次操作的value很大会对整个redis的响应时间造成负面影响,所以,业务上能拆则拆,下面举几个典型的分拆方案。原创 2023-02-25 16:15:00 · 1155 阅读 · 0 评论 -
Spring Boot + Redis 实现分布式锁
例如,线程 A 先获取锁,proceed 方法耗时,超过了锁超时时间,到期释放了锁,这时另一个线程 B 成功获取 Redis 锁,两个线程同时对同一批数据进行操作,导致数据不准确。使用 Redis 作为分布式锁,将锁的状态放到 Redis 统一维护,解决集群中单机 JVM 信息不互通的问题,规定操作顺序,保护用户的数据正确。有些业务请求,属于耗时操作,需要加锁,防止后续的并发操作,同时对数据库的数据进行操作,需要避免对之前的业务造成影响。所以记得多打点 Log,分析问题时可以更快一点。原创 2023-02-19 10:46:30 · 1286 阅读 · 0 评论 -
redis事务和持久化
● 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,Linux中引入了"写时复制技术"事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。● 从输入multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入exec后,redis会将之前的命令队列中的命令依次执行。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式。原创 2023-01-24 10:15:00 · 137 阅读 · 0 评论 -
redis常用五大数据类型及其基础命令
Zset是Redis提供的一个特别的数据结构,一方面它等价于java的数据结构Map,可以给每一个元素赋予一个权重score,另一方面它又类似于TreeSet,内部的元素会按照权重。首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表,它将所有的元素紧挨着一起存储,分配的一块连续的内存。Set对外提供的功能与lisst类似是一个列表的功能,set可以自动排重,需要用列表数据,又不希望出现重复数据时,set是一个很好的选择。原创 2023-01-24 10:45:00 · 390 阅读 · 0 评论