美文网首页
初识 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使用介绍

    目录: 1 Redis初识 1.1 Redis介绍 1.2 Redis功能特性介绍 1.3 Redis...

  • Redis从入门到应用

    初识Redis Redis概念 Redis安装 Redis的五种数据类型 操作Redis PHP的Redsi扩展 ...

  • 初识 Redis

    初识 Redis Redis 全称 REmote Dictionary Server. Redis 是一种基于键值...

  • Redis 初识

    初识 Redis 《 Redis 开发与运维》的学习笔记,希望大家多多指导。 什么是 Redis Redis 的全...

  • redis学习历程

    Redis初识 Redis安装与启动 Redis 常用API 理解与使用 Redis java客户端使用(单机版,...

  • 初识redis

    redis简介 redis是一种基于键值对key、value的NoSQL内存数据库,同时它会把内存的数据利用快照和...

  • 初识Redis

    Redis的安装和启动 这部分在之前的博客已经写过,这里不再赘述,提供两个以前的博客传送门。Redis的安装Red...

  • redis初识

    redis典型应用场景 1. 缓存系统 2. 计数器 3. 消息队列系统 4.排行榜 5.社交网络 6.实时系统 ...

  • Redis初识

    https://coding.imooc.com/learn/list/151.html Redis是什么 1.开...

  • Redis初识

    Redis的作者是Salvatore Sanfilippo(antirez)。该作者在制作一个网站中,发现他一开始...

网友评论

      本文标题:初识 Redis

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