本文的操作环境搭建过程见:Redis的主从复制搭建-CSDN博客

目录

 一、redis 常用数据类型的基本操作

1、String 数据类型操作

(1)设置值 

(2)获取值

(3)删除值

(4)设置具有过期时间的值

(5)同时设置多个值

(6)同时获取多个值

(7)返回设置值的长度

2、List 数据类型操作

(1)插入数据

(2)获取数据

(3)移除并获取元素

3、Hash 数据类型操作

(1)设置值

(2)获取值

(3)删除数据

4、set 数据类型操作

(1)添加元素

(2)获取元素

(3)删除元素

(4)集合运算

5、zset 数据类型操作

(1)添加数据

(2)查询数据

(3)移除数据

二、键管理操作

三、服务器管理与信息

四、持久化相关操作

五、一些使用技巧

六、待补充


 一、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) ""                     # 客户端名称

################################


六、待补充

Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