redis-学习笔记(string , hash , list , set , zset 前置知识)

简介: redis-学习笔记(string , hash , list , set , zset 前置知识)

Redis 中数据库的选择

共有16个数据库 [0 - 15号], 彼此之间相互隔离, 互不影响

默认使用 0 号


select dbindex

选择数据库


flushdb [async | sync]

清空数据库

async 异步方式

sync 同步方式


Redis 中简单数据类型在 C++ 和 Java 中的类似实现


当你使用上述的某一数据结构, redis 会给你声明, 我给你一个符合该复杂度的数据结构, 但是底层如何实现, 用什么实现, 是不是我声明的这个数据结构, 你别管, 这个具体的数据实现方式, 就是内部编码 (傲娇脸)


Redis 中简单数据结构的内部编码

string

  • raw 最基本的字符串 (底层是持有一个 char 数组 [C++], 或者 byte 数组 [Java]) (C++) — (C++ 中里的 char 是1个字节, 等价于 Java 中的 char , 而 Java 中的 char 是2个字节的)
  • int 通常用来实现 “计数” 等功能
  • embstr 针对短字符串进行的特殊优化

hash

  • hashtable 是最基本的哈希表, redis 内部的哈希表的实现, 整体思想和 Java 标准库中的 HashTable 相似, 但是实现方式不太一样
  • ziplist 在哈希表里面元素较少时, 会优化成 ziplist (压缩列表, 能够节省时间 [长度就两三个元素的哈希表, 单开一个哈希是不是有点浪费, 直接用列表有没有可能更快? 毕竟哈希的查找方法和链表的查找方法不太一样] )

list

  • linkedlist 链表, 其实现类似于 C++ 中的 deque(双端队列)
  • ziplist 压缩列表 从 redis3.2 开始, quicklist 代替了 linkendlist 和 ziplist , 同时兼顾二者的优点, quickedlist 是一个链表, 每个元素又是一个 ziplist, 折衷考虑到 空间和效率

set

  • hashtable
  • intset该集合中存取的都是整数类型

zset

  • skiplist 跳表, 也是链表, 不同于普通的链表, 每个节点上有多个指针域, 巧妙 搭配这些指针域的指向,可以实现跳跃查找 O(logN)
  • ziplist 压缩列表

目录
相关文章
|
5月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
NoSQL 关系型数据库 MySQL
Redis 列表(List)
10月更文挑战第16天
198 2
|
存储 NoSQL Redis
Redis 哈希(Hash)
10月更文挑战第16天
212 1
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
215 2
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
175 3
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1428 1
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
499 1
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
299 3