1、常用命令
检查进程:ps -ef | grep 关键字
普通杀进程:kill PID(权限不足无法杀死)
强制杀死进程:kill -9 PID
等待进程执行完毕之后杀死:kill -15 PID
2、引入redis优化项目
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一致性原则
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高可用.使用时必须满足主从结构.之后在内部有心跳检测机制.如果发现某个节点宕机,则可以动态实现故障的迁移.
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内部进行计算.之后保存数据,性能浪费在计算上.