redis
日薪灬越亿
这个作者很懒,什么都没留下…
展开
-
Redis学习 集群下线,故障转移(十九)
请求路由重定向我们知道,在redis集群模式下,redis接收的任何键相关命令首先是计算这个键CRC值,通过CRC找到对应的槽位,再根据槽找到所对应的redis节点,如果该节点是本身,则直接处理键命令;如果不是,则回复键重定向到其它节点,这个过程叫做MOVED重定向故障转移:redis集群实现了高可用,当集群内少量节点出现故障时,通过故障转移可以保证集群正常对外提供服务。...原创 2019-12-03 21:43:50 · 749 阅读 · 3 评论 -
Redis学习 集群减缩(十八)
集群同时也支持节点下线掉下线的流程如下:流程说明:确定下线节点是否存在槽slot,如果有,需要先把槽迁移到其他节点,保证整个集群槽节点映射的完整性; 当下线的节点没有槽或本身是从节点时,就可以通知集群内其它节点(或者叫忘记节点),当下线节点被忘记后正常关闭。删除节点也分两种一种是主节点6382,一种是从节点6392。在从节点6392中,没有分配哈希槽,执行....原创 2019-12-03 21:08:52 · 105 阅读 · 0 评论 -
Redis学习 集群扩容(十七)
这也是分布式存储最常见的需求,当我们存储不够用时,要考虑扩容扩容步骤如下:准备好新节点加入集群,迁移槽和数据同目录下新增redis6382.conf、redis6392.conf启动两个新redis节点./redis-server clusterconf/redis6382.conf & (新主节点)./redis-server clustercon...原创 2019-12-03 21:05:30 · 113 阅读 · 0 评论 -
Redis学习 redis节点之间的通信(十六)
节点之间采用Gossip协议进行通信,Gossip协议就是指节点彼此之间不断通信交换信息当主从角色变化或新增节点,彼此通过ping/pong进行通信知道全部节点的最新状态并达到集群同步Gossip协议Gossip协议的主要职责就是信息交换,信息交换的载体就是节点之间彼此发送的Gossip消息,常用的Gossip消息有ping消息、pong消息、meet消息、fail消息...原创 2019-12-03 20:57:56 · 1199 阅读 · 0 评论 -
Redis学习 redis集群(手敲一遍)(十五)
RedisCluster是redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的需求,当遇到单机内存、并发等瓶颈时,可使用此方案来解决这些问题分布式数据库概念:1,分布式数据库把整个数据按分区规则映射到多个节点,即把数据划分到多个节点上,每个节点负责整体数据的一个子集比如我们库有900条用户数据,有3个redis节点,将900条分成3份,分别存入到3个r...原创 2019-12-03 20:48:49 · 149 阅读 · 0 评论 -
Redis学习 哨兵机制(十四)
为什么要哨兵机制?A,我们学习了redis的主从复制,但如果说主节点出现问题不能提供服务,需要人工重新把从节点设为主节点,还要通知我们的应用程序更新了主节点的地址,这种处理方式不是科学的,耗时费事B,同时主节点的写能力是单机的,能力能限C,而且主节点是单机的,存储能力也有限主从故障如何故障转移(不满足高可用)A,主节点(master)故障,从节点slave-1端执行 sl...原创 2019-12-01 20:48:09 · 324 阅读 · 0 评论 -
Redis学习 主从复制(十三)
主从复制 a,方式一、新增redis6380.conf, 加入 slaveof 192.168.42.111 6379, 在6379启动完后再启6380,完成配置; 如果主机设置了密码则:查找/masterauth 回车搜索masterauth <master-password>的下一行 masterauth 主机密码 如:m...原创 2019-12-01 17:46:35 · 118 阅读 · 0 评论 -
Redis学习 Redis持久化(十二)
redis持久化redis支持RDB和AOF两种持久化机制,持久化可以避免因进程退出而造成数据丢失;RDB持久化把当前进程数据生成快照(.rdb)文件保存到硬盘的过程,有手动触发和自动触发手动触发有save和bgsave两命令save命令:阻塞当前Redis,直到RDB持久化过程完成为止,若内存实例比较大会造成长时间阻塞,线上环境不建议用它...原创 2019-12-01 17:33:47 · 97 阅读 · 0 评论 -
Redis学习 发布与订阅(了解即可)(十一)
redis提供了“发布、订阅”模式的消息机制,其中消息订阅者与发布者不直接通信,发布者向指定的频道(channel)发布消息,订阅该频道的每个客户端都可以接收到消息redis主要提供发布消息、订阅频道、取消订阅以及按照模式订阅和取消订阅发布消息publish channel:test "hello world"订阅消息subscribe channel:test此时...原创 2019-12-01 16:35:17 · 104 阅读 · 0 评论 -
Redis学习 LUA语言与redis(十)
LUA脚本语言是C开发的,类似存储过程使用脚本的好处如下:•1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了网络往返时延。•2.原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。•3.复用:客户端发送的脚本会永久存储在Redis中,意味着其他客户端可以复用这一脚本而不需要使用代码完...原创 2019-12-01 16:28:13 · 304 阅读 · 0 评论 -
Redis学习 RESP协议手写jedis(九)
*3$3set$11lisonHeight$3183结合代码来看,很清楚!//自定义的jedispublic class CaojiuluJedis { //set key value /* * * * *3 $3 SET $11 lisonLength $1 3 * * * */...原创 2019-11-30 22:26:02 · 154 阅读 · 0 评论 -
Redis学习 Pipeline(八)
pipeline出现的背景:redis客户端执行一条命令分4个过程:发送命令-〉命令排队-〉命令执行-〉返回结果这个过程称为Round trip time(简称RTT, 往返时间),mget mset有效节约了RTT,但大部分命令(如hgetall,并没有mhgetall)不支持批量操作,需要消耗N次RTT ,这个时候需要pipeline来解决这个问题未使用pipe...原创 2019-11-30 22:16:13 · 407 阅读 · 0 评论 -
Redis学习 Redis性能测试及工具实战(七)
慢查询原因分析:与mysql一样:当执行时间超过阀值,会将发生时间 耗时 命令记录redis命令生命周期:发送 排队 执行 返回慢查询只统计第3个执行步骤的时间预设阀值:两种方式,默认为10毫秒动态设置6379:> config set slowlog-log-slower-than 10000 //10毫秒10000微秒 使用config set完...原创 2019-11-30 21:32:56 · 160 阅读 · 0 评论 -
Redis学习 Redis实现购物车核心功能实战(六)
基于Redis购物车需求分析购物车业务需求使用用户登录的Cookie记录用户浏览过的商品,即用户意向商品,用来挖掘意向用户定期对浏览商品的旧记录进行剔除,保留最新的25个购物信息购物车已存在同类商品,再次加入时商品数量大于0时,只更新购物车;若用户加入购物车的商品数量为0,则从购物车删除技术预热签名Cookie:通常会存储用户名、可能还有用户ID、最后一次登录成功...原创 2019-11-25 19:59:24 · 1050 阅读 · 0 评论 -
Redis学习 Redis+Lua抢红包实战(五)
抢红包实战预热List队列:将N个红包放到List队列中,用来初始化红包池子执行命令,如何将多个红包放到放到hongBaoPool中lpush hongBaoPoolKey {id:rid_1, money:9}lpush hongBaoPoolKey {id:rid_2, money:8}lpush hongBaoPoolKey {id:rid_3, mon...原创 2019-11-24 22:39:30 · 416 阅读 · 0 评论 -
Redis学习 基于Redis设计的投票网站实战(三)
文章投票功能模块需求用户可以发表文章,发表时默认给自己的文章投了一票用户在查看网站时可以按评分进行排列查看用户也可以按照文章发布时间进行排序为节约内存,一篇文章发表后,7天内可以投票,7天过后就不能再投票了为防止同一用户多次投票,用户只能给一篇文章投一次票关系数据库设计文章基本信息表 t_article article_id titl...原创 2019-11-24 21:57:11 · 857 阅读 · 2 评论 -
Redis学习 工具类(四)
import java.util.List;import java.util.Map;import java.util.Set;import org.springframework.stereotype.Component;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import r...原创 2019-11-24 21:52:45 · 225 阅读 · 0 评论 -
Redis学习 Redis的API应用 ,数据结构以及使用方式(二)
Redis基本通讯模型列举例子:三个客户端同时执行命令客户端1:set name test客户端2:incr num客户端3:incr num执行过程:发送指令-〉执行命令-〉返回结果执行命令:单线程执行,所有命令进入队列,按顺序执行,使用I/O多路复用解决I/O问题,(通过select/poll/epoll/...原创 2019-11-24 20:53:12 · 157 阅读 · 0 评论 -
Redis学习 Redis介绍(一)
redis介绍(Redis安装在磁盘;Redis数据存储在内存)redis是一种基于键值对(key-value)数据库,其中value可以为string、hash、list、set、zset等多种数据结构,可以满足很多应用场景。还提供了键过期,发布订阅,事务,流水线,等附加功能,流水线: Redis 的流水线功能允许客户端一次将多个命令请求发送给服务器, 并将被执行的多个命令请求的结...原创 2019-11-23 16:13:47 · 194 阅读 · 0 评论 -
Redis单节点安装步骤
1、下载源码,解压缩后编译源码。$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz$ tar xzf redis-4.0.6.tar.gz$ cd redis-4.0.6创建目录:mkdir/usr/local/redis$ make PREFIX=/usr/local/redis installcp r...原创 2019-11-18 11:10:36 · 128 阅读 · 0 评论 -
FastJSON :json解析、序列化及其反序列化
FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JSON库。多了不说了,百度一下一大把。在此,简单的总结一下自己用过,测试过的方法。如果使用Maven,在pom.xml文件加入以下依赖。1 <dependency>2 <groupId>c...转载 2019-03-04 14:44:26 · 1087 阅读 · 0 评论 -
linux 通过git安装redis
首先安装在linux上安装git,可以详见我另外一篇博客。1.下载源码 git clone --branch 2.8 --depth 1 git@github.com:antirez/redis.gitdepth用于指定克隆深度,为1即表示只克隆最近一次commit.可能要报错:Cloning into 'redis'...Warning: Permanently added t...原创 2019-02-26 16:23:35 · 514 阅读 · 0 评论 -
redis的几种数据机构操作--包含jedis操作
string ( 字符串)--字符串最大的长度是512M127.0.0.1:6379> set name caojiuluOK127.0.0.1:6379> get name"caojiulu"127.0.0.1:6379> exists name(integer) 1127.0.0.1:6379> del name(integer) 11...原创 2019-03-05 14:02:46 · 301 阅读 · 0 评论