引言
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"