linux redis 字符串增删改查
清屏:
clear
返回上一级目录:
cd ..
数据库
数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库
一、 增 / 改
1.1 单个键值对:set
set key value
示例:
set name zhx
set name "zhx" //同一个key值,后面的set 会覆盖前面的value
set age 24
1.2 多个键值对:mset
mset key value key value .....
二、删
2.1 删除:del
del key
示例:
del name
del age
三、改
3.1 重命名:rename
rename key newname
示例:
rename age TestAge
3.2 数字自增1: INCR
Increment 的缩写,中文表示:“增量”。redis数据库执行后,自增1
-
Redis INCR命令将 key 中储存的数字加上1。
-
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR命令。
-
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
3.3 数字增加指定值:INCRBY
将 key 中储存的数字加上指定的增量值。
-
Redis INCRBY命令将 key 中储存的数字加上加上指定的增量值。
-
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY命令。
-
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
3.4 数字自减1: DECR
decrease 的缩写,中文表示:“减少”。redis数据库执行后,自减1
-
Redis DECR命令将 key 中储存的数字减少1。
-
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR命令。
-
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
3.5 数字减少指定值:DECRBY
将 key 中储存的数字减去指定的值。
-
Redis DECRBY 命令将 key 中储存的数字减去指定的值。
-
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 命令。
-
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
3.6 追加:append
如果 key 已经存在并且是一个字符串, append 命令将 value 追加到 key 原来的值的末尾。
如果 key 不存在, append 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
四、查
4.1 查询:get
get key
示例:
get name
get age
4.1 多个查询:mget
mget key1 key2
示例:
mget name age ...
4.2 查询所有:keys *
keys *
4.3 模糊查询:keys xxx*
redis 127.0.0.1:6379> SET runoob1 redis
OK
redis 127.0.0.1:6379> SET runoob2 mysql
OK
redis 127.0.0.1:6379> SET runoob3 mongodb
OK
查找以 runoob 为开头的 key:
redis 127.0.0.1:6379> KEYS runoob*
1) "runoob3"
2) "runoob1"
3) "runoob2"
4.4 批量查询:scan 命令提供了 count 参数,可以控制每次遍历的集合数。
SCAN cursor [MATCH pattern] [COUNT count]
示例:
scan 0 MATCH * COUNT 100 //从游标0开始查,遍历到100
scan 5 MATCH * COUNT 5 //从游标5开始查,遍历到5
由于 Redis 是单线程在处理用户的命令,而 Keys 命令会一次性遍历所有 Key,于是在 命令执行过程中,无法执行其他命令。这就导致如果 Redis 中的 key 比较多,那么 Keys 命令执行时间就会比较长,从而阻塞 Redis。
所以很多教程都推荐使用 Scan 命令来代替 Keys,因为 Scan 可以限制每次遍历的 key 数量。
Count 参数越大,交互次数越少。但是Redis 阻塞时间也会越长,需要取舍。
极限一点,Count 参数和总 Key 数一致时,Scan 命令就和 Keys 效果一样了。
4.5 是否存在:exists
exists key
示例:
exists name
4.6 查看数据类型:type
type key
示例:
type age
4.7 字符串取部分长度: getrange
getrange key star end
示例:
getrange name 0 6 //取第1~第7个字符
getrange name 3 8 //取第4~第9个字符
getrange name 0 -1 //取所有字符,和 get name 相同的效果
4.8 先取后存:getset
设置指定 key 的值,并返回 key 的旧值。
redis> GETSET db mongodb # 没有旧值,返回 nil
(nil)
redis> GET db
"mongodb"
redis> GETSET db redis # 返回旧值 mongodb
"mongodb"
redis> GET db
"redis"
4.9 字符串长度:strlen
strlen key
五、其他
5.1 设置key生命周期:expire
用于设置 key 的过期时间,key 过期后将不再可用。单位以秒计。
expire key 10
5.2 查看生命周期:ttl、pttl
ttl key //按秒返回
pttl key //按毫秒返回
5.3 永久生命周期:persist
persist key
5.4 将 key 移动到给定的数据库:move
move key db
示例:
move name 1
- 如果key不存在,则移动失败
- 如果两个数据库存在同名key,则不执行移动