美文网首页
小白入门-Redis学习第一篇

小白入门-Redis学习第一篇

作者: Nothandsome | 来源:发表于2019-07-14 11:46 被阅读0次

    Redis 简介

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
    Redis 与其他 key - value 缓存产品有以下三个特点:
    Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    Redis支持数据的备份,即master-slave模式的数据备份。

    Redis 优势

    性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
    丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
    原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
    丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

    Redis与其他key-value存储有什么不同?

    Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

    Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

    Redis的数据类型

    我觉得学习redis之前有必要详细说一下redis的数据类型

    字符串(String)

    string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
    string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
    string类型是Redis最基本的数据类型,一个键最大能存储512MB。

    image.png

    在以上实例中我们使用了 SET 和 GET 命令,键为 runoobkey。

    哈希(Hash)
    Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
    Hmset 设值
    Hgetall 取值
    Redis 中每个 hash 可以存储2^{32}-1键值对(40多亿)。

    image.png

    在以上实例中,我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 runoobkey 中。

    列表(List)

    Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。 一个列表最多可以包含2^{32}-1个元素 (4294967295, 每个列表超过40亿个元素)。
    Lpush 插入
    Lrange 查看

    image.png

    在以上实例中我们使用了 LPUSH 将三个值插入了名为 runoobkey 的列表当中。

    集合(Set)

    Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
    Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
    sadd 命令
    添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
    smembers 查看

    image.png

    以上实例中我们通过 SADD 命令向名为 runoobkey 的集合插入的三个元素。

    有序集合(sorted set/Zset)

    Redis的Zset(sorted set)是string类型的有序集合。
    Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
    不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
    zset的成员是唯一的,但分数(score)却可以重复。
    zadd 命令
    添加元素到集合,元素在集合中存在则更新对应score
    zrangebyscore 查看

    image.png

    以上实例中我们通过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。

    HyperLogLog

    Redis 在 2.8.9 版本添加了 HyperLogLog 结构。
    Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
    在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
    但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。
    比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

    image.png

    redis详细教程连接https://www.runoob.com/redis/redis-tutorial.html

    相关文章

      网友评论

          本文标题:小白入门-Redis学习第一篇

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