2017.12.06 Redis和Reids-cluster

来源:互联网 发布:搜索图片的软件 编辑:程序博客网 时间:2024/05/20 01:45

一、Redis
1.Redis和MySQL
Redis基于内存,存放在内存,速度快,但受内存空间限制。
MySQL存放在硬盘,速度比Redis慢,但存放数据多。
2.Redis主要作为数据缓存,减少MySQL数据库压力。将读写频繁的热数据放在Redis中提升性能。

二、Redis-Cluster
1. Redis-Cluster结构
Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。
Redis-Cluster结构
结构特点:
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效。
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster 负责维护node<->slot<->value(节点<->桶<->值)。
(5)Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。

2.节点分配
采用哈希槽(hash slot)来分配16384个桶(slot),新增一个主节点,就从原来各节点的前面拿取一部分;删除节点类似,移动完成后删除节点。

3.主从模式
一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。
例:A和从节点A1。A挂掉后A1作为主节点,当A重新开启后,A变为A1的从节点。

https://www.cnblogs.com/yingchen/p/6763524.html

三、Redis锁(setnx)
1.setnx(key,value)
2.setnx将key的值设置为value,当且仅当key不存在,若给定的key已存在,则不做任何动作。
3.返回值:当key被设置(无到有)返回1,当key值已存在返回0。
4.通过将特定的字段封装成key,加上对应的value,写入集群中来设定锁。

private static Integer CACHE_EXPIRE_SECONDS = 10; StoreKey storeKey = new StoreKey(category, key, CACHE_EXPIRE_SECONDS);setnx(storeKey,"lock");

key可以由上锁依赖的字段组合而成:uesrId + “-” + cityId
5.解锁:将key-value对从集群中删除。

原创粉丝点击