Redis
文章平均质量分 80
擦肩而过
天道酬勤,精益求精
展开
-
Redis之RedisTemplate配置方式(序列和反序列化)(八)
POJO对象的存取场景,使用JDK本身序列化机制,将pojo类通过ObjectInputStream/ObjectOutputStream进行序列化操作,最终redis-server中将存储字节序列。是目前默认的序列化策略。:Key或者value为字符串的场景,根据指定的charset对数据的字节序列编码成string,是“new String(bytes, charset)”和“string.getBytes(charset)”的直接封装。是最轻量级和高效的策略。转载 2022-11-04 20:46:33 · 6328 阅读 · 0 评论 -
redis集群手动迁移槽
网上的知识太杂,还是写一遍自己亲身操作的吧因为集群某个节点经常宕机,目前原因未知。所以掉线的节点再加入集群后,经常发现哈希槽分配错乱,甚至间隔,如下,741槽本应在连续不断的8002节点上,现在却跑到8001节点,手动调整吧目标是把741槽从8001节点转移到8002节点。第一步两种操作方式任选其一:在要迁入的节点上(8002)操作:cluster setslot 741 importing af40bb4ce7a4d623a812b716246c30df49b9db08(741目前原创 2021-05-27 09:49:55 · 1244 阅读 · 0 评论 -
redis cluster 强制kill某一个节点和shutdown某一个节点后修复过程
redis cluster 命令行,执行以下命令需登录cluster,是集群所独有的集群(cluster)CLUSTER INFO 打印集群的信息CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息节点(node)CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子CLUSTER FORGET <node_id> 从集群中移除 node.转载 2021-05-27 07:50:46 · 1132 阅读 · 0 评论 -
springboot集成redis集群(Jedis and lettuce)
集成redis集群和单机redis区别主要在配置文件那里1.引入maven包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId><!-- <version>2.2.4.RELEAS原创 2021-05-12 10:23:07 · 1505 阅读 · 0 评论 -
redis从节点slave,fail,noaddr问题处理
一 问题描述查看集群状态,发现其中两个从节点异常(是fail状态)在问题节点上查看节点状态,发现它已脱离集群,且id都已发生了变化:即 id已经从76ba12f992228d906c368e0a5978013a210e9cd4 变成af40bb4ce7a4d623a812b716246c30df49b9db08/*若id没发生变化,直接重启下该从节点就能解决*/二 解决办法2.1 将该从节点剔出集群#在集群每个正常节点上执行cluster forget 故障从节点...转载 2021-05-01 12:11:57 · 1747 阅读 · 0 评论 -
九、Redis开发规范与性能优化
一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:idtrade:order:1(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:user:{uid}:friends:messages:{mid} 简化为 u:{uid}:fr:m:{mid}(3)【强制】:不要包含特殊字符反例:包含空格、换行、单双引号以及其他转义字符2. value设计原创 2021-04-29 22:39:11 · 251 阅读 · 0 评论 -
redis集群报错:(error) CLUSTERDOWN The cluster is down
更换了电脑,把原来的电脑上的虚拟机复制到了新电脑上,启动虚拟机上的centos系统,然后启动redis集群(redis5版本),发现集群可以启动,redis进程也有,但是连接集群中的任意节点就报错,如下查看单个节点的集群配置信息:发现是因为原来的集群配置信息导致的错误,需要将每个redis实例下的dump.rdb 和nodes.conf文件删除,然后重新创建集群重新创建集群:首先启动6个redis实例2 .进入任意一个redis实例,执行集群创建命令:./r...转载 2021-04-29 00:56:29 · 3206 阅读 · 0 评论 -
八、Redis集群水平扩容
Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展。一、启动集群1、启动在之前搭建好的环境上执行如下命令启动执行在 192.168.157.6上执行cd /usr/local/redis/srcredis-server ../redis_cluster/7000/redis.confredis-server ../redis_cluster/7001/redis转载 2021-04-29 22:38:28 · 701 阅读 · 0 评论 -
七、Redis哨兵模式和高可用集群模式比较
一、哨兵模式在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率搭建可以参考:https://www.suibibk.com/t转载 2021-04-28 14:14:38 · 8248 阅读 · 0 评论 -
六、Redis Java连接示例(连接池、哨兵、springboot、集群)
下面介绍用Java连接redis的一些例子,涉及管道、lua、哨兵连接、springboot连接的例子。一、Java连接池连接(管道,lua)加入如下依赖<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency&转载 2021-04-28 14:13:39 · 1550 阅读 · 0 评论 -
五、Redis哨兵高可用架构
sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis主节点通知给client端(这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息)一、redis哨兵架构搭建步骤1、复制一份sentinel.c转载 2021-04-28 14:06:20 · 128 阅读 · 0 评论 -
四、Redis主从架构
一、Redis主从工作原理如果你为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个SYNC命令(redis2.8版本之前的命令)给master请求复制数据。master收到SYNC命令后,会在后台进行数据持久化通过bgsave生成最新的rdb快照文件,持久化期间,master会继续接收客户端的请求,它会把这些可能修改数据集的请求缓存在内存中。当持久化进行完毕以后,master会把这份rdb文件数据集发送给slave,slave会把接收到的数据进行持久转载 2021-04-28 14:05:29 · 127 阅读 · 0 评论 -
三、Redis持久化机制
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。一、RDB(Redis DataBase)在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。比如说, 以下设置会转载 2021-04-28 14:04:47 · 140 阅读 · 0 评论 -
二、Redis的单线程和高性能
一、Redis 单线程为什么还能这么快?因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。二、Redis 单线程如何处理那么多的并发客户端连接?Redis的IO多路复用:redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处转载 2021-04-28 14:03:12 · 100 阅读 · 0 评论 -
一、Redis的数据结构以及相关应用场景
Redis有如下五种最常使用的数据结构:字符串string、哈希hash、列表list、集合set、有序集合一、String结构1、字符串常用操作SET key value //存入字符串键值对 MSET key value [key value ...] //批量存储字符串键值对 SETNX key value //存入一个不存在的字符串键值对 GET key //获取一个字符串键值 MGET key [key ...] //批量获取字符串键值 DEL key [key ..转载 2021-04-28 14:02:02 · 189 阅读 · 0 评论 -
ubuntu命令安装redis并设置自启动
由于没时间系统学习,只能是用到什么记录什么,有点杂乱安装redis有两种方式一.apt安装本文Ubuntu环境(20.04)安装redissudo apt-get install -y redis-server设置密码sudo vim /etc/redis/redis/redis.conf修改配置文件里的requirepass,把注释关掉,然后后面改为你想设置的密码,然后再重新启动redis即可service redis restart再进行redis操作的时候就会提示输入密码转载 2021-04-09 01:00:17 · 4624 阅读 · 4 评论 -
一文读懂Redis的四种模式,单机、主从、哨兵、集群
入职那天下午,组长给我丢了几个文档,让我看下这个这些工程的缓存系统问题,让我把redis升级为哨兵模式。接到任务的我,内心是懵逼的。第一、不知道都是些什么类型的服务在用redis。第二、不知道以什么姿势在用redis。第三、如果redis挂了会不会影响用户。第四、我完全没用过redis。虽说没干过,但咋也不怂。毕竟要是天天干的都是干过的工作,那就是有问题了,很快就被优化掉了。看来社招入职和校招还是不一样的,校招进来都会有些入职培训或者新人班课程。通过这些形式的教育,第一、转载 2021-04-28 11:31:45 · 775 阅读 · 0 评论 -
redis面试
作者:敖丙链接:https://www.zhihu.com/question/354518943/answer/888891865小伙子你好,之前问过了你基础知识以及一些缓存的常见几个大问题了,那你能跟我聊聊为啥Redis那么快么?哦,帅气迷人的面试官您好,我们可以先看一下关系型数据库跟Redis本质上的区别。Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。 完全基于内存,绝大部分.转载 2021-04-28 10:33:55 · 186 阅读 · 0 评论 -
redis5.0集群搭建
redis5.0开始,不用ruby就能搭建集群,方便太多。从零开始吧,我是先学习了单机版redis,分别在centos8.0和ubuntu20.04开了一个单机版,测试都没问题。等到集群时发现哪哪都不顺,所以记录下来。回顾: 1.centos下yum install -y gcc #依赖gcc,所以必须安装wget http://download.redis.io/releases/redis-5.0.5.tar.gz ...转载 2021-04-28 02:45:07 · 602 阅读 · 0 评论 -
[ERR] Node 192.168.1.200:7001 is not empty. Either the nodealready knows other nodes (check with CL
关于启动redis集群时:[ERR] Node 172.168.63.202:7001 is not empty. Either the nodealready knows other nodes (check with CLUSTER NODES) or contains some的问题解决办法:1)将每个节点下aof、rdb、nodes.conf本地备份文件删除;2)172.168.63.201:7001> flushdb #清空当前数据库(可省略)3)之后再执行脚本,成功..转载 2021-04-27 21:38:07 · 1422 阅读 · 0 评论 -
Centos8安装Redis及初步使用
一、安装gcc依赖由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装[root@localhost local]# yum install -y gcc二、下载并解压安装包[root@localhost local]# wget http://download.redis.io/releases/redis-5.0.3.tar.gz[root@localhost local]# tar -zxvf r...转载 2020-06-25 22:00:15 · 2832 阅读 · 0 评论