《Redis 实战》第1章:初识 Redis

目录

Redis简介

Redis 是一个速度非常快的非关系型数据库(non-relational database),它可以存储键(key)与5中不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。

Redis与其他数据库和软件的对比

附加特性

  1. 持久化

    • 时间点转储(point-in-time-dump)

    转储操作既可以在“指定时间段内有指定数量的写操作执行”这一条件满足时执行,又可以通过调用两条转储到硬盘(dump-to-disk)命令中的任何一条来执行

    • 通过文件同步数据

    将所有修改了数据库的命令都写入一个只追加(append-only)文件里面,用户可以根据数据的重要程度,将只追加写入设置为从不同步(sync)、每秒同步一次或者每写入一个命令就同步一次

  2. 主从复制

执行复制的从服务器会连接上主服务器,接收主服务器发送的整个数据库的初始副本;之后主服务器执行的写命令,都会被发送给所有连接着的从服务器去执行,从而实时地更新从服务器的数据集。因为从服务器包含的数据会不断地进行更新,所以客户端可以向任意一个从服务器发送读请求,以此来避免对主服务器进行集中式的访问。

使用 Redis 的理由

  1. 相较于 memcached, Redis 的 LIST 和 SET 允许用户直接添加或者删除元素
  2. 相较于 memcached,代码更简短、更易懂、更易维护,而且运行速度更快
  3. 效率和易用性
  4. Redis 存储的数据执行随机写的速度总是非常迅速
  5. 可以避免写入不必要的临时数据,也免去了对临时数据进行扫描或者删除的麻烦,并最终改善程序的性能

Redis 数据结构简介

结构类型 结构存储的值 结构的读写能力
String 可以是字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作;对整数和浮点数执行自增(increment)或者自减(decrement)操作
LIST 一个链表,链表上的每个节点都包含了一个字符串 从链表的两端推入或者弹出元素;根据偏移量对链表进行修剪(trim);读取单个或者多个元素;根据值查找或者移除元素
SET 包含字符串的无序收集器(unordered collection),并且被包含的每个字符串都是独一无二、各不相同的 添加、获取、移除单个元素;检查一个元素是否存在于集合中;计算交集、并集、差集;从集合里面随机获取元素
HASH 包含键值对的无序散列表 添加、获取、移除单个键值对;获取所有键值对
ZSET(有序集合) 字符串成员(member)与浮点数分值(score)之间的有序映射,元素的排列顺序由分值的大小决定 添加、获取、删除单个元素;根据分值范围(range)或者成员来获取元素

字符串

  • GET : 获取存储在给定键中的值
  • SET : 设置存储在给定键中的值
  • DEL : 删除存储在给定键中的值(这个命令可以用于所有类型)

列表

允许重复的元素

  • LPUSH : 将元素推入列表的左端
  • RPUSH : 将元素推入列表的右端
  • LPOP : 从列表的左端弹出元素,并返回弹出的值
  • RPOP : 从列表的右端弹出元素,并返回弹出的值
  • LINDEX : 获取列表在给定位置上的一个元素
  • LRANGE : 获取列表在给定范围上的所有元素

集合

不允许重复的元素

  • SADD : 将元素添加到集合
  • SREM : 从集合里面移除元素
  • SISMEMBER : 检查一个元素是否已经存在于集合中
  • SMEMBERS : 获取集合包含的所有元素

散列

可以存储多个键值对之间的映射

  • HSET : 在散列里面关联起给定的键值对
  • HGET : 获取指定散列键的值
  • HGETALL : 获取散列包含的所有键值对
  • HDEL : 如果给定键存在于散列里面,那么移除这个键

有序集合

  • ZADD : 将一个带有给定分值的成员添加到有序集合里面
  • ZRANGE : 根据元素在有序排列中所处的位置,从有序集合里面获取多个元素
  • ZRANGEBYSCORE : 获取有序集合在给定分值范围内的所有元素
  • ZREM : 如果给定成员存在于有序集合,那么移除这个成员

参考资料

posted @ 2020-09-17 18:12  尹文兵  阅读(113)  评论(0)    收藏  举报