【2023】Redis常用命令

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【2023】Redis常用命令

Redis的主要使用场景是缓存数据,所以本文并不仅局限于语法,还会结合“缓存”的场景给出基于项目的案例。

1.键操作命令

Redis是以键值对的方式来缓存数据的

1.1.判断键是否存在

exists key

返回值为1代表键存在,返回值为0代表键不存在

1.2.用keys命令查找键

keys命令可以用通配符或正则表达式来查找指定模式的键

keys pattern

pattern可以用“?”代替一个字符;用“*”匹配0、1或多个字符;还可以用正则表达式方式匹配

keys n?me
keys id00*

1.3.用scan命令查找键

语法:

scan cursor [MATCH pattern] [COUNT count] [TYPE type]

示例:

127.0.0.1:6379> scan 0
1) "0"
2) 1) "namelist"
   2) "id002"
   3) "name002"
   4) "name003"
   5) "key:__rand_int__"
   6) "id001"
   7) "name001"
   8) "age001"
   9) "age002"

表示从0号游标开始查找键,其中表示返回键数量的COUNT值默认是10,也就是说该命令将从头开始返回10个键的名称。

127.0.0.1:6379> scan 0 MATCH * COUNT 5
1) "5"
2) 1) "namelist"
   2) "id002"
   3) "name002"
   4) "name003"
   5) "key:__rand_int__"

依然是从0号游标开始查找(从头开始),这里用MATCH *表示查找所有类型的键,用COUNT表示返回的数量。实现部分查找。

1.4.重命名键

通过renamerenamenx两个命令可以重命名键

rename key newkey
renamenx key newkey
  • key表示旧的键名,newkey表示新的键名。
  • 对于这两个命令,如果旧键名key不存在,就会返回错误。
  • 对于rename命令,如果命名后的newkey键名已经存在,那么会覆盖旧值。
  • 对于renamenx命令,如果newkey键名已经存在,那么会返回0,不执行修改命令。

1.5.删除键

用del命令删除键后,该键所对应的值也会一并删除

del key [key ...]

1.5.关于键存活时间命令

如果设置了键的生存时间,那么到时间后这个键就会被删除,通过pttlttl命令能查看指定键的生存时间

pttl key
ttl key
  • pttl以毫秒为单位返回该key的生存时间,ttl以秒为单位返回该key的生存时间
  • 如果对应的key不存在,则这两个命令都返回‒2
  • 如果key存在,但没有设置生存时间(一直生存),那么这两条命令返回‒1

2.HyperLogLog相关命令

2.1.用pfadd添加键

通过pfadd命令,能把键值对添加到HyperLogLog对象中,添加后即可进行基数统计。

语法:

PFADD key element [element ...]

2.2.用pfcount统计基数值

用pfcount可以查看一个或多个键的基数

语法:

PFCOUNT key [key ...]

示例:

127.0.0.1:6379> pfadd name1 1 2 3
(integer) 1
127.0.0.1:6379> pfadd name2 3 4 5
(integer) 1
127.0.0.1:6379> pfcount name1 name2
(integer) 5

如果key不存在则返回0

2.3.用pfmerge进行合并操作

通过pfmerge命令,能把多个HyperLogLog合并成一个

语法:

PFMERGE destkey sourcekey [sourcekey ...]

sourcekey是待合并的对象,可以是一个或多个;destkey是合并后HyperLogLog的键,如果合并前destkey不存在,则会新建一个。

示例:

127.0.0.1:6379> PFMERGE name10 name1 name2
OK
127.0.0.1:6379> PFCOUNT name10
(integer) 5

2.4.统计网站访问人数

在网站分析方面有两个统计指标:第一个是统计总访问量,第二个是统计访问人数。统计总访问量比较好办,每来一次访问加1即可,而在统计访问人数时需要去除重复,比如某人在某天内访问了100次,但在统计访问人数时只能算作一次。

通过如下的pfadd和pfcount命令,大家可以掌握用HyperLogLog统计访问人数的做法。

3.排序相关命令

排序是数据库必备的命令,在Redis这种NoSQL数据库里可以通过本节给出的命令对列表、集合与有序集合等格式的数据进行升序或降序的排列操作。

3.1.用sort命令进行排序

在sort命令里,可以通过asc参数进行升序排列操作,通过desc参数进行降序排列操作。

127.0.0.1:6379> LPUSH sa 100 110 150 190 80 140
(integer) 6
127.0.0.1:6379> SORT sa asc
1) "80"
2) "100"
3) "110"
4) "140"
5) "150"
6) "190"
127.0.0.1:6379> SORT sa desc
1) "190"
2) "150"
3) "140"
4) "110"
5) "100"
6) "80"

