第21章 Redis入门必备:快速上手常用命令与应用示例【库、key、字符串】

引言

Redis是一种高性能的键值存储数据库,以其快速的读取和写入速度受到广泛欢迎。由于其简单易用的特性,Redis不仅适用于缓存、会话管理,还可以用于消息队列、实时分析等多种场景。本文旨在为Redis入门者提供一个实用的指南,通过介绍常用命令和应用实例,帮助读者快速上手并掌握Redis的基本操作,无论是开发新项目还是优化现有系统,Redis都将成为您不可或缺的利器。让我们一起探索Redis的强大功能,开启高效数据管理的旅程!

key操作

获得符合规则的键名列表

sql 复制代码
KEYS pattern

pattern 支持 glob 风格通配符:

set 设置key的值语法

vbnet 复制代码
set key value
ruby 复制代码
# 示例 127.0.0.1:6379> set name zhangsan
 OK 
127.0.0.1:6379> set age 25
OK

get 获取key的值

vbnet 复制代码
get key
arduino 复制代码
# 示例 127.0.0.1:6379> get name "zhangsan"

删除key

css 复制代码
del key
shell 复制代码
# 示例 127.0.0.1:6379> del name (integer) 1

exists 判断key是否存在

arduino 复制代码
exists key
sql 复制代码
# 判断key是否存在,存在返回1,不存在返回0 
# 示例 127.0.0.1:6379> exists name (integer) 1
 127.0.0.1:6379> exists title
 (integer) 0

type 获取key类型

bash 复制代码
type key
ruby 复制代码
# 获取key存储的值的类型 
# 示例 127.0.0.1:6379> type name string 
127.0.0.1:6379> type age string

expire 设置key有效期

vbnet 复制代码
expire key
bash 复制代码
# 设置key的生命周期 # expire key 表示以秒为单位设置声明周期 
# 示例 127.0.0.1:6379[1]> expire login 60 
(integer) 1 
127.0.0.1:6379[1]> ttl login
 (integer) 47

tll 查看key有效期

vbnet 复制代码
ttl key
vbnet 复制代码
# 查询key的生命周期 # 大于0 :生命周期单位为秒, # 等于-1:永久有效 # 等于-2:该key不存在 # pttl key表示秒为单位 
# 示例 127.0.0.1:6379> ttl name
 (integer) -1 
127.0.0.1:6379> ttl title
 (integer) -2

rename 重命名key

lua 复制代码
rename key newkey
ruby 复制代码
# 重命名key,如果newkey已经存在,修改后则替换新key的值 
# 示例 127.0.0.1:6379> set title "redis test" 
OK 
127.0.0.1:6379> exists title
(integer) 1 
127.0.0.1:6379> rename title biaoti 
OK 
127.0.0.1:6379> get biaoti
 "redis test"

renamenx 重命名不存在的key

vbnet 复制代码
renamenx key newkey
ruby 复制代码
# 重命名key,如果newkey已经存在则不修改。 # nx表示not exists 
# 示例 127.0.0.1:6379> keys * 
1) "biaoti" 
2) "age" 
3) "name" 
127.0.0.1:6379> renamenx biaoti name
 (integer) 0

persist 设置key永久有效

vbnet 复制代码
persist key
ruby 复制代码
# 设置key永久有效 
# 示例 127.0.0.1:6379> set login on
 OK 127.0.0.1:6379> expire login 60 
(integer) 1 
127.0.0.1:6379> ttl login
 (integer) 55 
127.0.0.1:6379> persist login 
(integer) 1 
127.0.0.1:6379> ttl login
 (integer) -1

move 把key移动到其他库

arduino 复制代码
move key db
shell 复制代码
# 把key移动到另一个数据库,db为整数 # 示例

库操作

dbsize 查看当前有多少个key

复制代码
dbsize
bash 复制代码
# 查看当前有多少个key 
# 示例 127.0.0.1:6379> dbsize 12

select 选择库

csharp 复制代码
select db
ruby 复制代码
# 选择使用哪个数据库,db为整数 # 默认有16个数据库0~15,如果想修改数据库数量,修改redis.conf配置文件的databases值 
# 示例 127.0.0.1:6379> select 1 
OK 
127.0.0.1:6379[2]> select 15 
OK

flushdb 删除选中数据库中的key

复制代码
flushdb
ruby 复制代码
# 删除当前选择数据库中的所有key 
# 示例 127.0.0.1:6379[1]> keys * 
1) "biaoti" 
127.0.0.1:6379[1]> flushdb 
OK 
127.0.0.1:6379[1]> keys *
 (empty list or set)

flushall 删除所有库的key

复制代码
flushall
csharp 复制代码
# 删除所有数据库中的key 
# 示例 127.0.0.1:6379[1]> flushall 
OK 127.0.0.1:6379[1]> select 0 
OK 
127.0.0.1:6379> keys * 
(empty list or set)

字符串操作:

set 设置kv、效期、判断key是否存在

set key value ex 秒数|px 毫秒数 nx|xx

bash 复制代码
# 设置kv时也可以设置有效期和判断key是否存在
# ex和px不要同时写,否则以后面有效期为准
# nx表示key不存在时执行操作
# xx表示key存在时执行操作

# 示例

mset 一次性输入多个kv

