美文网首页
初识 Redis

初识 Redis

作者: Robin92 | 来源:发表于2019-08-05 22:01 被阅读0次

    初识 Redis

    • Redis 全称 REmote Dictionary Server.
    • Redis 是一种基于键值对的 NoSQL 数据库. 它支持的类型有 string, hash, list, set, zset (有序集合), bitmaps (位图), hyperLogLog, GEO (地理信息定位).
    • Redis 将所有数据都放在内存中, 所以它的读写性能非常惊人.
    • Redis 可以将内存的数据利用快照和日志的形式保存在硬盘上, 在发生类似断电或机器故障时, 数据不会丢失.
    • 此外, Redis 还提供了 键过期, 发布订阅, 事务, 流水线, Lua 脚本 等附加功能.

    特性

    • 速度快
      • 存放于内存 (为主要原因)
      • C 语言实现: C 语言是"距离"操作系统更近的一种语言, 所以执行速度更快.
      • 单线程架构: 预防了多线程可能产生的 竞争 问题.
    • 丰富的功能
      • 键过期: 用于实现缓存
      • 发布订阅: 用于实现消息系统
      • 支持 Lua 脚本: 可利用脚本创建出新的命令
      • 事务功能: 保证事务特性
      • 流水线 (Pipeline) 功能: 一次性执行一批命令, 减少网络开销
    • 简单稳定
      • 简单
        • 源码量少, 最初仅 2 万行左右, 3.0 版本后 5 万行左右.
        • 单线程模型, 处理简单, 开发简单
        • 不信赖操作系统类库
      • 稳定: 从来没出现过因自身 bug 而宕掉
    • 持久化
      • RDB
      • AOF
    • 主从复制
    • 高可用和分布式
      • 节点故障发现与故障自动转移 (>= 2.8)
      • 提供了高可用, 读写和容量的扩展性 (>= 3.0)

    单线程架构

    Redis 使用了 单线程架构 和 I/O 多路复用模型 来实现高性能的内存数据库服务的.

    • 单线程: 一条命令从客户端到达服务端不会立刻执行, 而是先进入一个队列, 然后逐个被执行.

    Redis 为什么这么快 ?

    • 纯内存访问
    • 非阻塞 I/O, Redis 使用 epoll 的 I/O 多路复用技术, 并用 自身事件处理模型将 epoll 的连接, 读写, 关闭都转化为事件, 避免了在 I/O 上浪费时间
    • 单线程避免了线程间的切换和竞态产生的消耗

    使用场景

    • 缓存: 速度快, 可设置过期时间
    • 排行榜系统: 列表和有序集合
    • 计数器应用: 保证实时性. 如: 视频播放次数, 电商网站浏览数
    • 社交网络
    • 消息队列系统: 发布订阅功能 和 阻塞队列的功能.

    不推荐的场景

    • 不适合存放 "冷数据", 占用内存而又不频繁使用

    启动与关闭

    Redis 安装后, src 和 /usr/local/bin 目录下多了几个 redis 开头的可执行文件, 我们称之为 Redis Shell.
    Redis 借鉴了 Linux 操作系统对于版本号的命名规则: 版本号第二位为奇数则为非稳定版本 (如 2.7, 2.9), 偶数为稳定版本 (如 2.6, 2.8)

    • redis-server: 启动 redis 服务
    • redis-cli: redis 命令行客户端
    • redis-benchmark: 基准测试工具
    • redis-check-aof: AOF 持久化文件检测和修复工具
    • redis-check-dump: RDB 持久化文件检测和修复工具
    • redis-sentinel: 启动 Redis Sentinel

    启动

    • 运行启动
    • 配置文件启动

    运行启动可以用命令 (无参数时使用默认配置, 默认端口 6379)

    redis-server --configKey configValue --configKey2 configValue2
    

    redis-server --port 6380

    配置文件启动, 可以将配置信息写到文件中然后启动时传入此文件, 如

    redis-server /path/to/redis.conf
    

    一般, redis 目录下都会有一个 redis.conf 文件, 里面就是 redis 的默认配置文件, 一般可以将此文件作为模板进行修改

    交互 (redis-cli)

    • 交互式: redis-cli -h 127.0.0.1 -p 6379
    • 命令式: redis-cli -h 127.0.0.1 -p 6379 get hello

    redis-cli 是 redis 的命令行客户端, 可以通过 redis-cli [-h host] [-p port] 方式连接到 redis 服务进行交互 (默认 host 127.0.0.1, 默认 port 6379).
    也可以使用 redis-cli 只执行一个命令即退出: redis-cli [-h host] [-p port] command args

    停止

    • shutdown 命令: 如 redis-cli [-h host] [-p port] shutdown [nosave/save]
    • 其他方式如 kill -9 强制杀死进程

    用 shutdown 命令是一种优雅的方式结束服务, 它可以在关闭服务前生成持久化文件.

    相关文章

      网友评论

          本文标题:初识 Redis

          本文链接:https://www.haomeiwen.com/subject/zjbvdctx.html