Redis非关系型数据库

1、常用命令

检查进程:ps -ef | grep 关键字

普通杀进程:kill PID(权限不足无法杀死)

强制杀死进程:kill -9 PID

等待进程执行完毕之后杀死:kill -15 PID

2、引入redis优化项目

Redis非关系型数据库_第1张图片

3、常用命令

启动redis:redis-server redis.conf

停止redis:redis-cli -p 6379 shutdown

检索服务:ps -ef|grep redis 

杀死进程:kill -9 PID

进入客户端:redis-cli -p 6379(端口号)

退出客户端:exit

4、redis使用的数据结构

string、List、Hash、Set。

5、redis分片

单台redis内存有限,一般设定512M-1024M,处理海量数据时一台redis肯定不够。此时应考虑内存动态扩容——redis分片。

redis分片主要目的实现redis内存扩容,对用户而言是一大台redis,但是内部每个redis中保存数据都是不相同的。

5.1 hash一致性原则

Redis非关系型数据库_第2张图片

1、确定节点node在hash位置.

2、当用户保存数据时将key经过hash计算获取位置.

3、按照顺时针的方向查找最近node节点之后进行赋值操作.

5.2 hash一致性特性

均衡性、单调性(递增,不能少)、分散性(一个key可能有多个位置)、负载(同一个位置有多个key)。

5.3 分片总结

1)分片主要的作用实现了内存的扩容.

2)使用redis分片的性能是最高的.(hash操作都发生在服务器端tomcat)

3)如果一个redis分片宕机,则整个分片不能使用.

6、哨兵

redis可以利用哨兵实现redis高可用.使用时必须满足主从结构.之后在内部有心跳检测机制.如果发现某个节点宕机,则可以动态实现故障的迁移.

Redis非关系型数据库_第3张图片

1)当主机和从机实现类主从结构之后,程序开始正常的同步数据.

2)当哨兵启动时整个redis高可用生效.

3)当哨兵启动时,会监听主机的信息.利用心跳检测(PING-PONG机制)检查当前主机是否存活.如果连续3次没有返回值则表明主机宕机.

哨兵监听主机时会记录当前主机的全部从节点信息.当主机宕机之后由哨兵负责推选出新的主节点.如果哨兵确定了新的主节点.则其余的节点都是当前主节点的从机.

7、Redis集群

Redis的数据都保存在内存中,如果遇到宕机或者断电,则内存数据清空.数据丢失.但是在生产环境下不允许出现数据丢失的问题.

7.1 持久化原则

redis内部根据持久化原则,定期将数据进行持久化操作(将内存数据保存到本地磁盘中),若遇到宕机,则服务重新启动读取指定的持久化文件即可恢复数据。

1)RDB(默认)

A: redis默认的持久化策略;

B: 持久化效率最高;

C:定期备份,可能会丢失数据;

D: 做内存快照,持久化文件占用空间小;

用户操作越频繁持久化周期越短。

2)AOF

A:实现数据的实时持久化;

B:默认关闭,需要手动开启;

C:记录用户的执行过程,持久化效率低;

D: 持久化是异步操作。

3)关于AOF与RDB总结 

A: 两种模式可以同时存在;

B:默认条件下以AOF为主;

C:当程序执行save操作时才会执行RDB操作。

7.2 redis内存策略

1. volatile-lru 将设定超时时间的数据采用LRU算法删除.

2. allkeys-lru  将所有的数据采用LRU算法删除.

3. volatile-lfu 将设定超时时间的数据采用LFU算法删除

4. allkeys-lfu  将所有数据采用LFU算法删除

5. volatile-random 将设定超时时间的数据随机删除.

6. allkeys-random  所有的数据都随机删除

7. volatile-ttl    将设定超时时间的数据按照剩余时间排序删除.

8. noeviction      表示不删除数据,如果内存占满报错返回

7.3 redis哨兵和分片的特点

优点:

1.分片可以实现redis内存的动态扩容.

2. 哨兵可以实现redis的高可用.

缺点:

1. 分片:如果一个节点出现宕机则整个分片无法运行.

2. 哨兵:虽然哨兵可以实现Redis高可用,但是哨兵本身没有高可用效果.如果哨兵宕机则整个服务宕机.

由此我们选择redis集群解决这个问题。

7.4 redis集群高可用推选原理

Redis的所有节点都会保存当前redis集群中的全部主从状态信息.并且每个节点都能够相互通信.当一个节点发生宕机现象.则集群中的其他节点通过PING-PONG检测机制检查Redis节点是否宕机.当有半数以上的节点认为宕机.则认为主节点宕机.同时由Redis剩余的主节点进入选举机制.投票选举链接宕机的主节点的从机.实现故障迁移.

7.5 redis集群宕机条件

集群中如果主机宕机,那么从机可以继续提供服务。当主机中没有从机时,则向其它主机借用多余的从机.继续提供服务.如果主机宕机时没有从机可用,则集群崩溃.

分片与集群:

1.分片的运算发生在tomcat服务器中.数据直接计算完成之后保存到了具体的redis节点中.

2.redis集群是将key在redis内部进行计算.之后保存数据,性能浪费在计算上.

你可能感兴趣的:(Redis非关系型数据库)