Redis基本数据类型

本文涉及的产品
云数据库 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
    目录
    相关文章
    |
    6天前
    |
    存储 消息中间件 NoSQL
    Redis数据类型详解:选择合适的数据结构优化你的应用
    Redis数据类型详解:选择合适的数据结构优化你的应用
    |
    5天前
    |
    存储 NoSQL 关系型数据库
    【Redis】Redis的特性和应用场景 · 数据类型 · 持久化 · 数据淘汰 · 事务 · 多机部署
    【Redis】Redis的特性和应用场景 · 数据类型 · 持久化 · 数据淘汰 · 事务 · 多机部署
    15 0
    |
    6天前
    |
    NoSQL Redis 数据库
    Redis中的常用命令非常丰富,涵盖了各种数据类型的基本操作以及服务器管理和维护的相关指令
    【5月更文挑战第15天】Redis常用命令包括通用(如PING、SELECT)、键操作(KEYS、EXISTS、DEL)、字符串(SET、GET)、哈希(HSET、HGET)、列表(LPUSH、LPOP)、集合(SADD、SMEMBERS)和有序集合(ZADD、ZRANGE)等。这些命令用于数据操作及服务器管理,满足不同场景需求。了解更多命令,建议参考Redis官方文档。
    17 2
    |
    6天前
    |
    SQL NoSQL Java
    Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO
    Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO
    18 0
    |
    6天前
    |
    存储 NoSQL 定位技术
    Redis常用数据类型及常用命令
    这些是Redis中常用的数据类型和命令。Redis还提供了许多其他命令和功能,用于数据存储、操作和查询。你可以根据需要选择适当的数据类型和命令来满足你的应用程序需求。
    25 4
    |
    6天前
    |
    存储 SQL NoSQL
    Redis入门到通关之五大基本数据类型及其使用场景
    Redis入门到通关之五大基本数据类型及其使用场景
    17 0
    |
    6天前
    |
    存储 NoSQL Redis
    第十八章 Redis查看配置文件和数据类型
    第十八章 Redis查看配置文件和数据类型
    22 0
    |
    6天前
    |
    存储 SQL NoSQL
    Redis的数据类型
    Redis的数据类型
    20 0
    |
    6天前
    |
    存储 XML NoSQL
    Redis支持哪些数据类型?
    Redis提供五种数据类型:String(支持JSON、XML等序列化,最大512MB),Hash(键值对,适合存储对象),List(有序列表,可在两端添加元素),Set(无序唯一元素集合),以及Sorted Set(有序集合,元素带分数排序)。每种类型有特定应用场景,优化了数据操作效率。
    13 0
    |
    6天前
    |
    存储 消息中间件 NoSQL
    Redis 常见数据类型(对象类型)和应用案列
    接下来,让我们走进 Redis 的对象世界,Redis 5.0版本就已经支持了下面的 9 种类型,分别是 :字符串对象、列表对象、哈希对象、集合对象、有序集合对象、Bitmaps 对象、HyperLogLog 对象、Geospatial 对象、Stream对象。
    Redis 常见数据类型(对象类型)和应用案列