![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 78
洒家肉山大魔王
学习是一辈子的事情,去身上的戾气也是一辈子的修炼。
展开
-
(error) ERR SELECT is not allowed in cluster mode
最近在配置redis cluster时无法将数据写入redis集群指定索引号的database内,登录rediske客户端进去使用SELECT命令报错如下:在redis集群模式下,默认只能使用0号database库,不允许使用SELECT 操作选择database 。原创 2023-05-17 18:21:11 · 2917 阅读 · 0 评论 -
3种常用的Redis缓存读写策略
1. Cache Aside Pattern[旁路缓存模式]Cache Aside Pattern 是我们平时使用比较多的一个缓存读写模式,比较适合读请求比较多的场景。Cache Aside Pattern 中服务端需要同时维系 DB 和 cache,并且是以 DB 的结果为准。下面我们来看一下这个策略模式下的缓存读写步骤。写:先更新 DB; 然后直接删除 cache 。简单画了一张图帮助大家理解写的步骤。读:从 cache 中读取数据,读取到就直接返回; cach..转载 2022-03-12 16:29:34 · 1247 阅读 · 0 评论 -
CentOS 7.6环境设置Redis开机自启动
创建redis启动脚本[root@node03 init.d]# touchredis编辑redis启动脚本注意:redis的安装路径: /root/redis/,按照实际安装路径来即可。#!/bin/sh## chkconfig: 2345 10 90# description: Start and Stop redis### BEGIN INIT INFO# Provides: redis_6379# Default-Start: 2 3 4 5..原创 2022-03-12 14:32:09 · 2078 阅读 · 0 评论 -
关于Redis缓存和数据库一致性问题
如何保证缓存和数据库一致性,这是一个老生常谈的话题了。 到底是更新缓存还是删缓存? 到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库? 为什么要引入消息队列保证一致性? 延迟双删会有什么问题?到底要不要用? ... 这篇文章,我们就来把这些问题讲清楚。1. 引入缓存提高性能我们从最简单的场景开始讲起。如果你的业务处于起步阶段,流量非常小,那无论是读请求还是写请求,直接操作数据库即可,这时你的架构模型是这样的:但随着业务量转载 2022-03-12 11:15:36 · 348 阅读 · 0 评论 -
Redis的缓存数据过期策略,内存淘汰机制
MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?Redis 提供 6 种数据淘汰策略:volatile-lru(least recently used):从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰 volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰 volatile-random:从已设置过期时间的数据集(s转载 2022-03-12 10:06:07 · 483 阅读 · 0 评论 -
Redis单线程模型详解
1. Redis单线程模型Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型(Netty 的线程模型也基于 Reactor 模式,Reactor 模式不愧是高性能 IO 的基石),这套事件处理模型对应的是 Redis 中的文件事件处理器(file event handler)。由于文件事件处理器(file event handler)是单线程方式运行的,所以我们一般都说 Redis 是单线程模型。既然是单线程,那怎么监听大量的客户端连接呢?Redis 通过IO 多路.转载 2022-03-12 11:20:48 · 399 阅读 · 0 评论 -
redis打开外网访问端口
1.下载Redis,最新版是redis-3.2.1.tar.gz2.上传到Linux上,解压到/usr/local/下面 ,命令:tar -zxvfredis-3.2.1.tar.gz3.我们需要给redis进行授权一下,因为我们要在外网使用,进入redis.conf 文件修改几处配置 :vi redis.confa)将绑定的本机给注释掉,b)将redis-service设置为后台服务c)设置redis-cli连接redis服务器的密码d)退出保存:命令...转载 2022-03-03 21:10:41 · 2171 阅读 · 0 评论 -
关于【缓存穿透、缓存击穿、缓存雪崩、热点数据失效】解决方案
1 前言在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都去查询到数据库。特别是高 QPS 的系统,每次都去查询数据库,对于你的数据库来说将是灾难。今天我们不牵涉多级缓存的知识,就把系统使用到的缓存方案,不管是一级还是多级的都统称为缓存,主要是为了讲述使用缓存的时候可能会遇到的一些问题以及一些解决办法。我们使用缓存时,我们的业务系统大概的调用流程如...原创 2019-05-03 23:49:56 · 365 阅读 · 0 评论 -
【问题10】使用Redis SETNX 命令实现分布式锁
转自:http://blog.csdn.net/lihao21/article/details/49104695使用Redis的 SETNX 命令可以实现分布式锁,下面介绍其实现方法。SETNX命令简介命令格式SETNX key value将 key 的值设为 value,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。SETNX...转载 2019-05-05 21:57:16 · 962 阅读 · 0 评论 -
【问题11】Redis分布式锁-SETNX实现
转自:https://my.oschina.net/u/1995545/blog/366381Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现分布式锁。用SETNX实现分布式锁利用SETNX非常简单地实现分布式锁。例如:某客户端要获得一个名字fo...转载 2019-05-05 21:59:06 · 1129 阅读 · 0 评论 -
【问题9】Redis热点Key发现及常见解决方案
摘要: 热点Key问题产生的原因大致有以下两种: 1、用户消费的数据远大于生产的数据(热卖商品、热点新闻、热点评论、明星直播)。 在日常工作生活中一些突发的的事件,例如:双十一期间某些热门商品的降价促销,当这其中的某一件商品被数万次点击浏览或者购买时,会形成一个较大的需求量,这种情况下就会造成热点问题。热点Key问题产生的原因大致有以下两种:1、用户消费的数据远大于生产的数据(热卖商品、热...转载 2019-05-04 17:26:35 · 699 阅读 · 0 评论 -
【问题8】Redis它到底解决了哪些问题?
目录前言1、从0开始2、基于本机内存的缓存3、服务端的Redis3.1 持久化(Persistence)3.2 哨兵(Sentinel)和复制(Replication)3.3 集群(Cluster)4、客户端的Redis4.1 数据类型4.2 事务4.3 Lua脚本4.4 管道4.5 分布式锁前言先看一下Redis是一个什么东西。官...转载 2019-05-04 17:08:03 · 394 阅读 · 0 评论 -
【问题7】集群部署时的分布式 session 如何实现?
集群部署时的分布式 session 如何实现?分析:你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务、接口幂等性、分布式锁,还有最后一个就是分布式 session。当然了,分布式系统中的问题何止这么一点,非常之多,复杂度很高,但是这里就是说下常见的几个。剖析session 是啥?浏览器有个 cookie,在一段...转载 2019-05-04 00:12:11 · 316 阅读 · 0 评论 -
【问题6】Redis 的过期策略都有哪些?内存淘汰机制都有哪些?
redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?分析:线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责?常见的有两个问题:往 redis 写入的数据怎么没了?可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 re...转载 2019-05-04 00:07:15 · 1122 阅读 · 0 评论 -
【问题5】什么是 redis 的雪崩和穿透?redis 崩溃之后会怎么样?
了解什么是 redis 的雪崩和穿透?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?分析:其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问你。剖析:缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器...转载 2019-05-04 00:02:57 · 713 阅读 · 1 评论 -
【问题4】Redis 的并发竞争问题是什么?了解 redis 事务的 CAS 方案吗?
Redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?分析这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了。而且 redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。剖析某个时刻,...转载 2019-05-04 00:00:49 · 203 阅读 · 0 评论 -
【问题3】生产环境中的 redis 是怎么部署的?
生产环境中的 redis 是怎么部署的?分析:看看你了解不了解你们公司的 redis 生产集群的部署架构,如果你不了解,那么确实你就很失职了,你的 redis 是主从架构?集群架构?用了哪种集群方案?有没有做高可用保证?有没有开启持久化机制确保可以进行数据恢复?线上 redis 给几个 G 的内存?设置了哪些参数?压测后你们 redis 集群承载多少 QPS?剖析:redis ...转载 2019-05-03 23:57:50 · 612 阅读 · 0 评论 -
【问题2】如何保证缓存与数据库的双写一致性?
如何保证缓存与数据库的双写一致性?分析:你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?剖析:一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。串行化可以保证...转载 2019-05-03 23:40:35 · 656 阅读 · 0 评论 -
【问题1】项目中缓存是如何使用的?为什么要用缓存?
项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?分析:只要问到缓存,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?项目中缓存是如何使用的?这个,需要结合自己项目的业务来。为什么要用缓存?用缓存,主要有两个用途:高性能、高并发。高性能假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 m...转载 2019-05-03 23:37:42 · 495 阅读 · 0 评论 -
(11)Redis------分布式锁的实现方式之一(基于Springboot项目搭建)
Redis锁由来首先我们说一下分布式出现之前的锁进程锁:控制某一系统中多个进程访问共享资源时候造成冲突,因为单个进程是有独立性的,进程与进程之间无法访问其他进程的资源,因此线程锁实现方式synchronized等无法完成。线程锁:线程锁是主要是给某一代码块加锁,当这个代码块加锁后,比如synchronized后,第二个线程进来就无法执行这一段代码。常用的还有给某一个全局变量...原创 2019-05-03 23:49:10 · 817 阅读 · 0 评论 -
(10)Redis------必须知道的基础内容
1、什么是Redis?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种...原创 2019-05-01 14:31:37 · 520 阅读 · 0 评论 -
(9)Redis-Cluster集群理论及实践【下】
接上一节内容,本节我们将继续测试一下所搭建的这个Redis集群。1、集群中新加入节点测试一下,新加入一个节点,分2种情况,【1】作为主节点加入集群,【2】作为一个节点的从节点加入集群。首先我们先看一下3master节点、3slave节点时,集群的状态:可以看到6381、6382、6383这3个master节点均分了总共16384区间的哈希槽。这个时候,我们的集群需要拓展,需要让...原创 2019-04-27 11:48:35 · 1709 阅读 · 1 评论 -
(8)Redis-Cluster集群理论及实践【中】
接上一节内容,本节我们将初步测试一下这个Redis集群【集群存值变化,以及主节点的挂掉和重启时,对应集群状态变化】。1、测试连接集群按照redis cluster的特点,它是去中心化,去中间件,每个节点都是对等的。所以,你连接哪个节点都可以获取和设置数据,我们来试一下。redis-cli是redis默认的客户端工具,启动时加上`-c`参数,就可以连接到集群【“-c”,这个参数表示我们将...原创 2019-04-23 21:36:13 · 1017 阅读 · 0 评论 -
(7)Redis-Cluster集群理论及实践【上】
前言redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用。redis在年初发布了3.0.0,官方支持了redis cluster,也就是集群。至此结束了redis 没有官方集群的时代,之前我们用redis cluster用的最多的应该是twitter 发布的Twemproxy(https://github.com/twitter/twemproxy)...原创 2019-04-22 22:46:19 · 1251 阅读 · 0 评论 -
(6)Redis的高可用方案
链接:https://www.jianshu.com/p/2ec2dfe7119b1.1 Redis集群的设计原则和初衷在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子。最核心的目标有三个:性能:这是Redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太大影响,所以Redis采取了P2P而非Proxy方式、异步复制、客户端重定向等设计...转载 2019-04-21 22:31:56 · 284 阅读 · 0 评论 -
(5)Redis主从同步原理及详细配置
前言尽管Redis的性能很好,但是有时候依旧满足不了应用的需要,比如过多的用户进入主页,导致Redis被频繁访问,此时就存在大量的读操作。对于一些热门网站的某个时刻(比如促销商品的时候)每秒成千上万的请求是司空见惯的,这个时候大量的读操作就会到达Redis服务器,触发许许多多的操作,显然单靠一台Redis服务器是完全不够用的。一些服务网站对安全性有较高的要求,当主服务器不能正常工作的时...原创 2019-04-17 02:08:16 · 6864 阅读 · 0 评论 -
(4)Redis的Java API
前言本节主要论述如何在Java中使用Redis。在Java中,可以简易地使Redis,或者通过Spring的RedisTemplate使用Redis。为了实际的工作和学习的需要,以下内容会以Spring的视角为主来介绍在Java中如何使用Redis,不过在基础部分会以XML方式的配置主,而在实践部分则会以Java的配置为主介绍Redis,我们可以根据需要使用XML或者注解来实现想要的功能。...原创 2019-04-16 23:34:17 · 1942 阅读 · 0 评论 -
(3)redis.config配置文件详解
================redis.config配置文件全解==================基本配置daemonize no 是否以后台进程启动databases 16 创建database的数量(默认选中的是database 0)save 900 1 #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。save 300 10 #...原创 2019-04-15 22:52:16 · 829 阅读 · 0 评论 -
(2)Linux环境下安装和使用Redis
1. 在Linux环境下安装Redis版本说明本人使用redis3.0版本,当然可以看个人习惯使用最新版的Redis。3.0版本增加了redis集群功能。安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++源码下载从官网下载http://download.redis.io/relea...原创 2019-04-15 22:32:22 · 427 阅读 · 1 评论 -
(1)快速了解Redis
前言什么是NoSQL?NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:...原创 2019-04-15 21:58:16 · 478 阅读 · 0 评论