• Redis简介


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

      高性能键值缓存服务器memcached经常被拿来和Redis进行比较:两者都用于存储键值映射,性能也差不多。但Redis可以以两种不同的方式将数据写入硬盘,并且Redis还支持其他四种结构,而memcached之恩给你存储普通的字符串键。

      Redis有两种不同形式的持久化方法,他们都可以用小而紧凑的格式将存储在内存中的数据写入磁盘:第一种持久化方法为时间点转储(point-in-time dump),转储操作既可以在“指定时间段内有指定数量的写操作执行”,也可以通过调用两条转储到硬盘(dump-to-disk)命令中的任何一条来执行;第二种持久化方法将所有修改了数据库的命令都写入一个之追加(append-only)文件里面,用户可以根据数据的重要程度,将只追加写入设置设为从不同步(sync),每秒同步一次或没写入一个命令就同步一次。

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

      memcached用APPEDND命令将数据添加到已有字符串的末尾,并将那个字符串当做列表来使用。memcached通过黑名单(blacklist)来隐藏列表里的元素,从而避免对元素执行读取,更新,写入等操作。

      数据库的一个常见用法是存储长期的报告数据,并将这些报告数据用作固定时间范围内的聚合数据(aggregates)。收集聚合数据的常见做法是:先将各个行插入一个报表里面,之后再通过扫描这些行来收集聚合数据,并根据收集到的聚合数据来更新聚合表中已有的那些行。这对于大部分数据库来说,插入行操作的执行速度非常快,更新趋势一个相当慢的速度,更新会引起一次随机读写。在Redis里面,用户可以直接使用原子的INCR命令及其变种来计算聚合数据,并且因为Redis将数据存储在内存里,发送给Redis的命令请求并不需要经过典型的查询分析器(parser)或查询优化器(optimizer)进行处理。

      Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别STRING(字符串),LIST(列表),SET(集合),HASH(散列)和ZSET(有序集合)。

        STRING:可以使字符串。整数或者浮点数。对整个字符串或字符串的其中一部分执行操作;对整数和浮点数执行自增(increment)或自减(decrement)操作

        LIST:一个链表,链表上的每个节点都包含了一个字符串。从链表的两端推入或弹出元素;根据偏移量对链表进行修建(trim);读取单个或多个元素;根据值查找或溢出元素

        SET:包含字符串的无序收集器(unordered collection),并且被包含的每个字符串都是独一无二,各不相同的。添加,获取,移除单个元素;检查一个元素是否存在于集合中;计算交集,并集差集;从集合里面随机获取元素

        HASH:包含键值对的无需散列表.。添加,获取,移除单个键值对;获取所有键值对

        ZSET:字符串成员与浮点数分值之间的有序映射,元素的排列顺序由分值的大小决定

        

      LIST

        一个列表结构可有有序地存储多个字符串。Redis列表可执行的操作有LPUSH命令和RPUSH命令,分别对应于将元素推入到列表的左端和右端;LPOP和RPOP命令分别用于从列表的左端和右端弹出元素;LINDEX命令用于获取列表在给定位置上的一个元素;LRANGE命令用于获取列表在给定范围上的所有夙愿。LRANGE用于获取列表在给定范围上的所有值。

      SET

        Redis的集合和列表可以存储多个字符串,列表可以存储多个相同的字符串,集合则通过使用散列表来保证自己存储的每个字符串都是不一样的。可以通过SADD命令将元素添加到集合;SREM命令从集合里面移除元素;SISMEMBER命令快速检查一个元素是否已经存在于集合中;SMEMBERS获取集合包含的所有元素。

      HASH

        Redis的散列可以存储多个键值对之间的映射。散列存储的值既可以是字符串又可以是数字值,并且用户同样可以对散列存储的数字执行自增或自减操作。HSET在散列里面关联器给定的键值对;HGET获取指定散列键的值;HGETALL获取散列包含的所有键值对;HDEL若给定键存在于散列里面。则移除这个key。

      ZSET

        Redis有序集合的键被称为成员(member),每个成员都是各不相同的;而有序集合的值则成为分值(score),分值必须为浮点数。有序集合是Redis里面唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排列顺序来访问元素的数据结构。ZADD将一个带有给定分值的成员添加到有序集合里面;ZRANGE根据元素在有序排列中所处的位置,从有序集合里面获取多个元素;ZRANGEBYSCORE获取有序集合在给定分值范围内的所有元素;ZREM若给定成员存在于有序集合,那么移除这个成员

      

  • 相关阅读:
    numpy操作
    python将整数均分成N等分
    Windows7下安装pyspark
    python的append insert extend pop del remove使用
    马尔科夫链
    dataframe行变换为列
    scala获取某个时间间隔的时间
    Python3+Flask+uwsgi部署
    A*寻路算法
    C++易混淆知识点整理
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/7252036.html
Copyright © 2020-2023  润新知