Redis基本数据类型

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 1.字符串类型(String)1.创建与获取2.字符串的修改2.哈希类型(Hash)1.创建哈希2.获取哈希某个属性的值3.检测是否存在4.哈希键的修改5.其它3.列表类型(list)1.列表的创建与删除2.获取列表以及相关信息4.集合类型(set)1.集合的创建删除与查询2.集合的运算有序集合类型(zset)1.有序集合的创建与查询2.有序集合的修改

 

Redis是非关系数据库,基于内存的数据库,常用于作为缓存数据库。本次文章将讲述该数据库的几种基本类型并掌握其基本类型对应的命令(基于redis-cli)

image.gif


1.数据类型:分为 字符串,哈希,列表,集合,有序集合 还有最新的流数据类型 (流数据类型后面有专门讲解本章不做多描述)


1.字符串类型(String)

什么是字符串,字符串就是一个键名对应一个键值,比如说一个人的身高对应一个具体的值,并不存在一个人的身高有多个值的情况(命令的大小写都不影响但是尽量大写)

1.创建与获取

set key value --创建字符串

get key -- 获取字符串

image.gif编辑

2.字符串的修改

incr key -- 返回自加1后的值(注意:只有key对应的value是数字的时候才能进行自加,否则会报错)

decr key-- 返回自减少1后的值(注意:只有key对应的value是数字的时候才能进行自加,否则会报错)

INCRBY KEY NUMBER --指定增加某个数

DECRBY KEY NUMBER --指定减少某个数

INCRFLOAT KEY NUMBER --增加float型的数

image.gif编辑

(注意:如果increase了并不存在的键名则系统会自动创建一个对应的字符串并且初始值是0)


2.哈希类型(Hash)

哈希类型是一个对象的集合,可以包含对象很多的属性,比如一辆车 有名字 有价格 有速度等等属性,而Car就是哈希的key 而像名字 价格 速度等等这些是key对应的filed(域),即某辆汽车哪个方面(领域),values就是对应的值 比如名字叫“丰田”,价格1200000,速度200

1.创建哈希

HSET KEY FILED VALUES --单个创建

HMSET KEY FILED1 VALUES1 FILED2 VALUES2... -- 多个创建

2.获取哈希某个属性的值

HGET KEY FILED --单个获取

HMGET KEY FILED1 FILED2 ...--多个获取

HGETALL KEY -获取目标key下所有的filed与对应的值

image.gif编辑

注意这里的 "\xe4\xb8\xb0\xe7\x94\xb0"是unicode编码,想要转为中文需要用到对应解码之后

才能变成中文

3.检测是否存在

HEXIST KEY FILED --检测想要的key对象有没有某个方面比如CAR想要看有没有价格方面信息等等

HSETNX KEY FILED VALUE-- hsetnx(hset if not exist)如果不存在某个方面的情况下,设置某个方面与其值,比如我设置CAR price 10 可以知道 CAR 已经存在对应的price,并且返回值是(integer)0意味着创建失败

4.哈希键的修改

1.HINCRBY FILED VALUES +/-NUMBER--修改某个方面的值比如price ,并且通过值得正负实现是增还是减

2.HDEL key FILED/ FILED2 /FILED3 ...--删除某个方面

image.gif编辑

5.其它

HKEYS KEY --获取某个键对应的所有方面(域),比如CAR 能获取到其price name 等等

HVALS KEY --与hkeys不同的是,hvals key获取的是某个键对应所有方面的值

HLEN KEY  -- 计算并返回某个键名对应有多少个域filed

image.gif编辑


3.列表类型(list)

当你在听音乐时,你创建了一个播放列表来记录你要播放的歌曲。这个播放列表可以类比为 Redis 的列表类型。开始时,你的播放列表是空的,因为你还没有选择任何歌曲。当你找到一首喜欢的歌曲后,你将它添加到播放列表中,此时列表变为 ["Song A"]。然后,你又找到了其他几首喜欢的歌曲,你可以依次将它们添加到列表中,如 ["Song A", "Song B", "Song C"]。你也可以从左插入Song D 变成["Song D","Song A", "Song B", "Song C"]

1.列表的创建与删除

LPUSH  key --即是left push 从左插入,并返回当前列表内元素的个数

RPUSH  key --对应的是right push 从右边插入,并返回当前列表内元素的个数

LPOP  key --输出列表最左边的值,再将其删除

RPOP key --输出列表最右边的值,再将其删除

LREM key count value --从列表中删除指定数量的匹配元素。

       注意LREM key count value中

       如果count>0 则意味着从左到右开始删除count 个值为 value的元素

       如果count<0 则意味着从右到左开始删除count 个值为 value的元素

2.获取列表以及相关信息

LRANGE KEY 0 -1    --表示从第0个开始,-1(表示全部)输出(从左到右输出)

LRANGE KEY 0 2    --表示从第0个开始,到第2个输出

LINDEX KEY index --获取列表中指定索引位置的元素。

LLEN KEY --获取列表的长度(元素个数)

image.gif编辑

3.列表的修改

LINSERT key BEFORE|AFTER pivot value --将值插入到列表中某个元素之前或之后image.gif编辑

LTRIM key start stop --于修剪(裁剪)列表中的元素范围,使其只保留指定范围内的元素,而删除其他的元素。


4.集合类型(set)

无序、唯一且不重复的数据结构,它可以存储多个不同的元素。具体应用可以比如一个班级的学号,key-》class1     members-》学号

