![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
JustinNeil
年少是你未醒的梦话,风华是燃尽的彼岸花
展开
-
Redis集群环境搭建
集群环境搭建集群相关概念Redis集群介绍Redis分片策略Redis的主从复制模型Redis集群搭建集群的结构集群的环境准备集群相关概念Redis集群介绍Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。Redis...原创 2019-07-29 14:07:12 · 112 阅读 · 0 评论 -
Redis和Memcached的区别
Redis 和Memcached的区别Redis支持更丰富的数据类型(更复杂的应用场景):Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Memcache只支持简单的数据类型,String。Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中。集群模...原创 2019-08-05 16:29:20 · 181 阅读 · 0 评论 -
Redis设置过期时间
Redis 设置过期时间Redis中有个设置时间过期的功能,就是对存储在Redis 数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。比如我们一般项目中的token或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。我们 set key 的时候,都可以给一个 expire time,就是过期时间...原创 2019-08-05 19:02:13 · 5528 阅读 · 1 评论 -
Redis内存淘汰机制
Redis内存淘汰机制前言内存淘汰机制前言在前一篇文章中我们讲到了通过设置过期时间删除缓存中不需要的数据。但通过设置过期时间还是有问题的。我们想一下:如果定期删除漏掉了很多过期 key,然后也没及时去查,也就没走惰性删除,此时会怎么样?如果大量过期key堆积在内存里,导致Redis内存块耗尽了。怎么解决这个问题呢? 我们可以通过Redis 内存淘汰机制解决这个问题。内存淘汰机制Redis ...原创 2019-08-06 08:44:59 · 131 阅读 · 0 评论 -
缓存雪崩等问题解决方案
缓存雪崩等问题解决方案缓存雪崩简介解决方法处理流程图缓存穿透简介解决方法缓存击穿简介解决方法使用互斥锁“提前”使用互斥锁设置为永久不过期缓存雪崩简介缓存同一时间大面积的失效,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。解决方法事前:尽量保证整个 Redis 集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。事中:本地ehcache缓存 + hystri...原创 2019-08-06 09:40:12 · 210 阅读 · 0 评论 -
Redis的并发竞争key问题
Redis的并发竞争key问题所谓 Redis 的并发竞争 key 的问题也就是多个系统同时对一个 key 进行操作,但是最后执行的顺序和我们期望的顺序不同,这样也就导致了结果的不同!推荐一种方案:分布式锁(zookeeper 和 redis 都可以实现分布式锁)。(如果不存在 Redis 的并发竞争 Key 问题,不要使用分布式锁,这样会影响性能)基于zookeeper临时有序节点可以实现...原创 2019-08-06 09:52:50 · 210 阅读 · 0 评论 -
RedLock
RedLock简介怎么在单节点上实现分布式锁Redlock算法失败重试放锁性能、崩溃恢复和fsync简介Redis 官方网站提出了一种权威的基于 Redis 实现分布式锁的方式名叫 Redlock,这种方式比原先的单节点的方法更安全。它可以保证以下特性:安全特性:互斥访问,即永远只有一个 client 能拿到锁避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资...原创 2019-08-06 14:11:06 · 197 阅读 · 0 评论 -
Spring Data Redis
Spring Data Redis前言创建工程引入依赖配置Redis信息自动配置使用前言 在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了。使用 Java 操作 Redis 的方案很多,Jedis 是目前较为流行的一种方案,除了 Jedis ,还有很多其他解决方案。其中有一个使用也相当多的方案,就是 Spring Data Redis。 在传统...原创 2019-08-12 10:46:35 · 145 阅读 · 0 评论 -
服务器的Redis连接不上解决方案
服务器的Redis连接不上解决方案前言解决方案前言 如果你看到这里,我默认你已经安装好了redis,并且已经成功的在虚拟机的Linux系统中ping通。 我真的是太气愤了!!!网上虽然确实有一大堆人出谋划策,帮助大家解决学习过程中遇到的Bug。但是!!!能不能不要千篇一律复制粘贴!!对自己写的东西负责好吗!!! 从头到尾,我看了百来篇技术博客、文档,都是说bind 127.0.0.1...原创 2019-08-12 15:07:26 · 31545 阅读 · 17 评论 -
Spring Boot整合Jedis
Spring Boot整合Jedis前言导入依赖测试连接前言 在前面的文章中我们讲了如何使用Spring Data Redis 来整合Redis,本文中我们将讨论如何在Spring Boot中整合Jedis导入依赖 主要导入如下依赖 <dependency> <groupId>org.springframework.boo...原创 2019-08-12 16:15:49 · 289 阅读 · 0 评论 -
解决方案:NOAUTH Authentication required
NOAUTH Authentication required问题解决方案问题引入解决方案补充问题引入这个问题一般是出现在远程连接redis没有在客户端设置密码解决方案1.在配置文件中配置spring.redis.password=1232.如果是使用Jedis连接的,第一种方式是不行的,需要 jedis.auth("123");补充顺便讲一下如何在Redis中设置密码...原创 2019-08-12 16:27:53 · 92048 阅读 · 1 评论 -
Redis数据淘汰策略
Redis数据淘汰策略 可以设置内存最大使用量,当内存使用量超出时,会施行数据淘汰策略。Redis 具体有 6 种淘汰策略:策略描述volatile-lru从已设置过期时间的数据集中挑选最近最少使用的数据淘汰volatile-ttl从已设置过期时间的数据集中挑选将要过期的数据淘汰volatile-random从已设置过期时间的数据集中任意选择数据淘汰...原创 2019-08-17 13:47:35 · 213 阅读 · 0 评论 -
Redis的线程模型
Redis的线程模型概述文件事件处理器的结构客户端与Redis的通信过程为什么Redis单线程效率也这么高?概述Redis内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以Redis是单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。文件事件处理器的结构多个 soc...原创 2019-08-05 16:08:53 · 191 阅读 · 0 评论 -
Redis
Redis简介为什么要用Redis高性能高并发为什么要用Redis而不是Map/Guava做缓存简介简单的来说Redis就是一个非关系型数据库,不过跟传统数据库不同的是Redis的数据是存在内存中的,所以读写速度非常快,因此Redis 被广泛应用于缓存方向。另外,Redis 也经常用来做分布式锁。Redis 提供了多种数据类型来支持不同的业务场景。除此之外,Redis 支持事务 、持久化、LU...原创 2019-08-05 15:40:43 · 131 阅读 · 0 评论 -
Linux下安装redis
下载安装包wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz原创 2019-07-25 16:02:58 · 111 阅读 · 0 评论 -
Redis通用命令
五种数据类型的数据的结构差异所以命令也不尽相同,但是还是有一些相通的命令。所以此处先介绍下通用命令通用命令在redis中,默认一共有16个数据库,编号为0-15,正常情况下,用户登录成功后,首先看到的是0号库,可以手动切换为其他库,使用select 命令切换set命令用于创建k/v对del命令用于当key存在时删除keydump命令序列化指定key,返回被序列化的值若key不存在,...原创 2019-07-25 16:34:57 · 210 阅读 · 0 评论 -
Redis五大类型常用命令
Redis五大类型String类型String中的bit命令getBit命令setBit命令bitCount命令bitOp命令bitPos命令hash类型List类型Set类型ZSet有序集合String类型String中的bit命令Redis中字符串的存储方式都是以二进制的方式存储的。getBit命令用于对 key 所储存的字符串值,获取指定偏移量上的位(bit),当偏移量 OFF...原创 2019-07-25 17:22:19 · 215 阅读 · 0 评论 -
Redis发布与订阅
Redis发布订阅概述订阅消息模式订阅消息概述Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息订阅者(sub)接收消息Redis 客户端可以订阅任意数量的频道订阅消息客户端订阅消息的命令如下发送消息命令如下客户端同时会接收到消息:模式订阅消息客户端在订阅消息的时候还可以通过模式匹配订阅的方式订阅,如下发送消息,没有区别接收消息...原创 2019-07-26 11:15:56 · 120 阅读 · 0 评论 -
Redis之主从复制
Redis之主从复制主从复制概念主从复制的优点实现一个主从配置主从关系图实例配置主从复制需要注意的地方复制原理全量复制增量复制复制偏移量第二种主动结构主从关系图具体实现测试主从复制概念主从复制可以扩展Redis的性能,比单机版的Redis性能更加的稳定,Redis的主从复制和关系型数据库的主从复制差不多。从机能精确的从主机复制信息。主从复制的优点1.实现读写分离2.降低master的压力...原创 2019-07-31 11:10:01 · 149 阅读 · 0 评论 -
Redis实现任务队列
目录任务队列相关属性松耦合性易于扩展Redis实现任务队列优先级队列任务队列相关属性松耦合性生产者和消费者无需知道彼此的实现细节,只需要约定好任务的描述格式,这使得生产者和消费者可以由不同的团队使用不同的编程语言编写。易于扩展消费者可以有多个,而且可以分布在不同的服务器中,如下图,借此可以轻易的降低单台服务器的负载。Redis实现任务队列redis中实现任务队列我们可以通过List...原创 2019-07-26 14:41:57 · 723 阅读 · 0 评论 -
Redis持久化之AOF
与快照持久化通过直接保存 Redis 的键值对数据不同,AOF 持久化是通过保存 Redis 执行的写命令来记录 Redis 的内存数据。理论上说,只要我们保存了所有可能修改 Redis 内存数据的命令(也就是写命令),那么根据这些保存的写命令,我们可以重新恢复 Redis 的内存状态。AOF 持久化正是利用这个原理来实现数据的持久化与数据的恢复的。开启AOF在redis中AOF默认是关闭的...原创 2019-07-26 15:37:23 · 135 阅读 · 0 评论 -
Redis持久化之快照
快照持久化快照持久化配置快照持久化快照效果验证快照持久化原理快照优缺点优点缺点如何禁用快照持久化持久化所谓的持久化就是保持我们的数据不丢失,将数据通常保存在我们的硬盘中。在Redis中持久化的方式有两种,一种是快照持久化,一种是AOF持久化,各有各的优缺点,在项目中我们得根据实际的情况来选择具体的持久化方式。本文主要介绍快照持久化快照持久化也叫RDB持久化方式。就是通过拍摄快照的方式来实现...原创 2019-07-26 16:11:43 · 144 阅读 · 0 评论 -
Redis中的事务
redis是NOSQL数据库,所以也存在事务,只是此事务和关系型数据库的事务是有区别的。事务实例Redis中事务的使用其实非常简单,通过MULTI命令即可。在MULTI命令执行之后,我们可以继续发送命令执行,但此时命令不会立即执行,而是保持到一个队列中,如下当所有的命令都输入完成后,我们可以输入EXEC命令来执行队列中的命令,如下事务异常事务中的异常有两种情况:进入队列之前发生...原创 2019-07-26 19:48:30 · 127 阅读 · 0 评论 -
Redis哨兵模式
在主从模式的Redis系统中,从数据库在整个系统中起到了数据冗余备份和读写分离的作用,但是当数据库遇到异常中断服务后,我们只能通过手动的方式选择一个从数据库来升格为主数据库,显然这种方式很麻烦需要人工介入,这时通过哨兵模式可以实现自动化的系统监控和故障恢复。哨兵模式什么是哨兵哨兵的作用是监控Redis系统的运行状态,功能包括以下两个:哨兵是一个独立的进程,使用哨兵的典型结构图如下:实...原创 2019-07-27 09:20:08 · 199 阅读 · 0 评论 -
Ruby版本升级问题解决
Redis集群环境中需要ruby环境,执行gem install redis时,提示如下错误:在centOS中yum源中对ruby的支持版本为2.0.0,可gem 安装redis需要最低是2.3.0,采用rvm来更新rubygpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39D...原创 2019-07-27 09:54:31 · 2775 阅读 · 0 评论 -
找不到org.apache.commons.pool2.impl.GenericObjectPoolConfig的解决方法
异常记录Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletEndpointRegistrar' defined in class path resource [org/springframework/boot/actuate/aut...原创 2019-09-07 14:30:12 · 5124 阅读 · 0 评论