精华内容
下载资源
问答
  • 1、String(字符串):String 数据结构是简单 key-value 类型,value 其实不仅可以是 String,也可以是数字。 应用场景:常规 key-value 缓存应用;常规计数:微博数,粉丝数等。 2、hash(字典): Hash 是一个 ...

    1、String(字符串):String 数据结构是简单的 key-value 类型,value 其实不仅可以是 String,也可以是数字。

    应用场景:常规 key-value 缓存应用;常规计数:微博数,粉丝数等。

    2、hash(字典): Hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,可以直接仅仅修改这个对象中的某个字段的值。

    应用场景:比如可以 Hash 数据结构来存储用户信息,商品信息等等。比如下面就用 hash 类型存放了本人的一些信息:

    key=JavaUser293847
    value={
      “id”: 1,
      “name”: “SnailClimb”,
      “age”: 22,
      “location”: “Wuhan, Hubei”
    }
    

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

    Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

    一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过 40 亿个元素)。

    应用场景:

    (1)Redis list 的应用场景非常多,也是 Redis 最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用 Redis 的 list 结构来实现。 另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高。

    (2)使用 redis 的 lst 来实现缓存用户最近浏览商品

    4、Set:Set 对外提供的功能与 list 类似是一个列表的功能,特殊之处在于 set 是可以自动排重的。当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口,这个也是 list 所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作。Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O (1)。

    应用场景:

    在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程

    5、Sorted Set:和 set 相比,sorted set 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列。Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数 (score) 却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O (1)。

    应用场景:

    在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息,适合使用 Redis 中的 SortedSet 结构进行存储。

    展开全文
  • string数据结构是简单key-value类型,value其实不仅可以是String,也可以是数字。常规key-value缓存应用;常规计数:微博数,粉丝数,做验证码 可以把手机发送验证码作为string类型字符串存储 进行发送 2 :Hash: ...

    1:String:
    string数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。常规key-value缓存应用;常规计数:微博数,粉丝数,做验证码 可以把手机发送的验证码作为string类型的字符串存储 进行发送
    2 :Hash:
    是一个String 类型Filed和Value的映射表,可以用来储存用户信息,商品信息等
    3.List
    常用命令: lpush,rpush,lpop,rpop,Irange等
    list就是链表,Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用Redis的 list结构来实现。
    Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。
    另外可以通过lrange命令,就是从某个元素开始读取多少个元素,可以基于list实现分页查询,这个很棒的一个功能,基于redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高。
    4:set:
    set 对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的。
    使用云存储,上传图片到七牛云,将图片的名称存储到set集合,然后根据set集合做差值运算,得到垃圾图片。
    5:ZSet
    根据元素的score,可以对元素进行排序,可以去做排行榜

    展开全文
  • 介绍 :string 数据结构是简单 key-value 类型。虽然 Redis 是用 C 语言写,但是 Redis 并没有使用 C 字符串表示,而是自己构建了一种 简单动态字符串(simple dynamic string,SDS)。相比于 C 原生字符串...

    string

    介绍 :string 数据结构是简单的 key-value 类型。虽然 Redis 是用 C 语言写的,但是 Redis 并没有使用 C 的字符串表示,而是自己构建了一种 简单动态字符串(simple dynamic string,SDS)。相比于 C 的原生字符串,Redis 的 SDS 不光可以保存文本数据还可以保存二进制数据,并且获取字符串长度复杂度为 O(1)(C 字符串为 O(N)),除此之外,Redis 的 SDS API 是安全的,不会造成缓冲区溢出。

    常用命令: set,get,strlen,exists,dect,incr,setex 等等。

    应用场景 :一般常用在需要计数的场景,比如用户的访问次数、热点文章的点赞转发数量等等。

    list

    介绍 :list 即是 链表。链表是一种非常常见的数据结构,特点是易于数据元素的插入和删除并且且可以灵活调整链表长度,但是链表的随机访问困难。许多高级编程语言都内置了链表的实现比如 Java 中的 LinkedList,但是 C 语言并没有实现链表,所以 Redis 实现了自己的链表数据结构。Redis 的 list 的实现为一个 双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。

    常用命令: rpush,lpop,lpush,rpop,lrange、llen 等。

    应用场景: 发布与订阅或者说消息队列、慢查询

    hash

    介绍 :hash 类似于 JDK1.8 前的 HashMap,内部实现也差不多(数组 + 链表)。不过,Redis 的 hash 做了更多优化。另外,hash 是一个 string 类型的 field 和 value 的映射表,特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以 hash 数据结构来存储用户信息,商品信息等等。

    常用命令: hset,hmset,hexists,hget,hgetall,hkeys,hvals 等。

    应用场景: 系统中对象数据的存储

    set

    介绍 : set 类似于 Java 中的 HashSet 。Redis 中的 set 类型是一种无序集合,集合中的元素没有先后顺序。当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口,这个也是 list 所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作。比如:你可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程。

    常用命令: sadd,spop,smembers,sismember,scard,sinterstore,sunion 等。

    应用场景: 需要存放的数据不能重复以及需要获取多个数据源交集和并集 等场景.

    sorted set

    介绍: 和 set 相比,sorted set 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列,还可以通过 score 的范围来获取元素的列表。有点像是 Java 中 HashMap 和 TreeSet 的结合体。

    常用命令: zadd,zcard,zscore,zrange,zrevrange,zrem 等。

    应用场景需要对数据根据某个权重进行排序的场景。比如在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息。

    bitmap

    介绍 : bitmap 存储的是连续的二进制数字(0 和 1),通过 bitmap, 只需要一个 bit 位来表示某个元素对应的值或者状态,key 就是对应元素本身 。我们知道 8 个 bit 可以组成一个 byte,所以 bitmap 本身会极大的节省储存空间。

    常用命令: setbit 、getbit 、bitcount、bitop

    应用场景: 适合需要保存状态信息(比如是否签到、是否登录…)并需要进一步对这些信息进行分析的场景。比如用户签到情况、活跃用户情况、用户行为统计(比如是否点赞过某个视频)。

    使用场景一:用户行为分析——很多网站为了分析你的喜好,需要研究你点赞过的内容。

    使用场景二:统计活跃用户——使用时间作为 key,然后用户 ID 为 offset,如果当日活跃过就设置为 1。

    使用场景三:用户在线状态——对于获取或者统计用户在线状态,使用 bitmap 是一个节约空间效率又高的一种方法。只需要一个 key,然后用户 ID 为 offset,如果在线就设置为 1,不在线就设置为 0。

    展开全文
  • String数据结构是简单key-value类型,value其实不仅可以是String,也可以是数字。 常规key-value缓存应用; 常规计数:微博数,粉丝数等。 2.Hash 常用命令:hget,hset,hgetall 等。 hash 是一个 string 类型...

    1.String

    常用命令: set,get,decr,incr,mget 等。

    String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。 常规key-value缓存应用; 常规计数:微博数,粉丝数等。

    2.Hash

    常用命令: hget,hset,hgetall 等。

    hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以 hash 数据结构来存储用户信息,商品信息等等。比如下面我就用 hash 类型存放了我本人的一些信息:

    key=JavaUser293847
    value={
      “id”: 1,
      “name”: “SnailClimb”,
      “age”: 22,
      “location”: “Wuhan, Hubei”
    }
    
    

    3.List

    常用命令: lpush,rpush,lpop,rpop,lrange等

    list 就是链表,Redis list 的应用场景非常多,也是Redis最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用Redis的 list 结构来实现。

    Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。

    另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高。

    4.Set

    常用命令: sadd,spop,smembers,sunion 等

    set 对外提供的功能与list类似是一个列表的功能,特殊之处在于 set 是可以自动排重的。

    当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作。

    比如:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程,具体命令如下:

    sinterstore key1 key2 key3     将交集存在key1内
    

    5.Sorted Set

    常用命令: zadd,zrange,zrem,zcard等

    和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。

    举例: 在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息,适合使用 Redis 中的 Sorted Set 结构进行存储。

    展开全文
  • JVM内存结构规定Java程序在执行时内存申请、划分、使用、回收管理策略,通说来说JVM内存管理指运行时数据区这一大块管理。 锁种类 Mysql中锁分类按照不同类型划分可以分成不同锁,按照**「锁粒度...
  • 文章目录redis 常见数据结构以及使用场景分析keyStringHashListSetSorted SetBitmap和HyperLogLogPub/Sub redis 常见数据结构以及使用场景分析 String Hash List Set Sort Set (ZSet) key 任何二进制序列都可以...
  • String数据结构是简单key-value类型,value其实不仅可以是String,也可以是数字。 常规key-value缓存应用; 常规计数:微博数,粉丝数等。 2.Hash 常用命令: hget,hset,hgetall 等。 Hash 是一个 string 类型 ...
  • 为了保证共享内存正确性(可见性、有序性、原子性),内存模型定义了共享内存系统中多线程程序读写操作行为规范。 一面50min 自我介绍 Java集合 LinkedList与ArrayList fail-fast CAS reentrantlock ...
  • String数据结构是简单的key-value结构,这个value可以是字符串也可以是数字,常见的应用场景比如说微博点赞数,微博粉丝数。 常用命令:set,get 2,Hash Hash特别适合存储对象,比如说用hash来存储一个person对象 ...
  • Java中常见的数据结构,主要分为Collection和Map两种主要接口,程序中的数据结构是继承这些接口的数据结构类。 Collection接口: List 接口继承:ArrayList、 Vector、 LinkedList等实现; Set 接口继承:...
  • String数据结构是简单key-value类型,value其实不仅可以是String,也可以是数字。 常规key-value缓存应用; 常规计数:微博数,粉丝数等。 2.Hash 常用命令: hget,hset,hgetall 等。 hash 是一个 string 类型 ...
  • 年前辞职,人算不如天算,突如其来疫情完全把自己计划给打碎了,面试难度简直不亚于一场江苏高考题,后悔、焦虑不安、失眠成了我生活状态。 从三月底开始投递简历,甭管是什么公司,只要薪资待遇跟之前差不多...
  • 说在前面 已经到了月中旬了,程序员们即将迎来面试季,今天刚好有一位粉丝找到我,他上周刚面完奇虎360,经过了几轮面试,最后薪资也谈了,今天主要是问我想这样大型互联网公司一般多久会...一、业务场景介绍 先
  • 前言 “金九银十”秋招热潮已经开始了,经过7月8月这两个月提前批,终于成功...1.3 MYSQL 使用的 SQL 语言 1.4 MYSQL 数据处理 第二章 MySQL安装 2.1 MYSQL 系统安装布局 2.2 安装 MYSQL 系统分发 2.3 安
  • 索引的常见模型 InnoDB 索引模型 索引维护 小结 深入浅出索引(下) 覆盖索引 最左前缀原则 索引下推 为什么这些SQL语句逻辑相同,性能却差异巨大? 案例一:条件字段函数操作 案例二:隐式类型转换 案例...
  • redis简单来说 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持...
  • 在高并发下,Java程序GC问题属于很典型一类问题,带来影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。 我们...
  • 大数据、算法项目在任何大厂无论是面试还是工作运用都是非常广泛,我们精选了50个百度、腾讯、阿里等大厂大数据、算法落地经验甩给大家,千万不要做收藏党哦,空闲时间记得随时看看! 如果你没有大厂项目经验,...
  • 已经到了月中旬了,程序员们即将迎来面试季,今天刚好有一位粉丝找到我,他上周刚面完奇虎360,经过了几轮面试,最后薪资也谈了,今天主要是问我想这样大型互联网公司一般多久会正式下offer。 一般是3~5天HR会...
  • redis简单来说 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持...
  • Redis数据结构详解以及常见的使用方法与场景 Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String、List、Hash、Set和Sorted ...
  • redis简单来说 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持...
  • redis简单来说 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持...
  • redis简单来说 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。...面试官:redis 常见数据结构
  • UDP特点: 1、面向无连接; 2、包的传输过程中,存在丢包、...常见的基于UDP的应用协议:QUIC,Thread(物联网应用场景),GTP-U(移动通信领域) TCP特点: 1、面向连接,客户端和服务端需要存储一些数据结构(如
  • MySQL存储引擎MySQL存储引擎1、什么是存储引擎?2、存储引擎分类2.1、InnoDB...数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同存储引擎提供不同
  • 开发中sqlite几种常见的使用场景

    千次阅读 2017-06-26 11:19:23
    场景一:需要备份整个数据库结构以及数据; 步骤: 1、使用sqlite3命令进入sqlite终端:sqlite3 test.db 2、.output test.sql 3、.dump 4、退出sqlite终端,ls,即可发现目录下多出了一个test.sql文件,这个文件即为...
  • 八大排序,三大查找是《数据结构》当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法。 常见的八大排序算法,他们之间关系如下:     排序算法.png   他们的性能比较:     ...
  • 使用测试驱动JavaScript实现的数据结构和算法。 由于时间一直困扰着我们作为软件工程师,所以也许提前编写所有单元测试以涵盖特定功能的所有可能的极端情况是非常不切实际的。 希望,随着时间的推移,测试驱动开发...
  • 2、 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 3、 NOSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景 4、 NOSQL中的产品种类...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 427
精华内容 170
关键字:

常见的数据结构以及使用场景

数据结构 订阅