非关系数据库:Redis

Posted 还行少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非关系数据库:Redis相关的知识,希望对你有一定的参考价值。

一、Redis简介

1.Redis概述

  • Redis是一个开源的、使用c语言编写的NosQL数据库。
  • Redis基于内存运行并支持持久化(支持存储在磁盘),采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环

Redis服务器程序默认是单进程模型

  • Redis服务在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率

开双进程的好处

  • 备份
  • 抗高并发的同时尽量不给CPU造成太大的压力

2.Redis的优点

  • 具有极高的数据读写速度
    数据读取的速度最高可达到110000 次/s,数据写入速度最高可达到81000 次/s
  • 支持丰富的数据类型
    支持key-value、 Strings、 Lists、Hashes ( 散列值)、Sets 及Ordered Sets等数据类型操作
  • 支持数据的持久化
    可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  • 原子性
    Redis所有操作都是原子性的:一起成功,一起失败
  • 支持数据备份
    即master-salve 模式的数据备份

3.常见应用场景

  • 获取最新N个数据的操作
  • 排行榜类应用
  • 计数器应用
  • 存储关系
  • 实时分析系统
  • 日志记录

二、Redis命令工具

命令结果
redis-server用于启动Redis的工具
redis-benchmark用于检测Redis在本机的运行效率
redis-check-aof修复AOF持久化文件
redis-check-rdb修复RDB持久化文件
redis-cliRedis命令行工具

1.redis-benchmark 测试工具

redis-benchmark是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能

常用参数含义
-h指定服务器主机名
-p指定服务器端口
-s指定服务器socket (套接字)
-c指定并发连接数
-n指定请求数
-d以字节的形式指定SET/GET8值的数据大小
-k1=keep alive 0=reconnect
-rSET/GET/ INCR使用随机key, SADD使用随机值
-P通过管道传输请求
-q强制退出redis。 仅显示query/sec值
–csv以csv格式输出
-1生成循环,永久执行测试
-t仅运行以逗号分隔的测试命令列表
-IIdle模式。 仅打开N个idle连接并等待

2.redis-cli 远程登录的命令行工具

redis-cli的全程即redis-client,表示以客户端的身份登录

常用参数含义
-h指定远程主机
-p指定Redis服务的端口号
-a指定密码,未设置数据库密码可以省略-a选项

3.redis-check-aof 和 redis-check-rdb

aof和rdb是redis服务中持久化功能的两种形式AOF、RDB

三 、Redis高可用

在web服务器中,可高用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务
但是在redis中,高可用的含义似乎要宽泛一些,除了保证提供正常服务,还需要考虑数据容量的扩展,数据不会丢失等,有以下技术

  • 持久化
    持久化是最简单的高可用方式,主要作用是数据备份,即将数据存储在硬盘,保证数据不会因为进程退出而丢失

  • 主从复制
    主从复制时高可用Redis的基础,哨兵和集群都是在主从复制的基础上实现高可用的,主从复制主要是实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。
    缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制

  • 哨兵
    在主从复制的基础上,哨兵实现了自动化的故障恢复。
    缺陷:写操作无法负载均衡;存储能力受到了单机的限制

  • 集群
    通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案

1.持久化

1.1 RDB持久化

RBD持久化是指在指定的时间间隔内将内存中当前进程中的数据生成快照保存到硬盘(也称为快照持久化),用二进制压缩保存,保存的文件后缀时rdb:当Redis重新启动时,可以读取快照文件恢复数据

1.1.1 触发条件

  • 手动触发
    save命令和bgsave命令都可以生成RDB文件

  • 自动触发
    自动触发RDB持久化时,Redis也会选择bgsave而不是save来进行持久化
    在配置文件中通过save m n,指定当m s内发生n次变化,会触发bgsave
    在主从复制场景下,如果从节点执行全量复制操作,则主节点会执行bgsave,并将rdb文件发送给从节点
    执行shutdown命令时,自动执行rdb持久化

未完待续

以上是关于非关系数据库:Redis的主要内容,如果未能解决你的问题,请参考以下文章

NoSQL之redis配置

Redis非关系型数据库

Redis 非关系型数据库 安装以及相关命令

Redis

Redis

Redis