Day2、我室友打了一把王者时间我学会了Redis的入门指南

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Day2、我室友打了一把王者时间我学会了Redis的入门指南


大家好,我是飞鸟,上次学习Redis的总结没有写,今天补上,如果文章对你有帮助,点赞,关注支持一下小编🤞

推荐阅读:

Day1、我妹打一把QQ飞车学会了Redis的入门知识


Redis五大数据类型使用详解~


一、字符串(String)

字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。你可以用其存储用户的邮箱、JSON化的对象甚至是一张图片。

划重点:一个字符串类型健可以存储的数据的最大容量是512MB.

字符串类型是其他4种数据类型的基础,其他数据类型和字符串类型的差别从某种角度来说只是组织字符串的形式不同。例如,列表类型是以列表的形式组织字符串,而集合类型是以集合的形式组织字符串。

SET和GET是Redis中最简单的两个命令,它们实现的功能和编程语言中的读写变量相似,还有一点大小写都可以,一般习惯大写。

  • 设置指定key的值

SET key value

  • 获取指定key的值

GET key

例如我们设置索引为k2,值为v2的键值对数据

127.0.0.1:6379> SET K2 V2
OK
127.0.0.1:6379> GET K2
"V2"

当键不存在时会返回空结果。

127.0.0.1:6379> GET K3
(nil)
  • 返回key中字符串值的子字符
  • key为索引,start为截取的起始下标,end为截取的终止下标

GETRANGE key start end

例如创建索引“mykey”,值为“feiniao”的键值对。

127.0.0.1:6379> SET mykey feiniao
OK
127.0.0.1:6379> GET mykey
"feiniao"
127.0.0.1:6379> GETRANGE mykey 2 3
"in"

2是起始下标,从f为0下标开始数,截取2取i,终止3取n,这样是不是很好理解。

  • 获取所有(一个或多个)给定key的值

MGET key1 [key2…]

创建两个键值对,索引分别是“mykey1”和“mykey2”,值为v1,v2,然后索引为mykey3的结果空的

127.0.0.1:6379> SET mykey1 v1
OK
127.0.0.1:6379> SET mykey2 v2
OK
127.0.0.1:6379> MGET mykey1 mykey2 mykey3
1) "v1"
2) "v2"
3) (nil)

这时你有没有发现一个一个创建会不会麻烦,对了,我们还能同时创建多个键值对。

  • 同时设置多个键值对

MSET key1 value1 [key2 value2…]

同时创建两个键值对,索引为“mykey3”和“mykey4”,值为v3,v4

127.0.0.1:6379> MSET mykey3 v3 mykey4 v4
OK
127.0.0.1:6379> MGET mykey3 mykey4
1) "v3"
2) "v4"
  • 返回key所存储的字符串值的长度

STRLEN key

索引为mykey5,值为feiniao,数一下正好7个字母。

127.0.0.1:6379> SET mykey5 feiniao
OK
127.0.0.1:6379> STRLEN mykey5
(integer) 7
  • 将key中存储的数字值增一

INCR key

127.0.0.1:6379> SET mykey6 7
OK
127.0.0.1:6379> INCR mykey6
(integer) 8
  • 将key中的存储数字值减一

DECR key

127.0.0.1:6379> SET mykey7 6
OK
127.0.0.1:6379> DECR mykey7
(integer) 5
  • 将key所存储的值加上给定的增量值

INCRBY key increment

值增加5,很简单的。

127.0.0.1:6379> SET mykey7 20
OK
127.0.0.1:6379> INCRBY mykey7 5
(integer) 25
  • 如果key已经存在并且是一个字符串,APPEND命令将指定的value追加到该key原来值的末尾

APPEND key value

127.0.0.1:6379> SET mykey8 feiniao
OK
127.0.0.1:6379> APPEND mykey8 YYDS
(integer) 11
127.0.0.1:6379> GET mykey8
"feiniaoYYDS"

好了,字符串基本命令就到这,当然不止这些命令,只是指出常用的命令。


二、散列类型(Hash)

我们现在已经知道Redis是采用字典结构以键值对的形式存储数据的,而hash的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型。

划重点:一个散列类型键可以包含至多2^32-1个字段

设置Hash数据所使用的命令不是SET,而是HMSET,你可以理解为H代表Hash的意思,M代表Map的意思,该命令的格式如下:

  • 同时将多个field-value(域-值)对设置到哈希表key中

HMSET key field1 value1 [field2 value2…]

Redis Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。此命令会覆盖哈希表中已存在的字段。如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。

字段field为f1,f2,值为v1,v2

127.0.0.1:6379> HMSET mykey9 f1 v1 f2 v2
OK
127.0.0.1:6379> HGET mykey9 f1
"v1"
127.0.0.1:6379> HGET mykey9 f2
"v2"
127.0.0.1:6379> HGET mykey9 f3
(nil)
127.0.0.1:6379>
  • KEY为对应着这个Hash数据的索引

HGETALL key

当所有字段和字段值却不知道键中有哪些字段时,应该使用HGETALL命令查找所有数据

127.0.0.1:6379> HGETALL mykey9
1) "f1"
2) "v1"
3) "f2"
4) "v2"
  • 获取存储在哈希表中指定字段的值

HGET key field

127.0.0.1:6379> HGET mykey9 f1
"v1"
  • 删除一个或多个哈希表字段

HDEL key field1 [field2]

127.0.0.1:6379> HDEL mykey9 f1
(integer) 1
127.0.0.1:6379> HGETALL mykey9
1) "f2"
2) "v2"
  • 获取所有哈希表中的字段数量

HLEN key

