Redis操作与全局命令详解
连接和操作Redis服务
Redis服务启动完成后,可以使用redis-cli
工具连接并操作Redis服务。redis-cli
提供两种连接Redis服务器的方式:
1. 单次操作
通过redis-cli
的单次操作模式,直接执行命令并得到结果。例如:
redis-cli -h {host} -p {port} {command}
这种方式每次操作都需要重新连接一次Redis。
2. 命令行操作
通过redis-cli
连接到Redis服务后,可以进入命令行模式,执行多条命令。例如:
redis-cli -h {host} -p {port}
连接后所有操作都可以在命令行模式下进行:
如果不指定-h
参数,默认连接127.0.0.1
;如果不指定-p
参数,默认连接端口6379
。
停止Redis服务
可以通过shutdown
命令来停止Redis服务。例如:
./redis-cli -p 6379 shutdown
执行该命令后,Redis服务端将会显示:
注意事项
除了shutdown
命令,还可以通过kill
进程号的方式关闭Redis服务,但强烈不建议使用kill -9
强制杀死Redis服务。这会导致数据不持久化且资源不能优雅释放,极端情况下可能会造成数据丢失。
可以在命令行中执行shutdown
指令:
shutdown
命令还有一个参数,代表是否在关闭Redis前生成持久化文件,缺省是save
,如果是nosave
则不生成持久化文件。
Redis全局命令
Redis支持的value类型包括了String、哈希表、列表、集合等,这使得Redis能够在实际业务场景中得到广泛的应用。
keys命令
keys
命令用于查看所有键(支持通配符):
keys *
keys L*
keys
命令时间复杂度是O(n),当Redis保存大量键时会影响性能,线上环境禁止使用,推荐使用dbsize
。
dbsize命令
dbsize
命令返回当前数据库中键的总数:
dbsize
命令时间复杂度是O(1)。
exists命令
检查键是否存在,存在返回1,不存在返回0。
del命令
删除键,无论值是什么数据结构类型,del
命令都可以将其删除。返回删除键个数,删除不存在键返回0,支持删除多个键。
键过期命令
expire
命令用于设置键的过期时间(单位:秒)。ttl
命令返回键的剩余过期时间,有3种返回值:
- 大于等于0的整数:键剩余的过期时间。
- -1:键没设置过期时间。
- -2:键不存在。
其他相关命令还有expireat
、pexpire
、pexpireat
、pttl
、persist
等。
注意事项
- 如果
expire key
的键不存在,返回结果为0。 - 如果过期时间为负值,键会立即被删除。
persist
命令可以清除键的过期时间。
Redis不支持二级数据结构(例如哈希、列表)内部元素的过期功能。
type命令
返回键的数据结构类型。例如:
type mykey
randomkey命令
随机返回一个键:
rename命令
键重命名:
rename oldkey newkey
如果新键已经存在,值将被覆盖。为了防止被强行rename
,可以使用renamenx
命令,确保只有newKey
不存在时候才被覆盖。
重命名键期间会执行del
命令删除旧的键,如果键对应的值比较大,会存在阻塞Redis的可能性。
键名的生产实践
设计合理的键名有助于防止键冲突和项目的可维护性。推荐的方式是使用“业务名:对象名: id : [属性]”作为键名,例如:
mall:order:1
mall:order:1:name
如果当前Redis只被一个业务使用,可以简化键名。能描述键含义的前提下适当减少键的长度,从而减少内存浪费。