第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"
相关推荐
miss writer21 分钟前
Redis分布式锁释放锁是否必须用lua脚本?
redis·分布式·lua
Mr.131 小时前
数据库的三范式是什么?
数据库
Cachel wood1 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Python之栈1 小时前
【无标题】
数据库·python·mysql
风_流沙1 小时前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
亽仒凣凣2 小时前
Windows安装Redis图文教程
数据库·windows·redis
亦世凡华、2 小时前
MySQL--》如何在MySQL中打造高效优化索引
数据库·经验分享·mysql·索引·性能分析
YashanDB2 小时前
【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页
数据库·yashandb·崖山数据库
ProtonBase2 小时前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
希忘auto3 小时前
详解Redis的常用命令
redis·1024程序员节