Redis
文章平均质量分 88
Redis
宋同学shl
这个作者很懒,什么都没留下…
展开
-
Redis - 主从复制过程
主从复制的方式从节点复制主节点的数据后,就相当于给主从节点备份了,所谓的有备无患就是这个意思。那么主从复制的原理是怎么样的?其实主要就是三种复制方式:持续复制、全量复制、部分复制。持续复制当有客户端的写命令请求到主节点后,主节点会做两件事:命令传播和将写命令写入到复制积压缓冲区。原理图如下: 命令传播:将写命令持续发送给所有从服务器,保持主从数据一致。这个就可以理解为持续复制了。 复制积压缓冲区:其实就是一个有界队列,保存着最近传播的写命令,而队列里面的每个字节都有一个偏原创 2021-11-30 21:27:45 · 1390 阅读 · 0 评论 -
Redis - 跳跃表
一、跳跃表简介跳跃表(skiplist)是一种随机化的数据结构,由William Pugh在论文《Skip lists: a probabilistic alternative to balanced trees》中提出,是一种可以与平衡树媲美的层次化链表结构——查找、删除、添加等操作都可以在对数期望时间下完成,以下是一个典型的跳跃表例子:我们在上一篇中提到了 Redis 的五种基本结构中,有一个叫做有序列表 zset的数据结构,它类似于 Java 中的SortedSet和Hash...原创 2021-11-24 23:08:45 · 138 阅读 · 0 评论 -
Redis - 系列-Redis哨兵、持久化、主从、手撕LRU
为啥Redis那么快?Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。 完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。它的,数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1); 数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的; 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线原创 2021-11-24 23:07:14 · 186 阅读 · 0 评论 -
Reids五种数据类型的底层实现
一、Redis的数据结构简单来说,五个基本数据类型在Redis中以这样的数据结构存在,下图所示:二、String2.1 String的底层实现(SDS)String的底层是由一个叫简单动态字符串实现的,Simple Dynamic String,简称SDS,在Redis的数据结构中大概长这个样子:注意:一个String最大容量是512M。看一下Reids中的源码,就和上图对上了len:表示 SDS 的长度,这样获取字符串长度的时间复杂度就是O(1),而不是原创 2021-11-13 21:32:35 · 678 阅读 · 0 评论 -
Redis的数据类型及其应用场景
Redis是一个支持多语言NoSql数据库,提供多种API,本文会从Redis的命令角度进行讲解。这些命令都是单线程操作的,不用担心线程安全问题,基于内存操作加IO多路复用,存取数据快。以下讲解基于redis-6.2.6实现。不同版本的命令可能稍有差异,大家可以去Redis官网查看。官网地址:https://redis.io/commands一、String简介String底层由int、emstr、raw实现,是Reids最基本的数据类型,一个key对应一个value,可以包含任何数据,每个原创 2021-11-13 21:32:12 · 136 阅读 · 0 评论 -
Redis 如何高效实现点赞、取消点赞功能
前言基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂时设了两个小时。项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数原创 2021-11-14 00:00:00 · 1034 阅读 · 4 评论 -
Redis 击穿、穿透、雪崩产生原因以及解决思路
前言大家都知道,计算机的瓶颈之一就是IO,为了解决内存与磁盘速度不匹配的问题,产生了缓存,将一些热点数据放在内存中,随用随取,降低连接到数据库的请求链接,避免数据库挂掉。需要注意的是,无论是击穿还是后面谈到的穿透与雪崩,都是在高并发前提下,比如当缓存中某一个热点key失效。问题起因有两个主要原因:1、Key过期;2、Key被页面置换淘汰。对于第一个原因是因为在Redis中,Key有过期时间,如果某一个时刻(假如商城做活动,零点开始)key失效,那么零点之后对某一个商品查询请求原创 2021-11-11 19:38:04 · 471 阅读 · 0 评论 -
Jedis入门
Jedis是Java开发Redis的语言工具包Jedis是对Redis语言的封装Jedis演示Jedis jedis = new Jedis("175.27.230.117", 6379); try { jedis.auth("12345"); jedis.select(2); System.out.println("Redis连接成功"); // String类型原创 2021-10-20 02:00:00 · 145 阅读 · 0 评论