排序命令不会对列表本身的数据产生影响:

127.0.0.1:6379> LRANGE sa 0 -1
1) "140"
2) "80"
3) "190"
4) "150"
5) "110"
6) "100"

使用sort命令对集合元素进行降序操作:

127.0.0.1:6379> SORT name6 desc alpha
1) "dayi"
2) "dasisi"
3) "dasansan"
4) "daerr"

3.2.用by参数指定排序模式

在之前sort相关的范例中,有的是以数值的方式排序的,如果加上alpha参数,则可以通过字母顺序进行排序,此外还可以通过by参数设置排序的模式。

127.0.0.1:6379> LPUSH vip vip1 vip3 vip2 vip4
(integer) 4
127.0.0.1:6379> SORT vip by vip*
1) "vip1"
2) "vip2"
3) "vip3"
4) "vip4"

这里是对数字进行排序,所以不用加alpha。

3.3.用limit参数返回部分排序结果

在之前的排序操作里,返回的是排好序的所有元素。在一些场景里,无须返回所有的排序结果,而只需返回部分排好序的元素,此时就可以用limit参数。

语法:

[LIMIT offset count]
127.0.0.1:6379> RPUSH num 1 2 4 6 8 9 5
(integer) 7
127.0.0.1:6379> SORT num limit 0 4 asc
1) "1"
2) "2"
3) "4"
4) "5"
127.0.0.1:6379> SORT num limit 3 3 asc
1) "5"
2) "6"
3) "8"

3.4.get参数用法

通过sort命令里的get参数可以用排序的结果作为键,再去获取对应的值。

127.0.0.1:6379> lpush score 100 80 90 85
(integer) 4
127.0.0.1:6379> set 100 Peter-100
OK
127.0.0.1:6379> set 80 Mary-80
OK
127.0.0.1:6379> set 90 Tim-90
OK
127.0.0.1:6379> set 85 John-85
OK
127.0.0.1:6379> sort score  get *
1) "Mary-80"
2) "John-85"
3) "Tim-90"
4) "Peter-100"

3.5.通过store参数提升性能

对于给定的数据对象,如果经常需要用相对固定的模式进行排序,就可以用store参数来缓存结果,这样每次做相同的排序动作时就不需要耗费资源从头做起了,可以从缓存中直接得到结果。

127.0.0.1:6379> sort score desc store score-desc
(integer) 4
127.0.0.1:6379> lrange score-desc 0 -1
1) "100"
2) "90"
3) "85"
4) "80"
127.0.0.1:6379>

sort命令对score进行降序排列,同时还用store参数把排序的结果保存到score-desc里,通过lrange命令能看到缓存结果score-desc对象中的数据。


相关实践学习
基于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
目录
相关文章
|
2月前
|
NoSQL Java Redis
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
这篇文章介绍了Redis的基本命令,并展示了如何使用Netty框架直接与Redis服务器进行通信,包括设置Netty客户端、编写处理程序以及初始化Channel的完整示例代码。
64 1
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
|
1月前
|
存储 NoSQL Java
Redis命令:列表模糊删除详解
通过本文的介绍,我们详细探讨了如何在Redis中实现列表的模糊删除。虽然Redis没有直接提供模糊删除命令,但可以通过组合使用 `LRANGE`和 `LREM`命令,并在客户端代码中进行模糊匹配,来实现这一功能。希望本文能帮助你在实际应用中更有效地操作Redis列表。
52 0
|
2月前
|
缓存 NoSQL 测试技术
Redis如何解决频繁的命令往返造成的性能瓶颈!
Redis如何解决频繁的命令往返造成的性能瓶颈!
|
2月前
|
缓存 NoSQL Redis
Redis命令:列表模糊删除详解
Redis命令:列表模糊删除详解
73 3
|
2月前
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
347 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
2月前
|
NoSQL Redis 数据安全/隐私保护
Redis 命令
10月更文挑战第15天
34 0
|
3月前
|
监控 NoSQL Redis
redis-server --service-install redis.windows.conf --loglevel verbose 命令的作用是什么?
redis-server --service-install redis.windows.conf --loglevel verbose 命令的作用是什么?
147 3
|
3月前
|
存储 缓存 NoSQL
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
82 0
|
4月前
|
存储 消息中间件 NoSQL
Redis命令详解以及存储原理
Redis命令详解以及存储原理
|
5月前
|
存储 缓存 NoSQL
Redis 全局通用命令整理
Redis 全局通用命令整理
71 10