Redis常见数据结构

这篇具有很好参考价值的文章主要介绍了Redis常见数据结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Redis常见数据结构,Redis,redis,数据结构,数据库

前言

Redis是一个key-value的数据库,key一般是String类型,但是value的类型多种多样
Redis常见数据结构,Redis,redis,数据结构,数据库
在学习Redis不同数据类型时,我们可以在官网( Redis官网)查看不同的命令:
Redis常见数据结构,Redis,redis,数据结构,数据库
也可以使用使用help @xxx 命令的方式查看

一、Redis通用命令

通用命令是部分数据类型都可以使用的指令,常见的有:

  • KEYS:查看符合模板的所有key(支持*或?的模糊查询),不建议在生产环境设备使用
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • DEL:删除一个指定的key
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • EXISTS:判断key是否存在
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • EXPIRE:给一个key设置有效期,有效期到期后该key会自动删除

  • TTL:查看一个KEY的剩余有效期
    Redis常见数据结构,Redis,redis,数据结构,数据库
    那我们不设置expire它的默认有效期是多久呢?
    Redis常见数据结构,Redis,redis,数据结构,数据库
    -1代表永久有效

二、String类型

String类型也就是字符串类型,是Redis最简单的存储类型,其value是字符串,不过根据字符串的格式不同,又可以分为以下三类:

  • String:普通字符串
  • int:整型类型,可以自增自减操作
  • float:浮点类型,可以自增自减操作
    不管那种格式,底层都是字节数组形式存储,只不过编码方式不同。字符串类型最大空间不能超过512m
    Redis常见数据结构,Redis,redis,数据结构,数据库
    String常见命令:
命令 作用
SET 添加或修改一个已经存在的String类型的键值对
GET 根据key获取String类型的value
MSET 批量添加多个String 类型的键值对
MGET 根据多个key获取多个String类型的value
INCR 让一个整型的key自增1
INCRBY 让一个整型的key自增并指定步长 incrby age 2 让age自增2
INCRBYFLOAT 让一个浮点类型的数字自增并指定步长
SETNX 添加一个String类型的键值对,前提是key不存在,否则不执行
SETEX 添加一个String类型的键值对,并指定有效期

SET与GET:
Redis常见数据结构,Redis,redis,数据结构,数据库

MSET与MGET:
Redis常见数据结构,Redis,redis,数据结构,数据库
INCR:
Redis常见数据结构,Redis,redis,数据结构,数据库
INCRBY:
Redis常见数据结构,Redis,redis,数据结构,数据库
INCRBYFLOAT:
Redis常见数据结构,Redis,redis,数据结构,数据库
SETNX:
Redis常见数据结构,Redis,redis,数据结构,数据库
SETEX:
Redis常见数据结构,Redis,redis,数据结构,数据库

三、Key的层级结构

Redis中没有MySQL中Table的概念,我们如何区别不同类型的key呢?
Redis的Key允许有多个单词形成层级结构,多个单词之间用 : 隔开,如下:项目名:业务名:类型:id,这个格式不是固定的,我们可以根据实际需要来调整

比如:student的key:snut:student:1,teacher的key:snut:teacher:1
Redis常见数据结构,Redis,redis,数据结构,数据库

我们在客户端看起来好像没什么区别,我们在图形化工具查看一下
Redis常见数据结构,Redis,redis,数据结构,数据库

四、Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构
String结构是将Java对象序列化为JSON字符串进行存储,如果我们想要去修改对象某个字段时会很不方便
Redis常见数据结构,Redis,redis,数据结构,数据库
Hash结构可以将每个对象的每个字段独立存储,针对每个字段可以进行CRUD
Redis常见数据结构,Redis,redis,数据结构,数据库
Hash的常见命令:

命令 作用
HSET key field value 添加或修改hash类型的key的field的值
HSET key field 获取一个hash类型key的field的值
HMSET 批量添加多个hash类型key的field的值
HMGET 批量获取多个hash类型key的field的值
HGETALL 获取一个hash类型的key中所有的field和value
HKEYS 获取一个hash类型的key中所有的field
HVALS 获取一个hash类型的key中所有的value
HINCRBY 让一个hash类型的key字段自增并指定步长
HSETNX 添加一个hash类型key的field值,前提是field不存在,否则不执行

