Redis知识点(二)

Redis知识点(二)五种数据类型 首先 Redis 内部使用一个 redisObject 对象来表示所有的 key 和 value。 redisObject 最主要的信息如上图所示:type 表示一个 value 对象…

Redis知识点(二)

首先 Redis 内部使用一个 redisObject 对象来表示所有的 key 和 value。

redisObject 最主要的信息如上图所示:type 表示一个 value 对象具体是何种数据类型,encoding 是不同数据类型在 Redis 内部的存储方式。

比如:type=string 表示 value 存储的是一个普通字符串,那么 encoding 可以是 raw 或者 int。

①String 是 Redis 最基本的类型,可以理解成与 Memcached一模一样的类型,一个 Key 对应一个 Value。Value 不仅是 String,也可以是数字。

String 类型是二进制安全的,意思是 Redis 的 String 类型可以包含任何数据,比如 jpg 图片或者序列化的对象。String 类型的值最大能存储 512M。

②Hash是一个键值(key-value)的集合。Redis 的 Hash 是一个 String 的 Key 和 Value 的映射表,Hash 特别适合存储对象。常用命令:hget,hset,hgetall 等。

③List 列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边) 常用命令:lpush、rpush、lpop、rpop、lrange(获取列表片段)等。

应用场景:List 应用场景非常多,也是 Redis 最重要的数据结构之一,比如 Twitter 的关注列表,粉丝列表都可以用 List 结构来实现。

数据结构:List 就是链表,可以用来当消息队列用。Redis 提供了 List 的 Push 和 Pop 操作,还提供了操作某一段的 API,可以直接查询或者删除某一段的元素。

实现方式:Redis List 的是实现是一个双向链表,既可以支持反向查找和遍历,更方便操作,不过带来了额外的内存开销。

④Set 是 String 类型的无序集合。集合是通过 hashtable 实现的。Set 中的元素是没有顺序的,而且是没有重复的。常用命令:sdd、spop、smembers、sunion 等。

应用场景:Redis Set 对外提供的功能和 List 一样是一个列表,特殊之处在于 Set 是自动去重的,而且 Set 提供了判断某个成员是否在一个 Set 集合中。

⑤Zset 和 Set 一样是 String 类型元素的集合,且不允许重复的元素。常用命令:zadd、zrange、zrem、zcard 等。

使用场景:Sorted Set 可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。

当你需要一个有序的并且不重复的集合列表,那么可以选择 Sorted Set 结构。

和 Set 相比,Sorted Set关联了一个 Double 类型权重的参数 Score,使得集合中的元素能够按照 Score 进行有序排列,Redis 正是通过分数来为集合中的成员进行从小到大的排序。

实现方式:Redis Sorted Set 的内部使用 HashMap 和跳跃表(skipList)来保证数据的存储和有序,HashMap 里放的是成员到 Score 的映射。

而跳跃表里存放的是所有的成员,排序依据是 HashMap 里存的 Score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9198.html

(0)
上一篇 2023-02-13
下一篇 2023-02-13

相关推荐

  • Centos7中MySQL数据库使用mysqldump进行每日自动备份「建议收藏」

    Centos7中MySQL数据库使用mysqldump进行每日自动备份「建议收藏」数据库的备份,对于生产环境来说尤为重要,数据库的备份分为物理备份和逻辑备份。我们将使用mysqldump命令进行数据备份。使用自动任务进行每日备份。

    2023-04-19
    146
  • ClickHouse高级[亲测有效]

    ClickHouse高级[亲测有效]ClickHouse高级 1. 执行计划 在 ClickHouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 TRACE 才可以看到,并且只能真正执行 SQL,在执行日志里面

    2023-05-19
    128
  • 关于MySQL死锁检测机制参数innodb_deadlock_detect设置的一点思考

    关于MySQL死锁检测机制参数innodb_deadlock_detect设置的一点思考微信公众号中(这里)看到一个关于MySQL的innodb_deadlock_detect与并发相关的细节,觉得比较有意思,也即innodb_deadlock_detect这个参数的设置问题 死锁检测是

    2023-02-18
    151
  • 你的下一台电脑,可能没有主机吗_新电脑找不到我的电脑

    你的下一台电脑,可能没有主机吗_新电脑找不到我的电脑如今这个年代,由于电脑的飞速发展,电脑陪着也在跟着迅速的变化,如果不能及时的更新电脑相关的配着以及相关的软件系统,很多需要高配置的软件游戏根本无法运行,但是更换电脑的配置甚至说更换一台高配置的电脑所需

    2023-05-11
    139
  • 安全和成本哪个更重要?_选择成本和机会成本

    安全和成本哪个更重要?_选择成本和机会成本数据库安全,是指以保护数据库系统、数据库服务器和数据库中的数据、应用、存储,以及相关网络连接为目的,防止数据库系统及其数据遭到泄露、篡改或破坏的安全技术。 数据库是企业最为核心的数据保护对象。与传统的

    2023-05-20
    155
  • MySQL总结(十二)数据库事务-详解

    MySQL总结(十二)数据库事务-详解数据库事务 1. 事务的应用场景说明 什么是事务? 在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的。转账是一个用户扣钱,另一个用户加钱。如果其中有一条 SQL 语句出现异…

    2023-03-11
    144
  • 强大的Python字符串处理方法

    强大的Python字符串处理方法在Python中,字符串是不可变对象。这意味着一旦Python字符串被创建,就不能直接修改它。然而,有很多内置的字符串处理方法可以让我们轻松地执行许多操作。这篇文章将提供许多Python字符串处理方法,让你更好地利用字符串。

    2024-03-26
    74
  • 使用NumPy实现高效的数值计算与处理

    使用NumPy实现高效的数值计算与处理NumPy是Python中一个重要的科学计算库,它使得Python多了一些向量和矩阵的计算方法,同时也提供了一些处理大数据的函数。NumPy在Python中被广泛使用,因为它的运算速度非常快,这也是NumPy的主要优势之一。

    2024-02-19
    95

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注