127.0.0.1:6379> HLEN mykey9
(integer) 1
  • 获取所有哈希表中的字段,也就是获取field

HKEYS key

返回哈希表中所有域(field)列表。 当 key 不存在时,返回一个空列表。

127.0.0.1:6379> HKEYS mykey9
1) "f2"
  • 有获取字段就有获取值,所有值

HVALS key

127.0.0.1:6379> HVALS mykey9
1) "v2"


三、list类型

列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端增加元素,或者获得列表的某一个片段,在Redis中可以指定是在列表的头部或者尾部插入。所以你也可以把它看作是一个LinkedList结构。

  • 将一个或多个元素插入列表表头

LPUSH key value1 [value2]

127.0.0.1:6379> LPUSH mylist fn1 fn2 fn3
(integer) 3
  • 将一个或多个元素插入列表尾部

RPUSH key value1 [value2…]

127.0.0.1:6379> LPUSH mylist fn1 fn2 fn3
(integer) 3
127.0.0.1:6379> RPUSH mylist fn4 fn5 fn6
(integer) 6

经过两轮插入,列表是这样的:[fn3,fn2,fn1,fn4,fn5,fn6]

  • 获取列表长度,key为要查询长度的列表的索引

LLEN key

127.0.0.1:6379> LLEN mylist
(integer) 6
  • 通过索引获取列表中的元素

LINDEX key index

127.0.0.1:6379> LINDEX mylist 2
"fn1"
127.0.0.1:6379> LINDEX mylist 5
"fn6"
  • 移除并获取列表第一个元素,key返回第一个元素的列表的索引

LPOP key

127.0.0.1:6379> LPOP mylist
"fn3"
  • 移除并获取列表最后一个元素,返回移除最后一个元素

RPOP key

127.0.0.1:6379> RPOP mylist
"fn6"


四、set集合

集合的概念相信大家以前的数学课就了解过,在集合中的每个元素都是不同的,没有顺序。

划重点:一个集合类型set键可以存储至多2^32-1个字符串

集合类型和列表类型对比:

集合类型 列表类型
存储内容 至多2^32-1个字符串 至多2^32-1个字符串
有序性
唯一性
  • 向集合添加一个或多个成员,返回值是插入的成员的个数

SADD key member1 [member2…]

127.0.0.1:6379> SADD myset m1 m2
(integer) 2
  • 获取集合中成员的个数,返回成员个数

SCARD key

127.0.0.1:6379> SCARD myset
(integer) 2
  • 返回第一个集合与其他集合之间的差异

SDIFF key1 [key2…]

myset1相对于myset2之间的差异,"m3"和“m4”

127.0.0.1:6379> SADD myset1 m3 m4 m5
(integer) 3
127.0.0.1:6379> SADD myset2 m5 feiniao feiniao1
(integer) 3
127.0.0.1:6379> SDIFF myset1 myset2
1) "m3"
2) "m4"
  • 返回所给定所有集合的交集

SINTER key1 [key2…]

127.0.0.1:6379> SADD myset1 m3 m4 m5
(integer) 3
127.0.0.1:6379> SADD myset2 m5 feiniao feiniao1
(integer) 3
127.0.0.1:6379> SINTER myset1 myset2
1) "m5"
  • 返回集合中的所有元素

SMEMBERS key

127.0.0.1:6379> SMEMBERS myset2
1) "m5"
2) "feiniao1"
3) "feiniao"


五、有序集合类型(Zset)

有序集合类型的特点从他的名字中就可以猜到,与集合类型的区别就是“有序”二字,有序集合中的每一个元素都会关联一个double类型的分数(也可以理解为权重),redis也正是通过分数来为集合中的成员进行从小到大排序的。所以有序集合的成员是虽然唯一的,但是分数(score)却是可以重复的。

  • 向有序集合中添加一个或多个成员

ZADD key score1 member1 [score2 menber2]

127.0.0.1:6379> ZADD myzset 1 z1 2 z2 3 z3
(integer) 3
  • 获取有序集合的成员数

ZCARD key

127.0.0.1:6379> ZCARD myzset
(integer) 3
  • 计算有序集合中指定区间分数的成员数

ZCOUNT key min max

127.0.0.1:6379> ZCOUNT myzset 1 3
(integer) 3
  • 移除有序集合中的一个或多个元素

ZREM key member1 [member2…]

127.0.0.1:6379> ZREM myzset z1
(integer) 1

今天的学习暂时到这里。

赠人玫瑰,手有余香



相关实践学习
基于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
相关文章
|
7月前
|
监控 NoSQL Redis
一探Redis究竟:超火爆入门指南,你竟然还没看?
Redis是由C语言编写的开源、基于内存、支持多种数据结构、高性能的Key-Value数据库。
226 2
一探Redis究竟:超火爆入门指南,你竟然还没看?
|
6月前
|
NoSQL Java Redis
[笔记]Springboot入门《四》Springboot使用Redis
[笔记]Springboot入门《四》Springboot使用Redis
|
3月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
82 2
|
3月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
73 0
|
29天前
|
存储 NoSQL Java
Redis 数据结构操作入门
Redis 数据结构操作入门
15 0
|
2月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
298 0
|
3月前
|
存储 NoSQL Java
深入学习Redis:从入门到实战
深入学习Redis:从入门到实战
|
3月前
|
存储 NoSQL Redis
redis入门学习
redis入门学习
26 0
|
4月前
|
NoSQL Linux Redis
Redis基础入门实践详解
Redis基础入门实践详解
50 1
|
4月前
|
存储 NoSQL Linux
【Redis入门】 —— 关于Redis的一点儿知识
【Redis入门】 —— 关于Redis的一点儿知识

热门文章

最新文章