前言

整理下在linux中操作redis中的一些命令

1、统计个数

redis中名称含有OMP_OFFLINE的key的个数;

1
src/redis-cli keys "*OMP_OFFLINE*" | wc -l

2、批量删除

批量删除 0号数据库中名称含有OMP_OFFLINE的key:

1
src/redis-cli -n 0 keys "*OMP_OFFLINE*" | xargs src/redis-cli -n 0 del

在redis的客户端环境中并不支持批量删除。

可以把某个keys的结果全部输出到文件中,比如keys.log

1
redis-cli -p port -c command > keys.log

3、Redis常用命令介绍

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
keys '*' 匹配键所有的键. 模糊匹配 keys my* 取出所有已my开头的键
exists 判断是否键 exists name判断是否有name这个键是否存在
del 删除键 del name 删除name的键
expire 设置过期时间 expire key time
ttl key 查看键的过期时间
select database 选择数据库
move key dababase1 讲key移动dao database1中的数据库中
persist 取消键的过期时间
randomkey 随机返回一个键的值
rename 重命名一个键
type key 判断key的数据类型

4、Server

1
2
3
4
5
6
7
8
9
ping ping我们的主机能否链接 链接是否存活
echo 命令 echo demo直接输出
select 选择数据库 select 0-15个数据库
quit exit 退出链接
dbsize 返回数据库的键的个数
info 返回服务器相关信息
config get 返回服务配置信息
flush db 清空数据库
flushall 删除所有数据库中所有的键

5、过期时间设置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
redis> SET cache_page "www.google.com"
OK

redis> EXPIRE cache_page 30  # 设置过期时间为 30 秒
(integer) 1

redis> TTL cache_page    # 查看剩余生存时间
(integer) 23

redis> EXPIRE cache_page 30000   # 更新过期时间
(integer) 1

redis> TTL cache_page
(integer) 29996

6、redis命令错误码

基本上个人总结的规律,不代表官方标准,可能存在官方版本更新或者版本差异 0 表示操作失败

1
2
127.0.0.1:6379> exists test  # 不存在test的key
(integer) 0

1 表示操作成功

1
2
127.0.0.1:6379> exists str  # 存在str的key
(integer) 1

-1 表示没有过期时间

1
2
127.0.0.1:6379> ttl str    # 没设置过期时间
(integer) -1

-2 表示key不存在,一般是ttl使用,低于2.8版本仍然是-1,高于2.8版本是-2

1
2
127.0.0.1:6379> ttl test   #  test的key不存在 
(integer) -2

null 不存在值,表示这个key不存在

1
2
127.0.0.1:6379> get test   #  不存在test这个key因此返回值null 
(nil)

其他

1
2
3
4
5
127.0.0.1:6379> keys *    # 这个库下没有key,因此空的
(empty array)

127.0.0.1:6379> test      #  不存在的命令
(error) ERR unknown command `test`, with args beginning with:    

6.1 总结

比如删除某个不存在的key,是返回0,不是返回-2
有些场景,0表示操作失败,也隐约有不存在的意思,但是更多的是表示删除失败

1
2
127.0.0.1:6379> del test
(integer) 0

再比如删除成功,返回1

1
2
127.0.0.1:6379> del str
(integer) 1

会不会出现大于0的情况呢,会,不过通常是查询key的失效时间返回的,比如设置了失效时间100秒

1
2
3
4
127.0.0.1:6379> expire str 100
(integer) 1
127.0.0.1:6379> ttl str
(integer) 97

所以,整体来说,redis的返回值,基本上跟C/C++的返回值bool类型一样表示返回值的:
0表示失败
1表示成功