Redis简介 持久化 集群

Redis:

redis是一个开源的,内存中的数据结构存储系统,是非关系型数据库;

它可以用作数据库、缓存和消息中间件,也可以,可基于内存亦可持久化的日志型、Key-Value数据库,而且提供多种语言的API,

您也可以关闭持久化功能,将Redis作为一个高效的网络的缓存数据功能使用;

redis的数据会存储到硬盘上;

Redis支持五种类型的数据结构(lists,hashes,sets,hset,strings,sorted sets)其中sorted set为有序集合可重复,set不可重复,

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

1)设置key有效时间,时间单位是second:

127.0.0.1:6379> EXPIRE key seconds

 

2)zset集合根据score分数由小到大排列:

127.0.0.1:6379> ZRANGE key start stop [WITHSCORES]

 

redis持久化:

保存数据一种采用的是rdb(快照的形式进行数据的保存,),快照是采用一种机制保存,这种机制你可以自己在redis的配置文件中进行配置,隔多长时间保存多少数据,这种方法是比较快了,数据会被保存到硬盘上,当redis启动的时候,硬盘上的数据会在写到数据库中,这种方法是大大提高了数据的存储和读取的效率。但是性能上还是会有一定的影响,毕竟他还要去占用cpu去做保存快照的操作;

redis保存数据的另一种方法就是采用aof集群的方式,它会使每个服务器内都有对方服务器上的数据,这中方式避免了像rdb那种在特定时间内用快照保存数据的机制,减少内存的占用,从而提高性能。而且这种方法还有另一个好处就是,当一个服务器荡掉以后,数据不会因此丢失,而是当你在操作数据的时候会从其他的服务器上读到你想要操作的数据。但是这种方法会使你在硬件设备上付出一定的成本。

默认的保存方式就是rdb,

Redis集群原理:

    Redis默认有16384个槽点,这是它能够存储数据的上限,假如有三个集群,这三个集群会将这所有的槽点进行均分,每个集群会对应区间的槽点,这三台服务器会互相发送/接受ping/pong指令来交互确认彼此正常状态,当添加数据的时候,会根据key对应的hash值(通过crc16算法),计算出该key放在哪个节点下,然后进行存放数据,

如何防止redis数据丢失?主从复制,会有备份机.类似于ngnix的备份机,当主机挂掉之后会把数据通过某种方式存储到备份机,

通过选举机制进行确定服务器是否宕机,所有的备份机会连接每台redis主服务器,通过哨兵模式某种机制共同判断某台主机是否宕机,如果符合某种条件,则认为该主服务器宕机,数据便会存储到从服务器上,也就是备份机.他们不听的ping/pong来进行信息交互,当超过半数认为某服务器宕机了,就会进行数据转移

主从+分片+选举(选举底层用的就是哨兵的原理)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章