广告
返回顶部
首页 > 资讯 > 数据库 >Redis中5种数据结构的使用场景
  • 800
分享到

Redis中5种数据结构的使用场景

2024-04-02 19:04:59 800人浏览 八月长安
摘要

这篇文章给大家分享的是有关Redis中5种数据结构的使用场景的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。一、redis 数据结构使用场景原来看过 redisbook 这本书,对

这篇文章给大家分享的是有关Redis中5种数据结构的使用场景的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

一、redis 数据结构使用场景

原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码。目前目标是吃透 redis 的数据结构。我们都知道,在 redis 中一共有5种数据结构,那每种数据结构的使用场景都是什么呢?

String——字符串
Hash——字典
List——列表
Set——集合
Sorted Set——有序集合

下面我们就来简单说明一下它们各自的使用场景:

1.String——字符串

String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshdr 当做字符串)。使用 Strings 类型,可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受 Redis 的定时持久化(可以选择 RDB 模式或者 AOF 模式),操作日志及 Replication 等功能。除了提供与 Memcached 一样的 get、set、incr、decr 等操作外,Redis 还提供了下面一些操作:

1.LEN niushuai:O(1)获取字符串长度
2.APPEND niushuai redis:往字符串 append 内容,而且采用智能分配内存(每次2倍)
3.设置和获取字符串的某一段内容
4.设置及获取字符串的某一位(bit)
5.批量设置一系列字符串的内容
6.原子计数器
7.GETSET 命令的妙用,请于清空旧值的同时设置一个新值,配合原子计数器使用

1.Hash——字典
在 Memcached 中,我们经常将一些结构化的信息打包成 HashMap,在客户端序列化后存储为一个字符串的值(一般是 JSON 格式),比如用户的昵称、年龄、性别、积分等。这时候在需要修改其中某一项时,通常需要将字符串(jsON)取出来,然后进行反序列化,修改某一项的值,再序列化成字符串(JSON)存储回去。简单修改一个属性就干这么多事情,消耗必定是很大的,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而 Redis 的 Hash 结构可以使你像在数据库中 Update 一个属性一样只修改某一项属性值。

       

存储、读取、修改用户属性

1.List——列表
List 说白了就是链表(redis 使用双端链表实现的 List),相信学过数据结构知识的人都应该能理解其结构。使用 List 结构,我们可以轻松地实现最新消息排行等功能(比如新浪微博的 TimeLine )。List 的另一个应用就是消息队列,可以利用 List 的 *PUSH 操作,将任务存在 List 中,然后工作线程再用 POP 操作将任务取出进行执行。Redis 还提供了操作 List 中某一段元素的 api,你可以直接查询,删除 List 中某一段的元素

       

1.微博 TimeLine
2.消息队列

1.Set——集合
Set 就是一个集合,集合的概念就是一堆不重复值的组合。利用 Redis 提供的 Set 数据结构,可以存储一些集合性的数据。比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。因为 Redis 非常人性化的为集合提供了求交集、并集、差集等操作,那么就可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。

       

1.共同好友、二度好友
2.利用唯一性,可以统计访问网站的所有独立 IP
3.好友推荐的时候,根据 tag 求交集,大于某个 threshold 就可以推荐

1.Sorted Set——有序集合

和Sets相比,Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列,比如一个存储全班同学成绩的 Sorted Sets,其集合 value 可以是同学的学号,而 score 就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。另外还可以用 Sorted Sets 来做带权重的队列,比如普通消息的 score 为1,重要消息的 score 为2,然后工作线程可以选择按 score 的倒序来获取工作任务。让重要的任务优先执行。

1.带有权重的元素,比如一个游戏的用户得分排行榜
2.比较复杂的数据结构,一般用到的场景不算太多

二、redis 其他功能使用场景

1.订阅-发布系统

Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在 Redis 中,你可以设定对某一个 key 值进行消息发布及消息订阅,当一个 key 值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统,比如普通的即时聊天,群聊等功能。

1.事务——Transactions

谁说 NoSQL 都不支持事务,虽然 Redis 的 Transactions 提供的并不是严格的 ACID 的事务(比如一串用 EXEC 提交执行的命令,在执行中服务器宕机,那么会有一部分命令执行了,剩下的没执行),但是这个 Transactions 还是提供了基本的命令打包执行的功能(在服务器不出问题的情况下,可以保证一连串的命令是顺序在一起执行的,中间有会有其它客户端命令插进来执行)。Redis 还提供了一个 Watch 功能,你可以对一个 key 进行 Watch,然后再执行 Transactions,在这过程中,如果这个 Watched 的值进行了修改,那么这个 Transactions 会发现并拒绝执行。

感谢各位的阅读!关于Redis中5种数据结构的使用场景就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: Redis中5种数据结构的使用场景

