![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 82
Redis相关内容
煎丶包
这个作者很懒,什么都没留下…
展开
-
Redis还可以干分布式锁的活儿
Redis还可以干分布式锁的活儿现在的业务开发一般都是分布式微服务,多个微服务之间要保证同一时刻,同一用户只能有一个请求被处理,为了防止关键业务出现数据冲突和并发错误。在只有一台服务器,单机的情况下,为了防止出现并发问题,你也许想到可以使用Synchronized同步关键字或者使用Lock手动加锁来防止高并发的线程安全问题,但是如果在分布式集群的情况下,多台服务器协同工作,再使用Synchronized同步关键字和Lock锁还能起作用吗?当然不能了,单机锁只能管控住自己这一台服务器,多台服务器之间,物理原创 2021-09-26 03:37:47 · 156 阅读 · 0 评论 -
讲一讲Redis Cluster分布式集群是如何保证可扩展的
讲一讲Redis Cluster分布式集群是如何保证可扩展的之前的文章我们讲了Redis的主从架构模式、Sentinel哨兵模式,这篇文章我们再来讲讲Redis Cluster分布式集群模式。不要搞混主从模式、Sentinel模式、Cluster集群模式,这三者的侧重点或者说作用是不相同的。主从架构模式主从模式主要实现数据备份、容灾恢复,以及通过主从复制实现读写分离,通常是一主多从的架构模式,主服务器用来写,从服务器用来读。主从架构模式侧重于支持高并发。Sentinel哨兵模式多个Sent原创 2021-09-25 22:48:23 · 332 阅读 · 0 评论 -
说一说Redis的Sentinel模式是如何保证服务器高可用的
说一说Redis的Sentinel模式是如何保证服务器高可用的我们之前文章说的Redis的主从架构模式实现了读写分离,支持了高并发的业务场景。主从模式也由单台Redis服务器变成了多台Redis服务器,服务器数量一多,当某服务器发生故障宕机的时候,可能就会影响到其它正在工作的服务器,然后产生连锁反应,进而使得整个系统崩溃。对于这种情况我们需要拿出一个方案,使得在某一台或者多台服务器宕机时,要保证不会影响到其它正常工作的服务器,继续维持整个系统正常运转。而Redis的哨兵模式就提供了高可用的解决方案!哨兵原创 2021-09-24 23:36:14 · 232 阅读 · 2 评论 -
从Redis主从架构模式角度说一说是如何支持高并发的
从Redis主从架构模式角度说一说是如何支持高并发的我们说Redis是基于内存操作的数据库,追求的是简单高效,实现了高性能的数据访问。单机Redis所能支持的QPS一般都在几万左右,一般不会超过10w+,但是,在有些实际业务中,像是秒杀、双十一,这些业务场景的QPS很有可能达到惊人的数字!所以说高并发场景下的单机Redis显得就有些吃力了,不用怕,Redis官方早就想到了高并发的场景,我们可以使用多个Redis实例,搭建主从架构模式来支撑高并发的场景。主从架构模式,也就说有一台Redis服务器做主机,多原创 2021-09-24 15:11:41 · 263 阅读 · 0 评论 -
Redis缓存常见问题——穿透、击穿、雪崩
Redis缓存常见问题——穿透、击穿、雪崩Redis最常用来做缓存,它是基于内存来操作数据的,当数据量过大时难免会遇到一些缓存问题。这篇文章就来说一说Redis常见的缓存问题。缓存穿透我们说当发送请求来查询某个数据时,首先会从Redis缓存中查询,如果缓存中有就直接返回,如果没有请求才会到数据库中查询。而缓存穿透指的就是当访问一个redis缓存和数据库都不存在的key时,此时这个请求就会直接到数据库中查询,但是数据库中也查不到任何数据,而且也没有办法写缓存。这样情况缓存相当于没起作用,当请求量过大时,原创 2021-09-23 14:45:17 · 456 阅读 · 1 评论 -
说一说Redis事务是否满足ACID以及WATCH监视命令的作用
说一说Redis事务是否满足ACID以及WATCH监视命令的作用MySQL关系型数据库InnoDB存储引擎支持事务,Redis这个非关系型数据库也同样实现了事务功能。Redis 可以通过 MULTI,EXEC,DISCARD 和 WATCH 等命令来实现事务(transaction)功能。MULTI命令表示开始事务,之后可以输入多个命令,此时Redis并不会执行这些命令,而是将这些命令入队,当输入EXEC命令时表示执行事务,Redis会从队列中挨个取出命令来执行,执行完所有命令之后统一返回结果。DI原创 2021-09-23 02:44:45 · 359 阅读 · 0 评论 -
从内存淘汰策略和过期键删除来聊一聊Redis内存管理机制
从内存淘汰策略和过期键删除来聊一聊Redis内存管理机制我们说过Redis是基于内存操作的数据库,所有的数据保存在内存中,所以读写速度非常的快。既然数据都存放在内存中,内存毕竟有限,远远比不上磁盘的存储空间,所以如果不及时清理掉一部分没有用的数据,就会导致内存不足。这篇文章就来聊一聊Redis内存淘汰策略和过期键的删除。Redis是可以在redis.conf这个配置文件中设置最大占用内存的,如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB原创 2021-09-22 14:49:34 · 220 阅读 · 0 评论 -
谈一谈Redis持久化这个容灾恢复机制
谈一谈Redis持久化这个容灾恢复机制服务器“闹情绪”宕机可以说是非常常见的情况了,要想“哄好”服务器,Redis是如何保证服务器挂掉重启之后,能够恢复数据的呢?这就是本篇文章要讲的Redis持久化机制。所谓的持久化就是将内存中的数据写入到磁盘当中去,这样一旦服务器发生故障宕机,重启服务器之后可以从磁盘中读取之前的数据来恢复数据。Redis不同于Memcached的很重要一点就是Redis 支持持久化,而且支持两种不同的持久化操作,RDB方式和AOF方式。谁敢说我家的服务器绝对不会宕机?所以持久化机制对原创 2021-09-21 16:28:29 · 400 阅读 · 0 评论 -
从处理请求的核心流程谈一谈Redis到底是单线程还是多线程
从处理请求的核心流程谈一谈Redis到底是单线程还是多线程随着Redis版本的不断更新,Redis在处理请求方面也在不断的优化,由单线程的概念逐渐引入了多线程的概念。那么Redis到底是单线程还是多线程呢?在Redis 4.0版本之前,Redis完全是单线程,没有引入多线程这个概念。因为Redis是完全是基于内存操作的,通常情况下CPU不会是redis的瓶颈,于是就采用单线程模型处理请求,如果使用多线程的话,反而会变得更复杂,同时还涉及到了多线程的上下文切换,带来了额外的性能消耗。所以,Redis读写速原创 2021-09-21 10:15:28 · 485 阅读 · 0 评论 -
从Redis底层的数据结构来说说为什么读写数据这么快
从Redis底层的数据结构来说说为什么读写数据这么快Redis是一个C语言编写的非关系型数据库,与MySQL关系型数据库不同的是,Redis的数据是存储在内存中的,所以说使用Redis读写数据非常的快!因此Redis常用来的做缓存。当然,之所以Redis读写数据这么快,出了它的数据存储在内存中这个原因以外,还与它的底层数据结构有关!这篇文章就从Redis底层数据结构来分析为什么读写数据这么快。String类型可以说我们平常操作最多的数据类型就是字符串了,对于String类型我们最常用的命令就是set和原创 2021-09-20 17:34:35 · 782 阅读 · 3 评论 -
使用Jedis连接redis数据库
一、测试联通Linux中启动redis服务器注意要将redis.conf配置文件中的protected-mode设置为no,同时将bind 127.0.0.1 -::1给注释掉,这样使用使用Jedis才可以从Windows访问Linux启动的redis服务器。java代码import redis.clients.jedis.Jedis;public class RedisTest { public static void main(String[] args) { Je原创 2021-05-16 16:28:37 · 400 阅读 · 1 评论 -
Redis的主从复制
一、Master-Slave主从复制主从复制简单来说,就是主机数据更新后,根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,Slave以读为主。二、Master/Slave机制首先启动三个redis服务器,端口分别为6379、6380、6381此时三台redis服务器的角色都是master执行SLAVEOF命令,启动主从机制主机可以执行写操作,但是从机只能读当主机挂掉之后,两台从机角色还是slave,但是状态由up变成了down主机挂掉,从机仍然保原创 2021-05-15 22:08:19 · 86 阅读 · 0 评论 -
redis消息订阅与发布
一、消息订阅与发布消息的订阅和发布是进程间的一种消息通信模式,发送者(pub)发送消息,订阅者(sub)接收消息。二、常用命令示例先订阅后发布,才能收到消息执行SUBSCRIBE可以一次性订阅多个执行PUBLISH命令,发布消息可以使用通配符*订阅多个,执行PSUBSCRIBE命令...原创 2021-05-15 17:31:28 · 1173 阅读 · 0 评论 -
Redis的事务
一、Redis事务事务可以一次执行多条命令,本质上是一组命令的集合。一个事务中所有命令都会被序列化,按顺序串行化执行而不会被其它命令插入。即在一个队列中,一次性、顺序性、排他性的执行一系列命令。二、事务常用命令discard:取消事务,放弃执行事务块内的所有命令exec:执行所有事务块内的命令multi:标记一个事务块的开始unwatch:取消watch命令对所有key的监视watch:监视一个或多个key,如果在事务执行之前,这个key被其它命令所改动,那么事务将被打断。正常执行事务放原创 2021-05-15 17:07:20 · 78 阅读 · 0 评论 -
AOF持久化以及数据恢复
一、Append Only FIleAOF以日志的形式来记录每个写操作,将redis执行过的所有写指令记录下来,读操作不记录,只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据。换言之redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。二、配置的位置在redis.conf配置文件中开启appendonly,默认为noAOF保存的是appendonly.aof文件重新启动redis会生成appendonly.aof文件appendonly.原创 2021-05-14 21:55:39 · 962 阅读 · 0 评论 -
redis.conf配置文件常用配置解析
一、配置分页插件在MyBatis全局配置文件中配置插件 <!--分页插件--> <plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->原创 2021-05-14 18:14:01 · 232 阅读 · 0 评论 -
RDB持久化以及数据恢复
一、Redis DataBaseRDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存中。RDB保存的是dump.rdb文件redis会单独创建fork子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。fork的作用是复制一个与当前进程一样的进程,新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程。整个过程中,主进程是原创 2021-05-14 18:13:31 · 1098 阅读 · 0 评论 -
RDB快照无法持久化问题【(error) MISCONF Redis is configured to save RDB snapshots······】
在操作redis时突然报错错误原因是:(错误)misconf redis被配置以保存数据库快照,但misconf redis目前不能在硬盘上持久化。用来修改数据集合的命令不能用,请使用日志的错误详细信息。可以修改redis.conf将stop-writes-on-bgsave-error改为no但是这种做法只能保证不报error,你可以继续操作redis,而实际发生的持久化问题并没有得到解决,这样做只是自欺欺人罢了。实际上更多的原因是因为是因为操作权限不够,查看系统日志可以看到Fai原创 2021-05-14 17:04:53 · 685 阅读 · 0 评论 -
Redis概述及常用操作
一、RedisREmote DIctionary Server(远程字典服务器),是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的key-value分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被称为数据结构服务器。Redis有以下三个特点:支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。不仅支持简单的key-value类型的数据,还提供list、set、zset、hash等数据结构的存储。支原创 2021-05-14 12:56:33 · 154 阅读 · 0 评论