Redis 的基本操作
本文记录了一些redis的常用操作命令
·
本文的操作环境搭建过程见:Redis的主从复制搭建-CSDN博客
目录
一、redis 常用数据类型的基本操作
1、String 数据类型操作
(1)设置值
set testkey1 "hello world"
(2)获取值
get testkey1
(3)删除值
# 可以同时删除多个 del key1 key2 key3
del testkey1
操作示例:
127.0.0.1:6379> set testkey1 "hello world"
OK
127.0.0.1:6379> get testkey1
"hello world"
127.0.0.1:6379> del testkey1
(integer) 1
127.0.0.1:6379> get testkey1
(nil)
127.0.0.1:6379>
(4)设置具有过期时间的值
setex testkey1 10 "hello world"
操作示例:
# 设置值并指定过期时间(秒)
127.0.0.1:6379> setex testkey1 10 "hello world"
OK
127.0.0.1:6379> get testkey1
"hello world"
127.0.0.1:6379> get testkey1
"hello world"
127.0.0.1:6379> get testkey1
"hello world"
127.0.0.1:6379> get testkey1
"hello world"
127.0.0.1:6379> get testkey1
(nil)
127.0.0.1:6379>
(5)同时设置多个值
mset key1 value1 key2 value2 key3 value3
(6)同时获取多个值
mget key1 key2 key3
(7)返回设置值的长度
strlen key1
操作示例:
127.0.0.1:6379> mset key1 value1 key2 value2 key3 value3
OK
127.0.0.1:6379> mget key1 key2 key3
1) "value1"
2) "value2"
3) "value3"
127.0.0.1:6379> strlen key1
(integer) 6
127.0.0.1:6379>
2、List 数据类型操作
(1)插入数据
# 将数据插入到 testlist1 列表的头部
lpush testlist1 num6 num5 num4 num3 num2 num1
# 此时的 testlist1列表的数据内容【num6 num5 num4 num3 num2 num1】
# 将数据插入到 testlist1 列表的尾部
rpush testlist1 num7 num8 num9
# 此时的 testlist1列表的数据内容【num9 num8 num7 num6 num5 num4 num3 num2 num1】
(2)获取数据
# 获取数据长度
llen testkey1
# 获取获取列表指定范围内的元素,0 表示第一个元素,-1 表示最后一个元素
LRANGE testlist1 0 -1
# 通过索引获取列表中的元素
LINDEX testlist1 2
(3)移除并获取元素
# 获取并删除左端的值
lpop testlist1
# 获取并删除右端的值
rpop testlist1
操作示例:
127.0.0.1:6379> lpush testlist1 num6 num5 num4 num3 num2 num1
(integer) 6
127.0.0.1:6379> rpush testlist1 num7 num8 num9
(integer) 9
127.0.0.1:6379> LLEN testlist1
(integer) 9
127.0.0.1:6379> LRANGE testlist1 0 -1
1) "num1"
2) "num2"
3) "num3"
4) "num4"
5) "num5"
6) "num6"
7) "num7"
8) "num8"
9) "num9"
127.0.0.1:6379> LRANGE testlist1 0 1
1) "num1"
2) "num2"
127.0.0.1:6379> LINDEX testlist1 0
"num1"
127.0.0.1:6379> LINDEX testlist1 2
"num3"
127.0.0.1:6379> lpop testlist1
"num1"
127.0.0.1:6379> lpop testlist1
"num2"
127.0.0.1:6379> rpop testlist1
"num9"
127.0.0.1:6379> rpop testlist1
"num8"
127.0.0.1:6379> lrange testlist1 0 -1
1) "num3"
2) "num4"
3) "num5"
4) "num6"
5) "num7"
127.0.0.1:6379>
3、Hash 数据类型操作
(1)设置值
hset userinfo name xiaoming age 18 sex man
(2)获取值
# 获取 key 中的单个字段的值
hget userinfo name
# 获取 key 中的多个字段的值
hmget userinfo name age
# 获取 key 中所有字段和值
hgetall userinfo
# 获取 key 中的字段
hkeys userinfo
# 获取 key 中值的
hvals userinfo
# 获取 key 中的字段数量
hlen userinfo
(3)删除数据
hdel userinfo name age
操作示例:
127.0.0.1:6379> hset userinfo name xiaoming age 18 sex man
(integer) 3
127.0.0.1:6379> hget userinfo name
"xiaoming"
127.0.0.1:6379> hmget userinfo name age
1) "xiaoming"
2) "18"
127.0.0.1:6379> hgetall userinfo
1) "name"
2) "xiaoming"
3) "age"
4) "18"
5) "sex"
6) "man"
127.0.0.1:6379> hkeys userinfo
1) "name"
2) "age"
3) "sex"
127.0.0.1:6379> hvals userinfo
1) "xiaoming"
2) "18"
3) "man"
127.0.0.1:6379> hlen userinfo
(integer) 3
127.0.0.1:6379> hdel userinfo name age
(integer) 2
127.0.0.1:6379> hgetall userinfo
1) "sex"
2) "man"
127.0.0.1:6379>
4、set 数据类型操作
(1)添加元素
sadd setkey 1 2 3 4 5
(2)获取元素
# 获取集合中的所有元素
smembers setkey
# 判断某个元素是否在集合中
sismember setkey 2
# 获取集合中元素数量
scard setkey
(3)删除元素
# 删除集合中为3的值
srem setkey 3
(4)集合运算
# 返回多个集合交集
sinter setkey setkey1
# 返回多个集合并集
sunion setkey setkey1
# 返回多个集合差集
sdiff setkey1 setkey
操作示例:
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "4"
4) "5"
127.0.0.1:6379> smembers setkey1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> sinter setkey setkey1
1) "1"
2) "2"
3) "4"
4) "5"
127.0.0.1:6379> sunion setkey setkey1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> sdiff setkey1 setkey
1) "3"
2) "6"
127.0.0.1:6379>
5、zset 数据类型操作
(1)添加数据
zadd zsetkey 20 num1
(2)查询数据
# 按分数升序返回索引区间的元素
zrange zsetkey 0 -1
# 获取有序集合的元素数量
zcard zsetkey
(3)移除数据
zrem zsetkey tt
操作示例:
127.0.0.1:6379> zadd zsetkey 20 num1
(integer) 1
127.0.0.1:6379> zadd zsetkey 20 num1
(integer) 0
127.0.0.1:6379> zadd zsetkey 30 num1
(integer) 0
127.0.0.1:6379> zadd zsetkey 30 num2 40 tt 50 op
(integer) 3
127.0.0.1:6379> zrange zsetkey 0 -1
1) "num1"
2) "num2"
3) "tt"
4) "op"
127.0.0.1:6379> zcard zsetkey
(integer) 4
127.0.0.1:6379> zrem zsetkey tt
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1
1) "num1"
2) "num2"
3) "op"
127.0.0.1:6379>
二、键管理操作
==============================
# (1)检查键是否存在
exists 键名
# 示例:
127.0.0.1:6379> exists test
(integer) 1
127.0.0.1:6379> exists test129
(integer) 0
127.0.0.1:6379>
==============================
# (2)设置键的过期时间,单位ms
expire 键名 时间
# 示例:
127.0.0.1:6379> expire test77 300
(integer) 1
==============================
# (3)查看键的过期时间,单位ms
ttl 键名
# 示例:
127.0.0.1:6379> ttl test77
(integer) 292
127.0.0.1:6379> ttl test77
(integer) 291
127.0.0.1:6379> ttl test77
(integer) 287
127.0.0.1:6379>
==============================
# (4)重命名键
rename 旧键名 新键名
# 示例:
127.0.0.1:6379> get test55
"55"
127.0.0.1:6379> rename test55 test55r
OK
127.0.0.1:6379> get test55r
"55"
127.0.0.1:6379> get test55
(nil)
127.0.0.1:6379>
==============================
三、服务器管理与信息
===========================
# (1)获取服务器总的信息
info
# 示例:
127.0.0.1:6379> info
# Server
redis_version:7.2.4
redis_git_sha1:00000000
......
===========================
# (2)获取参数配置
config get 参数名称
# 示例:
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "0"
127.0.0.1:6379>
===========================
# (3)修改参数配置--临时
config set 参数名称 参数值
# 示例:
127.0.0.1:6379> CONFIG GET timeout
1) "timeout"
2) "0"
127.0.0.1:6379> CONFIG set timeout 300
OK
127.0.0.1:6379> CONFIG GET timeout
1) "timeout"
2) "300"
===========================
# (4)清空当前数据库--危险,慎用!慎用!慎用!慎用!慎用!慎用!慎用!
flushdb
===========================
# (5)切换数据库,redis默认 0 ~ 15 个数据库,默认使用0
select 数据库号
# 示例:
127.0.0.1:6379> select 1
OK
===========================
四、持久化相关操作
####################################
# (1)手动触发RDB持久化(后台)
bgsave
# 示例:
127.0.0.1:6379> bgsave
Background saving started
####################################
# (2)手动触发RDB持久化(前台 - 阻塞)
save
# 示例:
127.0.0.1:6379> save
OK
####################################
# (3)上次保存时间
lastsave
# 示例:
127.0.0.1:6379> lastsave
(integer) 1748922010
####################################
# (4)启用AOF(需要修改配置)
config set appendonly yes
127.0.0.1:6379> config set appendonly yes
OK
####################################
# (5)强制AOF重写
bgrewriteaof
127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started
####################################
五、一些使用技巧
################################
# (1)管道操作,减少网络往返
echo -e "命令\n 命令\n" | ./redis-cli --pipe -a 密码
# 示例:
[redis@openEuler101 bin]$ echo -e "SET key1 value1\n GET key1" | ./redis-cli --pipe -a 密码
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 2
[redis@openEuler101 bin]$ ./redis-cli -a @hz0aroot
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379>
################################
# (2)批量操作
./redis-cli -a 密码 批量操作命令
# 示例:
[redis@openEuler101 bin]$ ./redis-cli -a 密码 mget key1 test test22
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
1) "value1"
2) "123"
3) "22"
[redis@openEuler101 bin]$
################################
# (3)设置慢查询阈值(毫秒)
config set slowlog-log-slower-than 时间
# 示例:
127.0.0.1:6379> config set slowlog-log-slower-than 100
OK
################################
# (4)查看慢查询
slowlog get 条目数量
# 示例:
127.0.0.1:6379> slowlog get 1
1) 1) (integer) 14 # 日志ID
2) (integer) 1685800000 # 时间戳
3) (integer) 120 # 执行时间(微秒)
4) 1) "KEYS" # 命令
2) "*"
5) "127.0.0.1:12345" # 客户端
6) "" # 客户端名称
################################
六、待补充
更多推荐
所有评论(0)