ruby 复制代码
mset key1 value1 key2 value2......
# 一次性输入多个key-value

# 示例
127.0.0.1:6379> mset x 1 y 2 z 3
OK
127.0.0.1:6379> keys *
1) "y"
2) "z"
3) "x"

setrange 修改偏移字节值为valuev

ruby 复制代码
setrange key offset value
# 把字符串的偏移字节改为value
# 如果偏移量大于字符长度,中间字符自动补0x00

# 示例
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> setrange name 5 ***
(integer) 8
127.0.0.1:6379> get name
"zhang***"

append 在key的值后面追加字符串

ruby 复制代码
append key value
# 在key的值后面追加value字符串

# 示例
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> append name "@126.com"
(integer) 16
127.0.0.1:6379> get name
"zhangsan@126.com"

getrange 获取key值的部分内容

ruby 复制代码
getrange key start stop
# 获取key值的一部分内容
# start表示起始位置
# stop表示结束位置,可以为为负数,表示从最后数起
# start>length 空字符串
# stop>length 截取到结尾

# 示例
127.0.0.1:6379> set title "hello world"
OK
127.0.0.1:6379> getrange title 6 11
"world"
127.0.0.1:6379> getrange title 0 -7
"hello"

getset 设置新值返回旧值

ruby 复制代码
getset key newvalue
# 设置新值,并返回旧值

# 示例
127.0.0.1:6379> set login on
OK
127.0.0.1:6379> get login
"on"
127.0.0.1:6379> getset login off
"on"
127.0.0.1:6379> get login
"off"

incr/decr 指定key的值加/减1

ruby 复制代码
incr/decr key
# 指定key的值加/减1,返回结果
# key不存在时,自动创建并加减1
# key的值为字符串时无效

# 示例
127.0.0.1:6379> set num 100
OK
127.0.0.1:6379> incr num
(integer) 101
127.0.0.1:6379> decr num 
(integer) 100

incrby/decrby 指定key的值加/减number

ruby 复制代码
incrby/decrby key number
# 指定key的值加减number大小

# 示例
127.0.0.1:6379> set num 100
OK
127.0.0.1:6379> incrby num 50
(integer) 150
127.0.0.1:6379> decrby num 100
(integer) 50

incrbyfloat 指定key的值加浮点数

ruby 复制代码
incrbyfloat key floatnumber
# 指定key的值加浮点数

# 示例
127.0.0.1:6379> set num 10
OK
127.0.0.1:6379> incrbyfloat num 0.5
"10.5"
127.0.0.1:6379> incrbyfloat num -1.5
"9"

setbit 设置二进制位上的值

ruby 复制代码
setbit key offset value
# 设置offset对应二进制位上的值
# 返回改位的旧值
# 如果offset过大则会在中间填充0
# offset最大为2^32-1,即512M

# 示例
127.0.0.1:6379> set letter A
OK
127.0.0.1:6379> setbit letter 2 1
(integer) 0
127.0.0.1:6379> get letter
"a"
# 把0100 0001(65)改为0110 0001(97)即把大写A改为了小写a

getbit 获取二进制位上的值

ruby 复制代码
getbit key offset
# 获取二进制offset对应位的值

# 示例
127.0.0.1:6379> set letter A
OK
127.0.0.1:6379> getbit letter 0
(integer) 0
127.0.0.1:6379> getbit letter 1
(integer) 1
127.0.0.1:6379> getbit letter 7
(integer) 1

bitop 对多个key逻辑操作

ruby 复制代码
bitop operation destkey key1 [key2 ......]
# 对key1 key2 keyN做operation,并把结果保存到destkey 上
# operation有AND、OR、NOT、XOR

# 示例
127.0.0.1:6379> setbit lower 2 1
(integer) 0
127.0.0.1:6379> setbit upper 2 0
(integer) 0
127.0.0.1:6379> set letter A
OK
127.0.0.1:6379> bitop or letter letter lower
(integer) 1
127.0.0.1:6379> get letter
"a"
相关推荐
我命由我123454 分钟前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
SelectDB26 分钟前
Apache Doris 与 SelectDB 是什么关系?从开源技术到面向 Agent 的极速分析数据库
大数据·数据库·数据分析
小南家的青蛙27 分钟前
华为云DCS全形态原生Redis命令兼容性测试方案
redis·华为云·兼容性·兼容性测试·dcs
xiaoqiMikko41 分钟前
Redis 实战(三):持久化出错 —— fork 失败、磁盘写满、AOF 膨胀与损坏,逐个复现(6.2.4)
redis·后端
VimorphTech43 分钟前
文本已经改了,旧的音频生成结果还能回写吗?
java·数据库·mybatis
SelectDB44 分钟前
存算分离冷查询提速 7.5 倍!Apache Doris 4.2 Peer Read 实现跨计算组缓存复用
大数据·数据库·数据分析
盛世宏博智慧档案1 小时前
一站式智慧档案解决方案,如何实现防火防盗漏水多维度安全监测实践
服务器·网络·数据库
IT规划师1 小时前
面试中被嘲笑Token放在redis里,该如何应对?
redis·面试
数据库小学妹1 小时前
MySQL磁盘IO瓶颈:iostat与刷脏fsync
数据库·mysql·性能优化