本文链接: https://www.lsjlt.com/news/50453.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis中5种数据结构的使用场景
    这篇文章给大家分享的是有关Redis中5种数据结构的使用场景的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。一、redis 数据结构使用场景原来看过 redisbook 这本书,对...
    99+
    2022-10-18
  • Redis中5种数据结构的使用场景介绍
    一、redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码。目前目标是吃透 redis 的数据结构。我们都知道,在 re...
    99+
    2022-06-04
    种数 场景 结构
  • Redis的数据结构及应用场景
    一. 谈谈对redis的理解,它的应用场景。Redis是一个key-value存储系统,它支持存储的value类型包括string字符串、list链表、set集合、sorted Set有序集合和hash哈希等数据类型。这些数据类型都支持pu...
    99+
    2023-06-02
  • 浅谈redis五大数据结构和使用场景
    老规矩,先抛结论后验证 string:有点像java的hashMap,存的时候什么key,取的时候也什么key,常用于做缓存,保存用户信息、查询列表等; hash:这个有点像h...
    99+
    2022-11-12
  • Redis系列(二):Redis的5种数据结构及其常用命令
    上一篇博客,我们讲解了什么是Redis以及在Windows和Linux环境下安装Redis的方法, 没看过的同学可以点击以下链接查看: Redis系列(一):Redis简介及环境安装。 本篇博客我们来讲解下Redis的5种数据结构...
    99+
    2017-12-08
    Redis系列(二):Redis的5种数据结构及其常用命令
  • redis五大数据结构和使用场景的示例分析
    这篇文章主要介绍redis五大数据结构和使用场景的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!老规矩,先抛结论后验证string:有点像java的hashMap,存的时候什么key,取的时候也什么key,常...
    99+
    2023-06-14
  • Redis的五种数据结构
    Redis的有几种数据结构?相信很多人对于Redis的五种数据结构的了解处于一知半解状态,小编给大家总结了以下内容。如下资料是关于Redis的五种数据结构的内容。Redis 是一个高性能的key-value...
    99+
    2022-10-18
  • Redis多种数据类型以及使用场景
    SDS简单动态字符串 struct sdshdr { // 记录buf数组中已使用字节的数量 // 等于SDS所保存字符串的长度 int len; // 记录buf数组中未使用字节的数量 int free; // 字节数组,用于保存字符...
    99+
    2014-11-22
    Redis多种数据类型以及使用场景
  • 多维度深入分析Redis的5种基本数据结构
    目录一、简介二、string(字符串)1、string(字符串)相关介绍1.1 string(字符串)的内部结构1.2 string(字符串)的扩容2、string(字符串)的指令2...
    99+
    2022-11-12
  • 关于Go 空结构体的 3 种使用场景
    目录1、为什么使用2、空结构体的特殊性3、使用场景3.1 实现方法接收者3.2 实现集合类型3.3 实现空通道前言: 在 Go 语言中,有一个比较特殊的类型,经常会有刚接触 Go 的...
    99+
    2022-11-12
  • redis中数据结构有哪几种
    小编给大家分享一下redis中数据结构有哪几种,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!redis数据库中有五种数据结构,它们分别是:string-字符串、Hash-字典、List-列...
    99+
    2022-10-18
  • Redis的六种底层数据结构(小结)
    目录1、简单动态字符串(SDS)2、链表3、字典哈希表哈希表节点字典4、跳跃表跳跃表节点(zskiplistNode)跳跃表(zskiplist)5、整数集合6、压缩列表1、简单动态...
    99+
    2022-11-12
  • Redis 的基本特性和 5 个常用数据结构
    [TOC] 1. 基本特性 速度快 基于 C 语言开发,源码短小精悍 数据存在内存中 单线程(高性能) 支持数据持久化,异步保存到磁盘 丰富的数据结构(key-value):string、list、hash、set、zset...
    99+
    2019-02-26
    Redis 的基本特性和 5 个常用数据结构
  • Redis五种数据结构在JAVA中如何封装使用
    目录数据结构string字符串string字符串简介string字符串在Java中的封装list列表list列表简介队列栈list列表在Java中的封装hash(字典)hash字典简...
    99+
    2022-11-12
  • Redis中的5种数据类型怎么应用
    本文小编为大家详细介绍“Redis中的5种数据类型怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis中的5种数据类型怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2022-10-19
  • Redis的底层数据结构有多少种
    小编给大家分享一下Redis的底层数据结构有多少种,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、简单动态字符串(SDS)Redis 虽然是用 C 语言写的,但Redis没有直接使用C语言传统的字符串表示(以空字符 &a...
    99+
    2023-06-22
  • Redis数据库的使用场景介绍(避免误用Redis)
    Redis 是目前 NoSQL 领域的当红炸子鸡,它象一把瑞士军刀,小巧、锋利、实用,特别适合解决一些使用传统关系数据库难以解决的问题。但是 Redis 不是银弹,有很多适合它解决的问题,但是也有很多并不适...
    99+
    2022-06-04
    场景 数据库 Redis
  • redis数据类型及应用场景知识点总结
    redis数据类型及应用场景 Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 一、string 简介:S...
    99+
    2022-10-18
  • Redis之SDS数据结构的使用
    目录序言字符串char*字符串数组简单动态字符串SDS序言 Redis的几种基本数据结构有字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set),这些是最常见的,也能...
    99+
    2022-08-08
    RedisSDS数据结构 RedisSDS
  • Redis的六种底层数据结构是什么
    本篇内容介绍了“Redis的六种底层数据结构是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、简单动...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作