
redis
森林森
java学习
展开
-
redis-Cluster-环境搭建
官方cluster分区Redis3.0之后,Redis官方提供了完整的集群解决方案。方案采用去中心化的方式,包括:sharding(分区)、replication(复制)、failover(故障转移)。称为RedisCluster。Redis5.0前采用redis-trib进行集群的创建和管理,需要ruby支持Redis5.0可以直接使用Redis-cli进行集群的创建和管理去中心化RedisCluster由多个Redis节点组构成,是一个P2P无中心节点的集群架构,依靠Gossip协议传播原创 2020-10-24 11:05:30 · 368 阅读 · 0 评论 -
redis-哨兵模式-搭建
哨兵模式哨兵(sentinel)是Redis的高可用性(High Availability)的解决方案:由一个或多个sentinel实例组成sentinel集群可以监视一个或多个主服务器和多个从服务器。当主服务器进入下线状态时,sentinel可以将该主服务器下的某一从服务器升级为主服务器继续提供服务,从而保证redis的高可用性系统centos 7下载随便找个地方下载cd /usr/local/rediswget https://download.redis.io/releases/r原创 2020-10-23 11:07:14 · 4933 阅读 · 6 评论 -
redis-官方cluster分区
分区与集群https://blog.youkuaiyun.com/ko0491/article/details/109218004proxy分区https://blog.youkuaiyun.com/ko0491/article/details/109218776官方cluster分区Redis3.0之后,Redis官方提供了完整的集群解决方案。方案采用去中心化的方式,包括:sharding(分区)、replication(复制)、failover(故障转移)。称为RedisCluster。Redis5.0前采用r原创 2020-10-22 12:18:34 · 499 阅读 · 0 评论 -
redis-proxy端分区
分区https://blog.youkuaiyun.com/ko0491/article/details/109218004proxy端分区在客户端和服务器端引入一个代理或代理集群,客户端将命令发送到代理上,由代理根据算法,将命令路由到相应的服务器上。常见的代理有Codis(豌豆荚)和TwemProxy(Twitter)部署架构Codis由豌豆荚于2014年11月开源,基于Go和C开发,是近期涌现的、国人开发的优秀开源软件之一Codis 3.x 由以下组件组成:Codis Server:基于 redis原创 2020-10-22 11:52:08 · 675 阅读 · 1 评论 -
redis-集群与分区
集群与分区分区是将数据分布在多个Redis实例(Redis主机)上,以至于每个实例只包含一部分数据分区的意义性能的提升单机Redis的网络I/O能力和计算资源是有限的,将请求分散到多台机器,充分利用多台机器的计算能力可网络带宽,有助于提高Redis总体的服务能力。存储能力的横向扩展即使Redis的服务能力能够满足应用需求,但是随着存储数据的增加,单台机器受限于机器本身的存储容量,将数据分散到多台机器上存储使得Redis服务可以横向扩展分区的方式根据分区键(id)进行分区:范围分原创 2020-10-22 11:33:25 · 815 阅读 · 0 评论 -
redis-高可用方案-主从-哨兵
redis-高可用方案“高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。CAP的A AP模型单机的Redis是无法保证高可用性的,当Redis服务器宕机后,即使在有持久化的机制下也无法保证不丢失数据。所以我们采用Redis多机和集群的方式来保证Redis的高可用性。单进程+单线程 + 多机 (集群)主从复制Redis支持主从复制功能,可以通过执行slaveof(Redis5以后改成replicaof)或者在配置文件中原创 2020-10-22 11:07:03 · 548 阅读 · 0 评论 -
redis-Redis扩展功能
Redis扩展功能Lua脚本lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua应用场景:游戏开发、独立应用脚本、Web应用脚本、扩展和数据库插件。OpenRestry:一个可伸缩的基于Nginx的Web平台,是在nginx之上集成了lua模块的第三方服务器OpenResty是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便地搭原创 2020-10-21 18:30:19 · 767 阅读 · 0 评论 -
redis-发布与订阅
发布与订阅Redis提供了发布订阅功能,可以用于消息的传输Redis的发布订阅机制包括三个部分,publisher,subscriber和Channel发布者和订阅者都是Redis客户端,Channel则为Redis服务器端。发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息频道/模式的订阅与退订subscribe:订阅 subscribe channel1 channel2 …Redis客户端1订阅频道1和频道2127.0.0.1:6379> subscribe原创 2020-10-21 18:11:03 · 1489 阅读 · 0 评论 -
Redis持久化
Redis持久化为什么要持久化Redis是内存数据库,宕机后数据会消失。Redis重启后快速恢复数据,要提供持久化机制Redis有两种持久化方式:RDB和AOF注意:Redis持久化不保证数据的完整性。当Redis用作DB时,DB数据要完整,所以一定要有一个完整的数据源(文件、mysql)在系统启动时,从这个完整的数据源中将数据load到Redis中数据量较小,不易改变,比如:字典库通过info命令可以查看关于持久化的信息# Serverredis_version:5.0.9redi原创 2020-10-20 16:29:47 · 123 阅读 · 0 评论 -
Redis -通讯协议及事件处理机制
通讯协议及事件处理机制##通信协议Redis是单进程单线程的。应用系统和Redis通过Redis协议(RESP)进行交互。请求响应模式Redis协议位于TCP层之上,即客户端和Redis实例保持双工的连接串行的请求响应模式(ping-pong)串行化是最简单模式,客户端与服务器端建立长连接连接通过心跳机制检测(ping-pong) ack应答客户端发送请求,服务端响应,客户端收到响应后,再发起第二个请求,服务器端再响应telnet和redis-cli 发出的命令 都属于该种模式特点原创 2020-10-20 15:46:38 · 545 阅读 · 1 评论 -
redis 缓存过期和淘汰策略
缓存过期和淘汰策略Redis性能高:官方数据读:110000次/s写:81000次/s长期使用,key会不断增加,Redis作为缓存使用,物理内存也会满内存与硬盘交换(swap) 虚拟内存 ,频繁IO 性能急剧下降maxmemory不设置的场景Redis的key是固定的,不会增加Redis作为DB使用,保证数据的完整性,不能淘汰 , 可以做集群,横向扩展缓存淘汰策略:禁止驱逐 (默认)设置的场景Redis是作为缓存使用,不断增加Keymaxmemory : 默认为0 不限制问题:原创 2020-10-19 15:47:27 · 433 阅读 · 0 评论 -
Redis 底层数据结构
底层数据结构Redis作为Key-Value存储系统,数据结构如下RedisDB结构Redis中存在“数据库”的概念,该结构由redis.h中的redisDb定义。当redis 服务器初始化时,会预先分配 16 个数据库所有数据库保存到结构 redisServer 的一个成员 redisServer.db 数组中redisClient中存在一个名叫db的指针指向当前使用的数据库RedisDB结构体源码:typedef struct redisDb {int id; //id是数据库序号,原创 2020-10-19 15:34:12 · 270 阅读 · 0 评论 -
Redis 数据类型
数据类型与底层数据结构Redis数据类型和应用场景Redis是一个Key-Value的存储系统,使用ANSI C语言编写。key的类型是字符串。value的数据类型有:常用的:string字符串类型、list列表类型、set集合类型、sortedset(zset)有序集合类型、hash类型。不常见的:bitmap位图类型、geo地理位置类型。Redis5.0新增一种:stream类型注意:Redis中命令是忽略大小写,(set SET),key是不忽略大小写的 (NAME name)Red原创 2020-10-19 14:52:21 · 141 阅读 · 0 评论 -
redis - set key value [expiration EX seconds|PX milliseconds] [NX|XX]
**set key value [expiration EX seconds|PX milliseconds] [NX|XX]**EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value。PX milliseconds : 将键的过期时间设置为 mil...原创 2019-09-24 10:31:18 · 9064 阅读 · 0 评论 -
Java jedis实现 Redis的Pub/Sub模式
在redis-cli中使用Pub/Sub订阅发送接收通配符的Pub/SubRedis还支持通配符的订阅和发布。客户端可以订阅满足一个或多个规则的channel消息,相应的命令是PSUBSCRIBE和PUNSUBSCRIBE。接下来我们再用另一个redis-cli客户端来订阅"chi*"的channelJava中使用监听器package com.ghgcn.redis...原创 2019-09-23 15:17:42 · 2767 阅读 · 0 评论 -
Redis锁的简单实现-java
介绍Redis 2.8 版本中加入了 set 指令的扩展参数,使得 setnx 和 expire 指令可以一起执行,彻底解决了分布式锁的乱象set lock:codehole true ex 5 nxOK... do something critical ...> del lock:codehole上面这个指令就是 setnx 和 expire 组合在一起的原子指令,它就是分布...原创 2019-04-16 20:20:14 · 907 阅读 · 0 评论