Redis

2019-04-02  本文已影响0人  劳资爱学习

什么是Redis?

Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下:

1.字符串类型(Stirng)

    String是redis最基本的类型。你可以理解成为与Memcached一模一样的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如ipg图片或者序列化的对象。string类型是Redis最基本的数据类型,sting类型的值最大能存储521MB。

2.散列类型(Hash->哈希)

Redis hash是一个键值(key=>value)对集合。

Redis hash是一个sting类型的field和value的映射表,hash特别适合用于存储对象。

每个 hash 可以存储 232 -1 键值对(40多亿)。

3.列表类型(List)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

4.集合类型(Set)

Redis的Set是sting类型的无序集合。

集合是通过哈希表实现的,所以添加、删除、查找的复杂都是0(1)。

添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。

5.有序集合类型(zset)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

添加元素到集合,元素在集合中存在则更新对应score。

Redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)

分布式集群架构中的 session 分离

聊天室的在线好友列表

任务队列(秒杀、抢购、12306 等等)

应用排行榜

网站访问统计

数据过期处理(可以精确到毫秒)

Redis HA 方案

HA(High Available,高可用性群集)机集群系统简称,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执 行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。

Redis 一般以主/从方式部署(这里讨论的应用从实例主要用于备份,主实例提供读写)该方式要实现 HA 主要有如下几种方案:

主从及哨兵架构 redis cluster集群

Redis一致性哈希算法

将用户和redis节点的hash值对应到一个32位的环形数据结构上,环形结构首尾封闭,用户通过hash算法来定位在环形结构上,redis节点也通过hash算法来定位到环形结构上,此时的命中问题就变成了,用户节点通过顺时针旋转,在旋转的过程中若碰到redis节点,就在该节点上读取数据,若此时在环形结构上增加新的redis节点,由于是顺时针寻找对应的redis节点,所以用户此时的redis命中率还是很高的,不会因为增加了一台redis节点就导致大量的用户命中失败的情况出现。

Redis集群一致性Hash
上一篇 下一篇

猜你喜欢

热点阅读