HSET与HGET:
Redis常见数据结构,Redis,redis,数据结构,数据库
Redis常见数据结构,Redis,redis,数据结构,数据库
Redis常见数据结构,Redis,redis,数据结构,数据库
HMSET与HMGET:
Redis常见数据结构,Redis,redis,数据结构,数据库
HGETALL:
Redis常见数据结构,Redis,redis,数据结构,数据库
HKEYS与KVALS:
Redis常见数据结构,Redis,redis,数据结构,数据库
HINCRBY:
Redis常见数据结构,Redis,redis,数据结构,数据库
HSETNX:
Redis常见数据结构,Redis,redis,数据结构,数据库

五、List类型

Redis中的List类型与Java中的LinkedList类似,可以看作是一个双向链表结构,支持正向检索也支持反向检索。有以下特征:

  • 有序
  • 元素可重复
  • 插入和删除速度快
  • 查询速度一般

经常用来存储一个有序的集合,比如评论区列表,微博点赞列表等
List常见命令:

命令 作用
LPUSH Key element 向列表左插入一个或多个元素
LPOP Key 移除并返回左侧第一个元素,没有则返回nil
RPUSH Key element 向列表右插入一个或多个元素
RPOP Key 移除并返回右侧第一个元素
LRANGE key star end 返回一段范围内的所有元素
BLPOP和BRPOP 与LPOP与RPOP类似,不过在没有元素时等待指定时间,而不是直接返回nil

Redis常见数据结构,Redis,redis,数据结构,数据库
大家需要理清楚LPUSH与RPUSH的区别:
Redis常见数据结构,Redis,redis,数据结构,数据库
Redis常见数据结构,Redis,redis,数据结构,数据库
Redis常见数据结构,Redis,redis,数据结构,数据库
Redis常见数据结构,Redis,redis,数据结构,数据库
LPOP与RPOP:
Redis常见数据结构,Redis,redis,数据结构,数据库
LRANGE:
Redis常见数据结构,Redis,redis,数据结构,数据库
Redis常见数据结构,Redis,redis,数据结构,数据库
大家需要注意我们这里的下标是从0开始的

如何使用List结构模拟一个栈?
入口和出口设置在同一边

如何使用List结构模拟一个队列?
入口和出口在不同边

如何使用List结构模拟一个阻塞队列?
入口和出口在不同边,出队时采用BLPOP或BRPOP

六、Set类型

Redis的Set结构与Java中的HashSet类型,可以背看作是一个value为null的HashMap。有以下特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

Set单个集合常见命令:

命令 作用
SADD key member 向set中添加一个或多个元素
SREM key member 移除set中指定元素
SCARD key 返回set中元素的个数
SISMEMBER key member 判断一个元素是否存在于set中
SMEMBERS 获取set中的所有元素

Redis常见数据结构,Redis,redis,数据结构,数据库
Set多个集合常见命令:

命令 作用
SINTER key1 key2 求key1与key2的交集
SDIFF key1 key2 求key1与key2的差集
SUNION key1 key2 求key1与key2的并集

Redis常见数据结构,Redis,redis,数据结构,数据库

七、SortedSet类型

Redis的SortedSet是一个可排序的set集合,与Java的TreeSet有些类似,但底层数据结构差别很大,SortedSet中的每一个元素带有一个score属性,可以针对score属性进行排序,底层的实现是一个跳表+hash表,有以下特性:

  • 可排序
  • 元素不重复
  • 查询速度快

SortedSet常见命令:

命令 作用
ZADD key score member 添加一个或多个元素到SortedSet,如果已经存在更新score
ZREM key member 删除SortedSet中的指定元素
ZSCORE key member 获取SortedSet中指定元素的score值
ZRANK key member 获取SortedSet中指定元素的排名
ZCARD key 获取SortedSet中元素的个数
ZCOUNT key min max 统计score值在给定范围内的个数
ZINCRBY key increment member 让SortedSet中指定元素自增,步长为指定的increment
ZRANGE key min max 按照score排序后,获取指定排名范围内的元素
ZDIFF、ZINTER、ZUNION 求差集、交集、并集

上述命令练习:

  • 将下列学生得分存入Redis的SortedSet中:Jack 85,Lucy 89,Rose 82,Tom 95,Jerry 78,Amy 92,Miles 76
    Redis常见数据结构,Redis,redis,数据结构,数据库
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • 删除Tom同学
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • 获取Amy同学的分数
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • 获取Rose同学的排名
    需要注意的是我们Sorted是升序,想要获取排名需要逆序(ZREVRANK),并且下标是从0开始的
    Redis常见数据结构,Redis,redis,数据结构,数据库
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • 给Amy同学加2分
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • 查询成绩前三的同学
    我们仍需要逆序查询
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • 查询80分以下有几个学生
    Redis常见数据结构,Redis,redis,数据结构,数据库

  • 查询80分以下的所有同学
    Redis常见数据结构,Redis,redis,数据结构,数据库文章来源地址https://www.toymoban.com/news/detail-534288.html

