
Redis专题
文章平均质量分 80
源码小哥
这个作者很懒,什么都没留下…
展开
-
Redis集群-哨兵模式原理(Sentinel)
哨兵模式是一种特殊的模式,它是 Redis 高可用的一种实现方案。首先哨兵是一个独立的进程, 可以实现对 Redis 实例的监控、通知、自动故障转移。原创 2022-07-30 08:14:46 · 3296 阅读 · 0 评论 -
Redis分布式锁8大细节
https://mp.weixin.qq.com/s/8NFqfsQ8KAIhXE_6o9MiOQ转载 2022-04-10 23:38:04 · 947 阅读 · 0 评论 -
数据库和缓存双写一致性
数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。转载 2022-04-02 13:02:46 · 348 阅读 · 0 评论 -
Redis的windows版本设置哨兵
1.创建并修改sentinel.conf该模式使用了3sentinel,所以我们需要复制3份sentinel.conf配置文件,并分别命名为sentinel26379.conf和sentinel26380.conf,sentinel26381.conf,其中修改sentinel.conf配置文件中的如下几个参数:1. port :当前Sentinel服务运行的端口2.sentinel monitor mymaster 127.0.0.1 6379 2:Sentinel去监视一个名为mymaster的主原创 2021-06-19 16:45:57 · 385 阅读 · 0 评论 -
《Redis专题》-String数据类型之底层解析
文章目录1.引言1.1.对象的类型与编码2.字符串对象1.引言对于 Redis的常用 5 种数据类型(String、Hash、List、Set、sorted set),每种数据类型都提供了 最少两种内部的编码格式,而且每个数据类型内部编码方式的选择 对用户是完全透明的,Redis会根据数据量自适应地选择较优化的内部编码格式。如果想查看某个键的内部编码格式,可以使用 OBJECT ENCODING keyname指令来进行,比如:127.0.0.1:6379> 127.0.0.1:6379&原创 2021-03-26 13:00:24 · 414 阅读 · 0 评论 -
Redis五种数据类型及应用场景
五种类型如下:String: 一般做一些复杂的计数功能的缓存List: 做简单的消息队列的功能Hash: 单点登录Set: 做全局去重的功能SortedSet: 做排行榜应用,取TopN操作;延时任务;做范围查找原创 2021-03-25 12:58:59 · 182 阅读 · 0 评论 -
Redis数据持久化
文章目录1.持久化1.1. 持久化简介2. RDB持久化2.1. RDB文件持久化创建与载入2.2. 触发条件2.2.1.手动触发2.2.2.自动触发2.2.3.其他自动触发机制2.3.RDB 默认配置3.AOF持久化3.1.AOF持久化简介3.2.AOF持久化功能实现3.3.AOF持久化策略1.持久化1.1. 持久化简介持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。RDB持久化方式:可以在指原创 2021-03-24 22:46:47 · 269 阅读 · 0 评论 -
《Redis专题》-Redis-culster集群搭建
文章目录1.Redis-cluster架构图2.Redis-cluster投票:容错3.Redis-cluster集群搭建环境准备4.Redis-cluster集群搭建过程5.Redis-cluster集群连接6.查看集群信息7.查看集群信息1.Redis-cluster架构图架构细节:(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.(3)客户端与redis节点直连,不需要中间pr原创 2021-03-24 12:48:25 · 475 阅读 · 0 评论 -
Redis专题(五)-Redis常见的5种数据类型
文章目录1.前言2.String字符串类型3.List列表类型4.Set集合类型5.Hash散列类型6.Redis的有序集合ZSet数据类型1.前言Redis除了可以存储键还可以存储常见的5种数据类型,分别是:String、List、Set、Hash、ZSet。对于Redis的命令有一部分是可以公用的,但是还有一些其他的命令是属于特殊使用的。首先看看一张关于Redis的5种数据结构的对比:2.String字符串类型Redis中的String类型就是一个由字节组成的序列,他和其他编程语言或者其他键原创 2021-03-19 18:58:08 · 1021 阅读 · 0 评论 -
Redis专题 - 重要知识点
为了提高系统的访问效率和降低服务器压力,我们通常会采用缓存的策略,而使用缓存可以有效地支持高性能和高并发,而我们常用redis作为缓存!1.缓存的作用高性能用户第一次访问数据库中的某些数据时,是从硬盘中读取的,该过程缓慢。而操作缓存是直接操作内存,速度快。所以,当第一次访问后,将数据存储在缓存,若数据库中的数据有变动,则同步改变缓存中相应的数据。高并发直接操作缓存能够承受的请求是远远大于直接访问数据库的,可以将热点数据保存到缓存中,从而使部分请求直接到达缓存,而不用经过数据库,降低服务器压力的同原创 2020-11-26 12:55:29 · 299 阅读 · 0 评论 -
Redis详解 - 过期删除策略和内存淘汰策略
1.引言我们先来看如下几个问题:①、如何设置Redis键的过期时间?②、设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗?③、如何设置Redis的内存大小?当内存满了之后,Redis有哪些内存淘汰策略?我们又该如何选择? 如果上面的几个问题你都懂,那么下面的内容你就不用看了;如果你不是很懂,那就带着这些问题往下看。2.设置Redis键过期时间Redis提供了四个命令来设置过期时间(生存时间)。①、EXPIRE :表示将键 key 的生存时间转载 2020-11-26 12:41:28 · 664 阅读 · 0 评论 -
面试专题-分布式缓存-redis
1.Redis的应用场景缓存,毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效;一些频繁被访问的数据,经常被访问的数据如果放在关系型数据库,每次查询的开销都会很大,而放在redis中,因为redis 是放在内存中的可以很高效的访问排行榜,在使用传统的关系型数据库(mysql oracle 等)来做这个事儿,非常的麻烦,而利用Redis的SortSet(有序集合)数据结构能够简单的搞定;计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等原创 2020-11-25 23:22:11 · 486 阅读 · 0 评论 -
Redis详解 - Redis布隆过滤器
1.布隆过滤器使用场景比如有如下几个需求:①、原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中?解决办法一:将10亿个号码存入数据库中,进行数据库查询,准确性有了,但是速度会比较慢。解决办法二:将10亿号码放入内存中,比如Redis缓存中,这里我们算一下占用内存大小:10亿*8字节=8GB,通过内存查询,准确性和速度都有了,但是大约8gb的内存空间,挺浪费内存空间的。②、接触过爬虫的,应该有这么一个需求,需要爬虫的网站千千万万,对于一个新的网站url,转载 2020-11-25 14:55:38 · 768 阅读 · 0 评论 -
Redis详解 - 缓存穿透、缓存击穿、缓存雪崩
我们来介绍Redis使用过程中需要注意的三种问题:缓存穿透、缓存击穿、缓存雪崩。1.缓存穿透1.1.概念缓存穿透:缓存和数据库中都没有的数据,可用户还是源源不断的发起请求,导致每次请求都会到数据库,从而压垮数据库。如下图红色的流程:比如客户查询一个根本不存在的东西,首先从Redis中查不到,然后会去数据库中查询,数据库中也查询不到,那么就不会将数据放入到缓存中,后面如果还有类似源源不断的请求,最后都会压到数据库来处理,从而给数据库造成巨大的压力。1.2.解决办法①、业务层校验用户发过来的请转载 2020-11-25 12:54:25 · 393 阅读 · 0 评论 -
Springboot2.X集成redis集群(Lettuce)连接
1.前言搭建好redis集群环境,搭建方式请看2.导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>3. 配置application.propertiesspring.redis.cluster.nodes原创 2020-11-24 23:53:57 · 2386 阅读 · 0 评论 -
关于Redis缓存预热的思考
系统上线时,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题。这里我考虑2个问题:A、哪些数据需要预热?B、如何预热?1.springboot项目启动后初始化化一些自己的数据实现方法有2个。一、ApplicationRunner实现ApplicationRunner接口打上@Component+implements ApplicationRunner@Componentpublic class DemoApplicationRunner原创 2020-11-24 23:46:53 · 613 阅读 · 0 评论 -
Redis 的持久化
1.什么是Redis持久化?Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客户端请求时,所有操作都在内存当中进行,如下所示:这样做有什么问题呢?其实,只要稍微有点计算机基础知识的人都知道,存储在内存当中的数据,只要服务器关机(各种原因引起的),内存中的数据就会消失了,不仅服务器关机会造成数据消失,Redis服务器守护进程退出,内存中的数据也一样会消失。对于只把Redis当缓存来用的项目来说,数据消失或许问题不大,重新从数据源把数据加载进来就可以了,但如果直接把用户原创 2020-08-14 13:52:15 · 196 阅读 · 0 评论 -
SpringBoot实现监听Redis key失效事件
1.需求处理订单过期自动取消,比如下单30分钟未支付自动更改订单状态2.方案可以利用redis天然的key自动过期机制,下单时将订单id写入redis,过期时间30分钟,30分钟后检查订单状态,如果未支付,则进行处理但是key过期了redis有通知吗?答案是肯定的。3.试验步骤3.1.开启redis key过期提醒修改redis相关事件配置。找到redis配置文件redis.conf,...原创 2020-04-23 23:39:22 · 1014 阅读 · 0 评论 -
Docker安装Redis以配置文件启动redis
1.拉取镜像//拉取redis镜像docker pull redis //查看所有镜像docker images 2. redis配置文件修改(重要)/root/redis/redis01/conf/redis.conf 中daemonize=NO。非后台模式,如果为YES 会的导致 redis 无法启动,因为后台会导致docker无任务可做而退出。3.执行dockerdoc...原创 2020-03-24 23:38:22 · 461 阅读 · 0 评论 -
SpringBoot连接Redis哨兵模式
1.application.yml###################以下为Redis增加的配置###########################spring: redis: #单机配置 # host: 122.51.50.249 # port: 6380 timeout: 6000 # password: 123456 #######...原创 2019-10-30 14:47:51 · 2044 阅读 · 0 评论 -
SpringBoot整合SpringDataRedis
1. SpringDataRedis简介1.1.Jedis(过时)Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用。可以在Redis官网下载,当然还有一些开源爱好者提供的客户端,如Jredis、SRP等等,推荐使用Jedis。1.2.Spring Data Redis(推荐)Spring-data-redis是spring大家族的一部分,提供了在s...原创 2019-10-29 12:18:40 · 302 阅读 · 0 评论 -
Redis专题(十二)-Redis集群
1.redis-cluster【集群】架构图架构细节:(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可(4)redis-cluster把所有的物理节点映射...原创 2019-06-20 17:58:33 · 290 阅读 · 2 评论 -
Redis专题(十一)-Redis哨兵模式
1.高可用Sentinel哨兵介绍Sentinel哨兵是redis官方提供的高可用方案,可以用它来监控多个Redis服务实例的运行情况。RedisSentinel是一个运行在特殊模式下的Redis服务器。RedisSentinel是在多个Sentinel进程环境下互相协作工作的。Sentinel系统有三个主要任务:监控:Sentinel不断的检查主服务和从服务器是否按照预期正常工作。...原创 2019-06-20 17:28:26 · 241 阅读 · 0 评论 -
Redis专题(十)-Redis的主从复制
1.主从复制概念(master/slave)持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:说明:主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务...原创 2019-06-20 17:19:34 · 248 阅读 · 0 评论 -
Redis专题(九)-Redis的持久化策略
1.持久化机制1.1 持久化概述持久化可以理解为存储,就是将数据存储到一个不会丢失的地方,如果把数据放在内存中,电脑关闭或重启数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘就算是一种持久化。Redis的数据存储在内存中,内存是瞬时的,如果linux宕机或重启,又或者Redis崩溃或重启,所有的内存数据都会丢失,为解决这个问题,Redis提供两种机制对数据进行持久化存储,便于发生故...原创 2019-06-20 16:10:01 · 201 阅读 · 0 评论 -
Redis专题(十四)-Redis的Java客户端SpringDataRedis
1. SpringDataRedis简介1.1.项目常见问题思考我们目前的系统已经实现了广告后台管理和广告前台展示,但是对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪。那如何解决呢?我们通常的做法有两种:一种是数据缓存、一种是网页静态化。我们今天讨论第一种解决方案。1.2.Redisredis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写。企业开...原创 2019-06-16 19:36:01 · 383 阅读 · 0 评论 -
Redis专题(八)-Redis的配置文件详解
Redis 是一款开源的、高性能的键-值存储(key-value store),和 memcached 类似,redis 常被称作是一款 key-value 内存存储系统或者内存数据库,同时由于它支持丰富的数据结构,又被称为一种数据结构服务器(data structure server)。编译完 redis,它的配置文件在源码目录下 redis.conf ,将其拷贝到工作目录下即可使用,下面具...原创 2019-06-16 18:56:06 · 457 阅读 · 0 评论 -
Redis专题(六)-Redis的发布与订阅
1.发布和订阅1.1什么是发布和订阅发布订阅是一种应用程序(系统)之间通讯,传递数据的技术手段。特别是在异构(不同语言)系统之间作用非常明显。发布订阅可以是实现应用(系统)之间的解耦合。● 发布订阅:类似微信中关注公众号/订阅号,公众号/订阅号发布的文章,信息。订阅者能及时获取到最新的内容。微博的订阅也是类似的。日常生活中听广播,看电视。都需要有信息的发布者,收听的人需要订阅(广播、电...原创 2019-06-15 22:30:07 · 1663 阅读 · 0 评论 -
Redis专题(七)-Redis的事务机制
1.Redis事务1.1.什么是事务事务是指一系列操作步骤,这一系列的操作步骤,要么完全地执行,要么完全地不执行。比如微博中:A用户关注了B用户,那么A的关注人列表里面就会有B用户,B的粉丝列表里面就会有A用户。这个关注与被关注的过程是由一系列操作步骤构成:(1)A用户添加到B的粉丝列表里面(2)B用户添加到A的关注列表里面;这两个步骤必须全部执行成功,整个逻辑才是正确的,否则就会...原创 2019-06-15 22:26:17 · 282 阅读 · 0 评论 -
Redis专题(四)-Redis基本操作命令
1.基本操作命令手册地址:redis 英文版命令大全:https://redis.io/commandsredis 中文版命令大全:http://redisdoc.com/redis 默认为 16 个库 (在 redis.conf 文件可配置,该文件很重要,后续很多操作都是这个配置文件) redis 默认自动使用 0 号库。A、沟通命令,查看状态redis >ping 返回 P...原创 2019-06-15 09:40:13 · 385 阅读 · 0 评论 -
Redis专题(五)-Redis数据类型
1.数据类型概述Redis中存储数据是通过key-value存储的,对于value的类型有以下几种:字符串类型 string字符串类型是 Redis 中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据,序列化后的数据,JSON 化的对象甚至是一张图片。最大 512M。哈希类型 hashRedis hash 是一个 string 类型的 field 和 value 的映射表...原创 2019-06-13 12:45:59 · 395 阅读 · 0 评论 -
Redis专题(三)-Redis客户端
1.客户端简介Redis 客户端是一个程序,通过网络连接到 Redis 服务器, 在客户端软件中使用 Redis可以识别的命令,向 Redis 服务器发送命令, 告诉 Redis 想要做什么。Redis 把处理结果显示在客户端界面上。 通过 Redis 客户端和 Redis 服务器交互。Redis 客户端发送命令,同时显示 Redis 服务器的处理结果。2.Redis 命令行客户端redi...原创 2019-06-13 12:33:56 · 1090 阅读 · 0 评论 -
Redis专题(二)-Redis安装配置
1.Redis介绍1.1 Redis历史发展 2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,然而没过多久该公司的创始人 Salvatore Sanfilippo便 对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。 不过Salvatore Sanfilippo并不...原创 2019-06-13 12:13:39 · 283 阅读 · 0 评论 -
Redis专题(十三)-Redis的Java客户端Jedis
1.对key操作命令 2.对String操作命令 3.对List操作命令 4.对Set操作命令 5.对Hash操作命令 6.排序操作指令7.对SortedSet操作命令原创 2019-06-09 22:47:02 · 343 阅读 · 0 评论 -
Redis专题(一)-初识Nosql
NoSQL = Not Only SQL(不仅仅是 SQL) ,也解释为 non-relational(非关系型数据库)。在NoSQL 数据库中数据之间是无联系的,无关系的。数据的结构是松散的,可变的。它可以作为关系型数据库的良好补充。原创 2019-06-04 17:42:59 · 366 阅读 · 0 评论