![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 87
小乐乐的天台
这个作者很懒,什么都没留下…
展开
-
Redis缓存问题二---热点缓存key、缓存与数据库双写不一致的概念以及解决方案
Redis缓存问题二---热点缓存key、缓存与数据库双写不一致的概念以及解决方案1、热点缓存key1.1、什么是热点缓存key1.2、解决方案---只允许一个线程重建缓存2、缓存与数据库双写不一致2.1、双写不一致2.2、读写并发不一致2.3、解决方案2.4、注意1、热点缓存key1.1、什么是热点缓存key比如说有一个商品平时无人问津,但似乎突然有一个网红来代购,然后在这时候,大量的粉丝就去购买这件商品,由于这个商品平时都没有放在缓存中的(因为平时访问的人很少),所以这时候,有大量的请求过来一边原创 2021-10-30 09:13:52 · 473 阅读 · 0 评论 -
Redis缓存问题一---缓存穿透、缓存失效、缓存雪崩的概念以及解决方案
Redis缓存穿透、缓存失效、缓存雪崩的概念以及解决方案1、缓存穿透1.1、什么是缓存穿透1.2、造成缓存穿透的原因1、缓存穿透1.1、什么是缓存穿透所谓穿透,就是所有的地方都找不到这个数据,无论是缓存层还是db层,缓存穿透会导致这个请求每次都会在所有层都会查一次,而且还查不到。1.2、造成缓存穿透的原因这里的原因有很多,以下列的只是一些例子而已1、自身业务代码或者数据出现问题2、一些恶意攻击、 爬虫等造成大量空命中。...原创 2021-10-30 09:10:02 · 320 阅读 · 0 评论 -
Redis分布式锁详解二---Redisson源码简单解析
Redis分布式锁详解二---Redisson源码简单解析1、redissonLock.lock()1.1、lock()1.2、tryAcquire1.3、tryLockInnerAsync()1.4、scheduleExpirationRenewal(long threadId)1.5、renewExpiration()2、redissonLock.unlock()2.1、unlock()2.2、unlockAsync(long threadId)2.3、unlockInnerAsync()先看一张图原创 2021-10-27 14:59:03 · 877 阅读 · 0 评论 -
Redis分布式锁详解一---抛出问题以及解决方案Redisson
Redis高并发场景下产生的问题以及解决方案Redisson1、抛出问题2、产生的问题和分析的过程2.1、加入 synchronized 同步锁2.2、解决 synchronized ,加入setnx锁2.2、解决2.1,加入try-catch和锁过期时间2.3、解决2.2,加入UUID作为分布式锁的唯一标识2.4、解决2.3,增加锁续命功能控制一次只能有一个线程访问资源10、辅助知识10.1、锁续命大概原理1、抛出问题就比如下面这块代码,我们要对一个产品进行大促抢购,在高并发的场景下,会出现什么样的原创 2021-10-27 14:56:02 · 794 阅读 · 0 评论 -
Redis之GeoHash算法
Redis之GeoHash算法1、什么是GeoHash算法?2、GeoHash算法在Redis的应用2.1、查看一下GeoHash的api2.2、GeoHash的api的使用2.2.1、GEOADD-添加坐标2.2.2、GEODIST-计算两地之间距离2.2.3、GEOHASH-获取某个位置的hash值2.2.4、GEOPOS-获取某个位置的坐标2.2.5、GEORADIUS-给定坐标的范围2.2.6、GEORADIUSBYMEMBER-只是当前key中元素的范围筛选3、GeoHash优缺点3.1、优点3.原创 2021-10-24 16:39:20 · 3217 阅读 · 0 评论 -
Redis中的bitmap
Redis中的bitmap1、什么是bitmap?2、为什么要有bitmap?3、案例说明3.1、案例描述3.2、解决方案3.2.1、解决方案1---使用传统数据库解决3.2.2、解决方案2---使用bitmap解决1、什么是bitmap?bitmap也叫位图,也就是用一个bit位来表示一个东西的状态,我们都知道bit位是二进制,所以只有两种状态,0和1。2、为什么要有bitmap?bitmap的出现就是为了大数据量而来的,但是前提是统计的这个大数据量每个的状态只能有两种,因为每一个bit位只原创 2021-10-24 16:38:47 · 195 阅读 · 0 评论 -
Redis底层存储结构三---Redis中Key-Value中的Value
Redis底层存储结构三---Redis中Key-Value中的Value1、string1.1、int1.2、embstr1.3、raw2、我们都只知道,在我们的Redis中,最常用的Value数据结构有5个,string、list、hash、set、zset,但是这五个在内存中的存储还是有一些变化的,接下来逐个的介绍一下这几个1、string对于string形式,我们Redis底层在内存中的存储是由三种结构的,这三种结构分别是int,embstr,raw。在上一篇博客中我们讲到了真正存储V原创 2021-10-24 16:24:13 · 970 阅读 · 0 评论 -
Redis底层存储结构二---Redis中Key-Value中的整体存储流程
Redis底层存储结构二---Redis中Key-Value中的整体存储流程1、Redis的整体流程的各个数据结构1.1、RedisDb1.2、dict1.3、dictht1.4、dictEntry1.5、value在上一篇博客中我们谈及到Redis底层字符串类型为sds,那么这篇博客我们聊一下,Redis整个的Key-Value在C语言中的存储形式是一个什么样子的。首先我们先看一张总图:接下来我们来细细对这一样图分析一下:1、Redis的整体流程的各个数据结构1.1、RedisDb原创 2021-10-24 16:05:09 · 3377 阅读 · 0 评论 -
Redis底层存储结构一---Redis中Key-Value中的Key
Redis底层存储结构一---Redis中Key-Value中的Key1、什么是SDS?2、为什么要用SDS?3、SDS的三大特性3.1、二进制安全的数据结构3.2、提供了内存的预分配机制,避免了频繁的内存分配3.3、兼容C语言的函数库4、SDS在各个版本的数据结构4.1、SDS在3.2之前的样子(包含3.2)4.2、SDS在3.2之后的样子5、Redis服务端如何区分该字符串用哪一个数据结构简介:首先我们直到Redis的数据存储是以Key-Value的形式来存储的,这个和我们Java中的map很类似原创 2021-10-24 16:03:56 · 1908 阅读 · 0 评论 -
Redis集群高可用架构水平扩展
Redis高可用集群水平扩展1、配置新增节点实例2、增加新的主节点3、增加新的从节点4、删除从节点5、删除主节点上篇博客地址在上一篇博客我们搭建了Redis集群上面我们集群搭建了6个节点,下面我们需要扩展两个节点。一个主节点,一个从节点扩展前扩展后1、配置新增节点实例配置相应文件并启动实例按照上篇博客的配置,再配置两个redis.conf文件。然后启动新配置的两个redis实例,如下图所示:2、增加新的主节点1、将新节点加入到原来集群中每次加入的新节点刚进去都是ma原创 2021-10-22 16:13:49 · 184 阅读 · 0 评论 -
Redis集群高可用架构
Redis缓存高可用集群1、Redis高可用集群1.1、Redis高可用集群模式和哨兵模式方案比较1.2、Redis高可用集群搭建2、Java操作Redis集群3、Redis集群原理分析3.1、槽位定位算法3.2、跳转重定位3.3、Redis集群节点间的通信机制3.4、Redis集群选举原理3.5、Redis集群为什么至少需要三个master节点,并且推荐节点数为奇数?3.6、Redis集群对批量操作命令的支持4、Redis集群可能会遇到的问题4.1、网络抖动4.2、集群脑裂数据丢失问题4.3、集群是否完整原创 2021-10-22 16:01:38 · 737 阅读 · 2 评论 -
Redis哨兵高可用架构
Redis哨兵高可用架构1、Redis哨兵高可用架构1.1、redis哨兵架构搭建步骤1.2、哨兵leader选举流程1、Redis哨兵高可用架构哨兵也是Redis的一个实例,通常是检测主节点的,当主节点挂掉之后,会重新选取新的主节点然后让客户端访问,大致如下图所示:1.1、redis哨兵架构搭建步骤1、复制一份sentinel.conf文件cp sentinel.conf sentinel-26379.conf2、将相关配置修改为如下值:port 26379daemonize原创 2021-10-22 13:52:03 · 143 阅读 · 0 评论 -
Jedis简单操作、Redis管道、Lua脚本以及Jedis简单示例
3、Redis其它3.1、Redis管道(Pipeline)为了节省网络建立连接以及传输数据的开销,我们可以使用管道的方式将一组操作放到管道中并发送给redis服务端去操作,这样就能节省时间的开销。但也有缺点,就是管道没有原子性操作,某一条命令报错之后,会继续往下执行。代码示例如下:Pipeline pl = jedis.pipelined();for (int i = 0; i < 10; i++) { pl.incr("aleKey"); pl.set("ale"原创 2021-10-21 23:34:43 · 796 阅读 · 0 评论 -
Redis安装
Redis搭建1、下载Redis2、将压缩包放进linux系统3、编译4、修改配置5、启动服务6、查看服务7、连接测试我们搭建一个Redis服务时,通常需要先将压缩包下载下来,然后解压放在linux系统上,然后再进行编译和修改一些默认的配置,修改默认配置的原因是让我们有些地方可方便操作,然后再启动服务,并连接客户端测试,下面大家可按照1-7各点逐步实操,即可成功1、下载Redis随意在官网下载一个Redis版本,例如我下载下来的就如下图所示:2、将压缩包放进linux系统将下载好的压缩原创 2021-10-21 22:57:03 · 173 阅读 · 0 评论 -
Redis主从架构
Redis主从架构1、什么是Redis主从架构2、Redis主从架构搭建步骤3、Redis主从节点复制数据的过程3.1、数据全量复制3.2、数据部分复制4、主从复制风暴1、什么是Redis主从架构Redis主从架构意思就是,主节点下面挂一些从节点,主节点主要用来读写数据,从节点主要用来备份数据,当然也可以读一些数据,大体结构如下图所示:2、Redis主从架构搭建步骤1、复制一份redis.conf文件。2、修改相关的配置。2.1、对外提供的端口号:port 63802.2原创 2021-10-20 22:39:47 · 909 阅读 · 0 评论 -
Redis持久化
Redis持久化、主从与哨兵架构1、持久化1.1、RDB快照(snapshot)1.1.1、RDB快照简单配置与说明1.1.2、bgsave的写时复制(COW)机制1.1.3、save和bgsave的区别1.1.4、RDB可能会出现的问题1.2、AOF(append-only file)1、持久化1.1、RDB快照(snapshot)1.1.1、RDB快照简单配置与说明Redis默认会开启RDB快照。在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。 你原创 2021-09-14 15:49:33 · 235 阅读 · 0 评论 -
Redis核心数据结构应用场景与高性能原理刨析
Redis核心数据结构与高性能原理刨析原创 2021-09-10 12:45:53 · 271 阅读 · 0 评论