
《Redis 入门到超神系列》
文章平均质量分 94
Redis 入门到超神系列
墨家巨子@俏如来
EasyJF开源团队成员,10 年Java开发及项目管理经验,在企业中承担项目经理、架构师等职位,喜欢研究技术,执着于对技术底层的探索及源码的剖析;喜欢写文章,享有阿里云专家博主、优快云博客专家、Java领域优质创作者、华为云开发者联盟成员/技术博主(优快云搜索-墨家巨子@俏如来)代表作《SpringCloud入门到精通》,《SpringCloud源码深度剖析》,《SpringBoot入门到精通》,《Spring源码深度剖析》等等
展开
-
十三.Redis监听Key的过期事件
前言试想一个业务场景,订单超过30分钟未支付需要做自动关单处理,修改订单状态,库存回退等,你怎么实现?方案一:可以使用定时任务扫表,通过支付状态和下单时间来判断是否支付过期。但是这样的方案是非常消耗性能的,因为大部分的定时扫表都是无效的,而且这种定时任务方案对于时间控制并不精确。类似的业务场景还很多,比如物流自动收货确认,比如某电影上线预约功能的到时提醒等等,对于这些问题有没有比定时任务更优雅的处理方案呢?在之前我写过一个《RabbitMQ的延迟队列》,可以用来解决这种业务场景,那如果项目中并没有用到原创 2021-05-01 00:06:12 · 3673 阅读 · 13 评论 -
十二.Redis中那些你不知道的秘密-五大基本结构SortedSet的实现原理
前言SortedSet(zset)有序集合可以看做是在Set集合的的基础上为集合中的每个元素维护了一个顺序值: score,它允许集合中的元素可以按照score进行排序,所以它的经典实用场景如:考生按分数排名,某游戏玩家分数排行,网站首页某数据排行,最新评论按时间排序等等。Redis是一个内存数据库,它在保证读写速度的同时也需要考虑内存开销,那对于SortedSet有序集合而言它需要维护一个顺序值,而对于有序集合的底层实现可以选择:数组,链表,平衡树或者红黑树等结构,但是SortedSet没有选择这些结原创 2021-03-18 08:23:46 · 2608 阅读 · 8 评论 -
十一.Redis中那些你不知道的秘密-五大基本结构Hash的实现原理
前言Hash也是Redis中非常常用的一种存储结构了,Redis的hash底层用到了两种存储结构,ziplist压缩列表 和 hash 表,当存储的所有键值对的键和值的字符串长度都小于64字节,且元素个数少于512个,Redis会选择ziplist存储,这样会比较省内存,否则他会选择hashtable hash表去成,这里的hash表它底层结构和Java中的HashMap比较像,都是数组+链表,链表是为了解决hash冲突。dict底层结构Hash的存储结构叫dict,译作字典,我们先睹为快typed原创 2021-03-10 11:29:03 · 1311 阅读 · 0 评论 -
十.Redis中那些你不知道的秘密-五大基本结构set的实现原理
前言Redis中的set和java中的set集合有相似之处,它的元素不会按照插入的向后顺序而存储,且元素是不允许重复的。set内部使用到了intset(整数集合)和hashtable(哈希表)两种方式来存储元素,如果set存储的元素是整数,且当元素个数小于512个会选择intset存储,目的是减少内存空间,有两种情况会发变化,就是当存储的元素个数达到512(通过set-max-intset-entries 配置)或者添加了非整数值时如:‘b’,会选择hashtable作为存储结构。整数集合intset原创 2021-03-09 16:24:57 · 1945 阅读 · 1 评论 -
九.Redis中那些你不知道的秘密-五大基本结构List的实现原理
前言Redis中的List也是一种非常常用的存储结构,它和Java中的List结构类似,有序可重复,它通常用来存储一个列表或者作为队列实现,需要注意的是它的底层实现是基于链表结构的而不是基于数组结构,所以严格来说他和LinkedList类似。listNodeC 语言没有内置这种数据结构的实现,Redis构建了自己的链表结构,一个节点结构如下:(点我查看源码地址)/* Node, List, and Iterator are the only data structures used currentl原创 2021-03-07 23:06:03 · 1744 阅读 · 1 评论 -
八.Redis中那些你不知道的秘密-五大基本结构String的实现原理
学习使用,老鸟飞过,欢迎交流前言Redis已经成为解决高并发的必备利器,你可能已经把它玩的很熟了,但是对于它的底层,你又了解几分呢?本篇文章我们来聊聊Redis中那些你不知道的秘密之Redis五大基本结构的实现原理。你也许知道Redis常用的存储结构有 String,List,Set,ZSet,Hash,但还远远不够,本文章将带你一步一步走进Redis更深处的奥秘。简单动态字符串SDSSDS(simple dynamic string, SDS)译为简单动态字符串,是Redis自己封装的字符串结构原创 2021-02-27 00:10:24 · 2468 阅读 · 2 评论 -
七.Redis极简入门-SpringCache操作缓存
前言java操作Redis有很多中方案,Jedis,SpringBootDataRedis,Redisson等,本片文章的目的是使用SpringBootDataRedis整合SpringCache基于Redis实现缓存操作一.SpringBoot整合Redis实现缓存SpringBoot提供了整合Redis的方案,我们使用spring-boot-starter-data-redis包就可以很方便的操作Redis了。1.第一步:导入redis的基础依赖<!--整合Redis , 底层可以用je原创 2020-12-01 15:02:12 · 1022 阅读 · 11 评论 -
六.Redis极简入门-Redis实现分布式锁原理
老鸟飞过,学习使用,欢迎交流理解分布式锁为什么要分布式锁在并发场景中,我们可以使用加锁的手段来保证业务方法或代码的原子性操作,从而防止数据被并发修改引发安全问题,在单体应用中我们可以使用互斥锁如: synchronized 同步代码块 或者 Lock锁来实现,如图:但是在集群/分布式应用中单纯的互斥锁是不能保证多个节点中对同一个数据的原性操作的,如图:集群模式中,每个服务都加了锁但是只能锁住自己,每个服务做库存做扣减操作,当库存都剩1的时候,三个服务并发减库存可能会导致库存减到 -2 出现线程原创 2020-11-19 07:01:56 · 12755 阅读 · 19 评论 -
五.Redis极简入门-Redis集群搭建-主从-哨兵-Cluster集群
集群理解1.集群概念1.1.为什么要集群防止单点故障单节点的机器(应用)总会有单点故障的问题,当你的机器宕机,整个系统不可被访问,通常我们可以通过集群的方式来解决单节点故障,提高系统的可用性。提升作业能力单个机器(应用)的作业能力是有限的,在某些高业务量(并发)的应用中,我们也可以通过集群的手段来提升应用的作业能力。1.2.什么是集群应用架构的演变:https://editor.youkuaiyun.com/md/?articleId=104487950集群概念为了提升应用的并发作业能力原创 2020-08-27 14:50:14 · 1211 阅读 · 0 评论 -
四.Redis极简入门-Java操作Redis
Java操作Redis1.Java集成Jedis开始在 Java 中使用 Redis 前, 我们需要确保已经安装并启动 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。可以取Maven仓库下载驱动包 下载 jedis.jar,。1.1.搭建工程搭建普通java项目,项目名:jedis-demo1.2.导入Jedis依赖把Jedis和连接池包一起导入进来commons-pool2-2.2.jar #连接池jedis-2.5.2.jar #原创 2020-08-27 14:49:23 · 1075 阅读 · 2 评论 -
三.Redis极简入门-Redis高级特性
四.Redis设置密码1.设置密码1.1.临时修改CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效CONFIG SET requirepass 1234561.2.永久修改修改配置文件 redis.widows.conf ,增加代码:requirepass 1234562.登录Redis2.1.Auth认证启动redis-cli.exe ,执行auth命令:auth 123456五.Redis中的事务1.事务概念1.1.什原创 2020-08-27 14:38:18 · 1116 阅读 · 2 评论 -
二.Redis极简入门-Redis五大数据结构
三.Redis命令入门1.String的操作2.1.String结构对value为string类型的常用操作String结构模拟图keyvaluenamezsage182.2.set key value将单个字符串值value关联到key,存储到Redisset name zs #key为 name, 值为zs 2.3.get key返回key关联的字符串值get name #获取值,key为 name2.4.mset key原创 2020-08-27 14:36:28 · 1353 阅读 · 0 评论 -
一.Redis极简入门-认识Redis&Redis安装
Redis入门到进阶Redis入门,共同学习共同进步,老鸟飞过一.Redis概念1.NOSQL1.1.什么是NOSQLNoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,它泛指非关系型的数据库。随着互联网2003年之后web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的交友类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。1.2.NOSQL分类h原创 2020-08-27 14:33:22 · 1091 阅读 · 1 评论