到了这里,关于Redis常见数据结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023-06-01:讲一讲Redis常见数据结构以及使用场景。

    2023-06-01:讲一讲Redis常见数据结构以及使用场景。 答案2023-06-01: 字符串(String) 适合场景 缓存功能 Redis 作为缓存层,MySQL 作为存储层,在大部分请求中,数据的读取通常是从 Redis 中获取。由于 Redis 具有支持高并发的特性,因此缓存层通常能够加速读写操作,并减轻后端

    2024年02月07日
    浏览(65)
  • Redis 常见的几种数据结构说一下?各自的使用场景?

    介绍:string 数据结构是简单的 key-value 类型。 使用场景: 一般常用在需要计数的场景,比如用户的访问次数、热点文章的点赞转发数量等等。 介绍:list 即是 链表 使用场景:发布与订阅或者说消息队列、慢查询。 介绍:hash 类似于 JDK1.8 前的 HashMap,内部实现也差不多(数组

    2024年01月24日
    浏览(47)
  • 【Redis】内存数据库Redis进阶(Redis哨兵集群)

    基于 Redis 集群解决单机 Redis 存在的四大问题:   搭建一个三节点形成的 Sentinel 集群,来监管 Redis 主从集群。   【Redis】内存数据库Redis进阶(Redis主从集群)   架构图: 三个sentinel实例信息: 节点 IP PORT s1 192.168.150.101 27001 s2 192.168.150.101 27002 s3 192.168.150.101 27003 之前

    2024年02月14日
    浏览(49)
  • Redis学习路线(2)—— Redis的数据结构

    一、Redis的数据结构 Redis是一个Key-Value的数据库,key一般是String类型,不过Value的类型却有很多: String: Hello World Hash: {name: \\\"jack\\\", age: 21} List: [A - B - C - C] Set: {A, B, C} SortedSet: {A: 1, B: 2, C: 3} GEO: {A: (120.3, 30.5)} BitMap: 0110110101110101011 HyperLog: 0110110101110101011 由于Redis对数据

    2024年02月15日
    浏览(43)
  • 【Redis】Redis中的数据结构和内部编码

    type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合),但这些只是Redis对外的数据结构, 实际上Redis针对每种数据结构都有⾃⼰的底层内部编码实现,⽽且是多种实现,这样Redis会在合适的

    2024年02月07日
    浏览(42)
  • redis1之安装redis,启动,常用数据结构

      目录 redis安装与启动、常见数据结构 启动  Redis客户端 数据结构与常见的命令  redis的通用命令  String类型的用法 Hash命令的用法  List命令  Set命令  SortedSet类型用法 1,在linux上安装上gcc的依赖,我这里是centos7.6,gcc是4.5 我们在LInux上查看一下我们的系统信息  我这里安装

    2024年02月06日
    浏览(48)
  • Redis的数据结构

    Redis是一款高性能的键值存储数据库,支持多种数据结构。在Redis中,数据结构是指在Redis中存储和操作数据的方式。Redis支持的数据结构包括字符串、哈希表、列表、集合和有序集合。 字符串是Redis中最基本的数据结构,可以存储任何类型的数据,包括数字、文本和二进制数

    2024年02月09日
    浏览(40)
  • redis核心数据结构

    redis下载地址:Download | Redis linux进入redis目录首先使用make命令进行c++的编译,修改redis.conf文件: 启动退出相关命令: redis五种数据结构图: 1、常用命令 2、应用场景 1)、单值缓存 2)、对象缓存 3)、分布式锁  4)、计数器 5) 、计数器 6) 、分布式系统全局序列号 1、

    2024年02月09日
    浏览(40)
  • Redis底层数据结构

    SDS全称是Simple Dynamic String,具有如下显著的特点: 常数复杂度获取字符串长度:C语言获取一个字符串的长度需要遍历整个字符串时间复杂度为O(N),而SDS在属性len中记录了字符串长度,获取字符串长度的时间复杂度为O(1)。 杜绝缓冲区溢出:C字符串在执行拼接字符串时,如果

    2024年02月13日
    浏览(46)
  • redis 数据结构(二)

    整数集合是  Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不时,就会使用整数集这个数据结构作为底层实现。 整数集合本质上是一块连续内存空间,它的结构定义如下: 可以看到,保存元素的容器是一个 contents 数组,虽然 contents 被声明为 i

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包