Redis命令与数据结构

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,倚天版 1GB 1个月
简介: Redis常用命令与数据结构。

一.初识Redis

1.什么是Redis

简记: Redis是一个开源的使用ANSI C语言编写、支持网络、可 基于内存亦可持久化 的日志型、 Key-ValueNoSQL数据库 ,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由 VMware 主持。从2013年5月开始,Redis的开发由Pivotal赞助。
\
官方解释: Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型。它还内建了复制,lua脚本,LRU,事务等功能,通过redis sentinel实现高可用,通过redis cluster实现了自动分片。以及事务,发布/订阅,自动故障转移等等。

Redis官网地址:https://redis.io/docs/about/
在这里插入图片描述
Redis官方推荐在Linux环境下进行部署,可以通过这篇博客进行部署安装Redis:Linux环境下安装Redis(保姆级教程)
在这里插入图片描述

2.Redis 六大特性

在这里插入图片描述

3.Redis客户端通用命令

在这里插入图片描述
启动Redis服务端
在这里插入图片描述
启动Redis客户端
在这里插入图片描述

  • select用于选择数据库(Redis默认16个数据库,由于我在配置文件中配置了databases为256,所以当前我的数据库中有0~255个数据库)

在这里插入图片描述
选择第0个数据库(类似于mysql中的user 数据库名;)
在这里插入图片描述

  • set key value 命令用户写入字符串数据,通过 get key 命令获取key对应的value

向数据库0写入二条数据,key=a value =1 和key = b value = 2
在这里插入图片描述
通过get 获取key=a的值

在这里插入图片描述

  • keys查询数据库中所有的键信息

可以通过 keys * 命令查询出所有的key信息
在这里插入图片描述
并且还可以增加相应条件进行查询,如:
条件1:*表示任意字符
条件2:[h-l]表示字符在l-h中的字符
条件3:?表示匹配1个任意字符

在这里插入图片描述

  • dbsize查询当前数据库key的总数

在这里插入图片描述

  • exists用户查找当前key是否存在(1:表示存在,0:表示不存在)

在这里插入图片描述

  • del删除指定key的数据(1:删除成功,0:删除失败)

在这里插入图片描述

  • expire设置当前key多少秒后过期(删除),ttl用于查询过期剩余时间

在这里插入图片描述

二.Redis中支持的五种数据结构

Redis常用的五种数据结构如下表:
在这里插入图片描述

1.Redis数据结构-String

字符串类型结构是一种String-JSON序列化,这种方式优点就是编程简单,节约内存,缺点就是序列化开销,无法更新部分属性,注意 String最大512mb,建议单个key和Value不要超过100kb

在这里插入图片描述

字符串结构应用场景:
在这里插入图片描述
Redis字符串指令
在这里插入图片描述

  • msget和mget

在这里插入图片描述

  • incr/decr和 incrby/decrby

在这里插入图片描述

2.Redis数据结构-Hash

① Hash类型用于存储结构化数据(1个key可以保存一个对象).
② Hash可以看做是Map中的Map
③ 这种方式优点直观,可部分更新;缺点多层嵌套实现困难,序列化/反序列化编程麻烦

hash结构图如下:
在这里插入图片描述

Redis中Hash数据结构指令:
在这里插入图片描述
在这里插入图片描述
通过 del user:2:info 命令删除一个Hash对象:
在这里插入图片描述

3.Redis数据结构-List

① List列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
② 一个列表最多可以包含2的32次方- 1个元素(4294967295, 每个列表超过40亿个元素)。

Redis中List数据类型指令:
在这里插入图片描述

在这里插入图片描述
通过 del listkey 命令删除整个list:
在这里插入图片描述

List典型场景:
在这里插入图片描述

4.Redis数据结构-Set

① Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
② Redis 中集合是通过哈希表实现的,所以添加,删除,查找的速度极快。
③ 集合中最大的成员数为 2的32次方- 1 (4294967295,每个集合可存储40多亿个成员)。

Redis中Set数据结构的指令:
在这里插入图片描述
key= user:1:follow
在这里插入图片描述
key=user:2:follow
在这里插入图片描述
差集,交集和并集:
在这里插入图片描述
通过 del user:1:follow(Set的Key) 命令删除单个Set:
在这里插入图片描述

Set应用场景(共同关注交集部分信息):
在这里插入图片描述

5.Redis数据结构-Zset

Redis 的 Set 是 String 类型的有序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

在这里插入图片描述

Redis中Z-set数据结构指令:
在这里插入图片描述
排名最低从0开始(根据分数进行排名,最低为0,一次往上加一)
在这里插入图片描述
使用 flushdb 命令清空当前数据库中的所有数据:
在这里插入图片描述
使用 zrangebyscore player:rank 700 901 命令根据分数进行排序:
在这里插入图片描述

应用场景(游戏榜单):
在这里插入图片描述

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
30天前
|
NoSQL Java Redis
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
|
22天前
|
存储 缓存 NoSQL
Redis 全局通用命令整理
Redis 全局通用命令整理
48 10
|
22天前
|
存储 JSON NoSQL
Redis常见命令大全
【7月更文挑战第30天】
11 3
|
22天前
|
NoSQL Redis 索引
Redis 中ZSET数据类型命令使用及对应场景总结
Redis 中ZSET数据类型命令使用及对应场景总结
31 2
|
22天前
|
NoSQL Redis
Redis set数据类型命令使用及应用场景使用总结
Redis set数据类型命令使用及应用场景使用总结
22 1
|
26天前
|
NoSQL 网络协议 Redis
Redis性能优化问题之如何判断 Redis 性能下降是否由复杂度过高的命令引起
Redis性能优化问题之如何判断 Redis 性能下降是否由复杂度过高的命令引起
|
26天前
|
编解码 NoSQL Redis
c++开发redis module问题之想实现Redis命令,如何解决
c++开发redis module问题之想实现Redis命令,如何解决
|
26天前
|
NoSQL Java 编译器
c++开发redis module问题之保证Redis在fork时没有处于inflight状态的命令,如何解决
c++开发redis module问题之保证Redis在fork时没有处于inflight状态的命令,如何解决
|
4天前
|
NoSQL Java Redis
Redis字符串数据类型之INCR命令,通常用于统计网站访问量,文章访问量,实现分布式锁
这篇文章详细解释了Redis的INCR命令,它用于将键的值增加1,通常用于统计网站访问量、文章访问量,以及实现分布式锁,同时提供了Java代码示例和分布式锁的实现思路。
12 0
|
26天前
|
NoSQL Redis C++
c++开发redis module问题之对于写命令,进行主备复制和写AOF,如何解决
c++开发redis module问题之对于写命令,进行主备复制和写AOF,如何解决