集合的性质

    • 无序性:集合中的元素没有任何特定的顺序,每次获取元素时,元素的顺序都可能发生变化。
    • 唯一性:集合中的元素是唯一的,不会存在重复的元素。
    • 动态性:集合可以随时添加和删除元素。
    • 快速判断成员是否存在:集合类型对于判断某个元素是否存在非常高效,时间复杂度为 O(1),这使得集合在需要快速检查元素是否存在的场景下十分有用。

    1.集合的创建删除与查询

    SADD KEY MEMBER / MEMBER1 / MEMBER2...--创建集合

    SREM KEY MEMBER / MEMBER1 / MEMBER2... --删除集合key中的成员

    SMEMBERS KEY --查看集合内key所有的成员

    SISMEMBER KEY MEMBER --集合中是否存在

    image.gif编辑

    注意集合的无序性,若要使其有序则需要用有序集合类型

    2.集合的运算

    image.gif编辑

    SDIFF KEY1 KEY2 --集合相减,

    举例有两个社团key1 和key2那么当需求社团成员只报了key1社团没有报社团key2时候就可以用集合相减

    SINTER KEY1 KEY2--集合取交集

    还是如上的例子,当我需要即报名了key1社团和key2社团的成员时候就可以用SINTER KEY1 KEY2 来计算

    SUNION KEY1 KEY2--集合取并集

    还是例子,当我需求社团key1 和社团key2的成员一起参加活动,统计成员时候就可以用到        SUNION KEY1KEY2

    image.gif编辑

    3.其他

    SCARD KEY  -- 统计key内成员的个数

    SDIFFSTORE DESTINATION KEY1 KEY2 ,,,--将两个集合之间取差并将内容保存到一个新的集合destination处,同理可以将SDIFF修改为SINTER SUNION...

    SRANDMEMBER KEY COUNT--随机抽取集合内数量为count个成员

    image.gif编辑


    有序集合类型(zset)

    在集合的基础上加上score分数(必须是数字),根据分数可以进行排位,比如一个班级里面考完一次试,统计时候需要将数据从高到低排位,此时就需要用到有序集合

    1.有序集合的创建与查询

    ZADD   KEY SCORE MEMBER/  SCORE  MEMBER 2 ...--创建有序集合

    ZSCORE MEMBER --查询某个成员的分数

    ZRANGE KEY START END [withscores]--从低到高进行排名 当加上with scores后缀时候不止有对应的成员排名,还会展示成员的分数

    ZREVRABFE KEY START END [withscores]--reverse zrange 即对zrange命令的反转就是从高到低进行排名

    ZCARD KEY    --统计zset内成员的个数

    ZCOUNT KEY MIN MAX --统计集合key成员中分数段为[min,max]的成员个数

    ZRANK KEY MEMBER --查询某个成员在集合内排第几名

    image.gif编辑

    2.有序集合的修改

    ZINCRBY KEY INCRESEMENT MEMBER-- 对集合key内成员的score进行操作可以通过最后INCRESEMENT 的+ - 进行增加或者减少

    ZREM KEY MEMBER1 / MEMBER2...--删除集合key中的成员member1

    image.gif编辑

    相关实践学习
    基于Redis实现在线游戏积分排行榜
    本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
    云数据库 Redis 版使用教程
    云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
    目录
    相关文章
    |
    15天前
    |
    存储 消息中间件 NoSQL
    使用Java操作Redis数据类型的详解指南
    通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
    31 1
    |
    1月前
    |
    存储 消息中间件 NoSQL
    Redis 数据类型
    10月更文挑战第15天
    37 1
    |
    2月前
    |
    存储 消息中间件 缓存
    深入探析Redis常见数据类型及应用场景
    深入探析Redis常见数据类型及应用场景
    56 2
    |
    3月前
    |
    NoSQL 安全 Java
    Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
    这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
    Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
    |
    3月前
    |
    NoSQL Java Redis
    Redis5种数据类型
    这篇文章介绍了Redis的五种数据类型:字符串、列表、集合、有序集合和哈希,并通过代码示例展示了如何在Spring框架中使用RedisTemplate操作这些数据类型。
    Redis5种数据类型
    |
    3月前
    |
    存储 NoSQL Java
    深入理解Redis数据类型Hashes原理
    本文深入分析了Redis中的hashes数据类型,这是一种用于存储行记录的数据结构,允许一个key下存储多条记录。
    深入理解Redis数据类型Hashes原理
    |
    3月前
    |
    存储 NoSQL 算法
    深入理解Redis数据类型Zset原理
    本文深入探讨了Redis中的Zset(有序集合)数据类型,它是一种可以存储排序功能的集合,其中每个元素都具有一个浮点型的score属性,用于根据score进行排序。
    深入理解Redis数据类型Zset原理
    |
    3月前
    |
    存储 NoSQL 算法
    Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
    这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
    |
    3月前
    |
    消息中间件 存储 NoSQL
    redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
    本文档介绍了如何使用 Go 语言中的 `go-redis` 库操作 Redis 数据库
    192 0
    redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
    |
    3月前
    |
    存储 缓存 NoSQL
    深入理解Redis数据类型String原理
    本文深入探讨了Redis中String数据类型的实现原理和使用场景,基于Redis 5.0版本进行分析。
    深入理解Redis数据类型String原理
    下一篇
    无影云桌面