zoukankan      html  css  js  c++  java
  • Redis:基础

    简介

    Redis 是一种运行在内存中数据结构存储,可用作 数据库 缓存 消息中间件。Redis 是键值型数据库。

    特点

    • 支持数据的持久化,可将内存中的数据保存在磁盘中,重启后可再次加载使用;
    • 是基于内存的,因此读写性能极高,其读写速度约是关系型数据库的几倍至几十倍。其读的速度是十一万次每秒,写的速度是八万次每秒;
    • 丰富的数据类型;
    • 所有的操作都是原子性的,且支持流水线(pipline)技术;
    • 丰富的特性,支持 publish / subscribe 通知 key 过期等特性。

    数据类型

    1. String:字符串,二进制安全,可以接受任何格式的数据,例如 jpeg 图像数据或者 json 对象描述信息等。数据长度是 512M;
    2. List:按照插入顺序排序的字符串链表,类似 Java 中的 LinkedList;
    3. Set:无序的字符串集合,类型 Java 中的 HashSet;
    4. Sorted Set:字符串集合,和 Redis Sets 类似,区别是 Sorted Sets 中的每一个成员都有一个分数 (score)与之关联,通过分数的大小对成员进行排序,虽然 Sorted Sets 成员必须是唯一的,但是分数可以重复;
    5. Hash:类似 Java 中的 HashMap,键值都是字符串;
    6. Bit array (or simply bitmaps):位图,官方解释是 it is possible, using special commands, to handle String values like an array of bits: you can set and clear individual bits, count all the bits set to 1, find the first set or unset bit, and so forth.
    7. HyperLogLog:是一个概率数据结构,用于估计集合的基数,官方解释是 this is a probabilistic data structure which is used in order to estimate the cardinality of a set.
    8. Stream:流,官方解释是 append-only collections of map-like entries that provide an abstract log data type.

    前五种比较常用,后面两种主要用于海量数据计算,最后一种用于消息队列。

    数据持久化

    • RDB 持久化:在指定的时间间隔内将内存中的数据集快照写入磁盘;
    • AOF 持久化:以日志的形式记录服务器所处理的每一个写操作(append only file),Redis 服务器启动之初会以读取该日志文件构建数据库;

    Redis 可以采用上面任意一种,也可以同时采用两种,也可以禁用持久化机制。

    RDB 优点

    • 数据的备份和恢复非常方便,因为一个数据库只有一个持久化文件;
    • 性能最大化。对于 Redis 的服务进程而言,在开始持久化时,它唯一需要做的只是 fork 出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行 IO 操作了;
    • 相比于 AOF 机制,如果数据集很大,RDB 的启动效率会更高。

    RDB 缺点

    • 系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失;
    • 由于 RDB 是通过 fork 子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟。

    AOF 优点

    • 该机制可以带来更高的数据安全性,即数据持久性。Redis 中提供了3种同步策略,即每秒同步、每修改同步和不同步;
    • 对日志文件的写入操作采用的是 append 模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容;
    • 如果日志过大,Redis 可以自动启用 rewrite 机制迅速瘦身(也可手动触发aof的rewrite操作,命令:bgrewriteaof)
    • AOF日志格式清晰、易于理解,很容易用 AOF 日志文件完成数据的重建

    AOF 缺点

    • 对于相同数量的数据集而言,AOF 文件通常要大于 RDB 文件;
    • 根据同步策略的不同,AOF 在运行效率上往往会慢于 RDB。总之,每秒同步策略的效率是比较高的,同步禁用策略的效率和 RDB 一样高效。

    参考:

    Redis 官网文档 https://redis.io/topics/introduction

  • 相关阅读:
    投票练习
    多条件查询
    PHP 购物车
    PHP TP模型
    PHP smarty函数
    PHP smarty复习
    PHP smarty缓存
    PHP phpcms
    php smarty查询分页
    PHP Smarty变量调节器
  • 原文地址:https://www.cnblogs.com/colin220/p/14696662.html
Copyright © 2011-2022 走看看