【redis】常用命令总结

开发一个新需求,需要将redis缓存从原有的以公司为key替换为以个人为key,在这过程中,接触到了通过命令行对redis进行操作,之前没有实战,正好是个积累学习的过程。

一 . Connection (连接)

  • AUTH (Auth password):通过设置配置文件中 requirepass 项的值(使用命令 CONFIG SET requirepass password ),可以使用
    密码来保护 Redis 服务器。如果开启了密码保护的话,在每次连接 Redis 服务器之后,就要使用 AUTH 命令解锁,解锁之后才能使用其他 Redis 命令。如果 AUTH 命令给定的密码 password 和配置文件中的密码相符的话,服务器会返回 OK 并开始接受命令输入。另一方面,假如密码不匹配的话,服务器将返回一个错误,并要求客户端需重新输入密码。
#设置密码
127.0.0.1:6379> config set requirepass 654321  #将密码设置为654321
OK
127.0.0.1:6379> quit                           #退出再连接,让新密码对客户端生效
[root@iZ283jrawloZ bin]# ./redis-cli -p 6379
127.0.0.1:6379> ping                           #未验证密码,提示错误,需要验证
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456                    #密码错误,提示无效的密码
(error) ERR invalid password
127.0.0.1:6379> auth 654321                    #密码正确,连接成功
OK
127.0.0.1:6379> ping                           #ping操作命令成功
PONG
  • ECHO (ECHO message):打印一个特定的信息 message ,测试时使用。
127.0.0.1:6379> echo "hello"
"hello"
127.0.0.1:6379> echo "goodbye"
"goodbye"
  • PING :使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。
#客户端与服务器连接正常
127.0.0.1:6379> ping                          
PONG                                          
#客户端与服务器连接不正常(网络不正常或服务器未能正常运行)
127.0.0.1:6379> ping                          
Could not connect to Redis at 127.0.0.1:6379: Connection refused        
  • SELECT (SELECT index):切换到指定的数据库,数据库索引号index用数字值指定,以0作为起始索引值。默认使用0号数据库。
127.0.0.1:6379> set db_number 0           #默认使用0号数据库
OK
127.0.0.1:6379> select 1                  #使用1号数据库
OK
127.0.0.1:6379[1]> get db_number          #已切换至1号数据库,命令提示符多了[1]
(nil)
127.0.0.1:6379[1]> set db_number 1     
OK
127.0.0.1:6379[1]> get db_number
"1"
127.0.0.1:6379[1]> select 3               #切换至3号数据库
OK
127.0.0.1:6379[3]> select 0               #命令提示符从[1]变成[3],再切换回默认数据库
OK
127.0.0.1:6379> 

二 . Server (服务器)

  • CLIENT GETNAME :返回连接设置的名字。因为新创建的连接默认是没有名字的, 对于没有名字的连接, CLIENT GETNAME 返回空白回复。
127.0.0.1:6379> client getname                #新连接默认没有名字
(nil)
127.0.0.1:6379> client setname connection1    #设置名字
OK
127.0.0.1:6379> client getname                #返回名字
"connection1"
  • CLIENT LIST :返回所有连接到服务器的客户端信息和统计数据。
127.0.0.1:6379> client list
id=2221941 addr=115.28.**.**:34696 fd=321 name= age=76816 idle=76816 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=2221942 addr=115.28.**.**:34698 fd=322 name= age=76816 idle=76799 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=get
id=2111339 addr=115.28.**.**:54388 fd=87 name= age=251748 idle=251748 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=2261669 addr=115.28.**.**:56662 fd=386 name= age=46217 idle=46217 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=zadd
id=2261670 addr=115.28.**.**:56664 fd=387 name= age=46217 idle=46217 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=2220106 addr=115.28.**.**:34420 fd=302 name= age=78658 idle=76946 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=get

返回多行字符串,每个已连接客户端对应一行,每行字符串由一系列 属性=值 形式的域组成,每个域以空格分开。域的含义如下:

  • addr : 客户端的地址和端口
  • fd : 套接字所使用的文件描述符
  • age : 以秒计算的已连接时长
  • idle : 以秒计算的空闲时长
  • flags : 客户端 flag (N表示未设置任何flag)
  • db : 该客户端正在使用的数据库 ID
  • sub : 已订阅频道的数量
  • psub : 已订阅模式的数量
  • multi : 在事务中被执行的命令数量
  • qbuf : 查询缓存的长度( 0 表示没有查询在等待)
  • qbuf-free : 查询缓存的剩余空间( 0 表示没有剩余空间)
  • obl : 输出缓存的长度
  • oll : 输出列表的长度(当输出缓存没有剩余空间时,回复被入队到这个队列里)
  • omem : 输出缓存的内存占用量
  • events : 文件描述符事件
  • cmd : 最近一次执行的命令

  • CLIENT KILL ip:port:关闭地址为ip:port的客户端。因为 Redis 使用单线程设计,所以当 Redis 正在执行命令的时候,不会有客户端被断开连接。如果要被断开连接的客户端正在执行命令,那么当这个命令执行之后,在发送下一个命令的时候,它就会收到一个网络错误,告知它自身的连接已被关闭。

  • CONFIG GET (CONFIG GET parameter) :用于获取redis服务器的配置参数。在2.4版本中,有些参数无法通过CONFIG GET访问,但在2.6版本中,所有的配置参数都可以用CONFIG GET访问。

# 查询所有的配置项
127.0.0.1:6379> config get *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) "654321"
  5) "masterauth"
  6) ""
  7) "cluster-announce-ip"
  8) ""
  9) "unixsocket"
 10) ""
 11) "logfile"
 12) "/var/redis/log/redis.log"
 13) "pidfile"
 14) "/var/redis/run/redis_6379.pid"
 15) "slave-announce-ip"
 16) ""

#查询所有以s开头的配置项
127.0.0.1:6379> config get s*
 1) "slave-announce-ip"
 2) ""
 3) "set-max-intset-entries"
 4) "512"
 5) "slowlog-log-slower-than"
 6) "10000"
 7) "slowlog-max-len"
 8) "128"
 9) "slave-priority"
10) "100"
11) "slave-announce-port"
12) "0"
13) "slave-serve-stale-data"
14) "yes"
15) "slave-read-only"
16) "yes"
17) "stop-writes-on-bgsave-error"
18) "no"
19) "slave-lazy-flush"
20) "no"
21) "supervised"
22) "no"
23) "syslog-facility"
24) "local0"
25) "save"
26) "900 1 300 10 60 10000"
27) "slaveof"
28) ""

#获取指定配置项
127.0.0.1:6379> config get save
1) "save"
2) "900 1 300 10 60 10000"
#上面 save 参数的三个值表示:在 900 秒内最少有 1 个 key 被改动,
或者 300 秒内最少有 10 个 key 被改动,又或者 60 秒内最少有 1000 个 key 被改动,
以上三个条件随便满足一个,就触发一次保存操作。
  • CONFIG RESTART :重置 INFO 命令中的某些统计数据,包括:
Keyspace hits (键空间命中次数)
Keyspace misses (键空间不命中次数)
Number of commands processed (执行命令的次数)
Number of connections received (连接服务器的次数)
Number of expired keys (过期key的数量)
Number of rejected connections (被拒绝的连接数量)
Latest fork(2) time(最后执行 fork(2) 的时间)
The aof_delayed_fsync counter(aof_delayed_fsync 计数器的值)
  • CONFIG REWRITE :对启动 Redis 服务器时所指定的 redis.conf 文件进行改写:因为 CONFIG SET 命令可以对服务器的当前配置进行修改, 而修改后的配置可能和 redis.conf 文件中所描述的配置不一样, CONFIG REWRITE 的作用就是通过尽可能少的修改, 将服务器当前所使用的配置记录到 redis.conf 文件中。
    对 redis.conf 文件的重写是原子性的, 并且是一致的: 如果重写出错或重写期间服务器崩溃, 那么重写失败, 原有 redis.conf 文件不会被修改。 如果重写成功, 那么 redis.conf 文件为重写后的新文件。

  • CONFIG SET :可以动态地调整 Redis 服务器的配置(configuration)而无须重启。

  • DBSIZE :返回当前数据库的 key 的数量。

  • FLUSHALL:清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。此命令从不失败。

  • FLUSHDB :清空当前数据库中的所有 key。此命令从不失败。

  • INFO [section]:返回关于 Redis 服务器的各种信息和统计数值。通过给定可选的参数 section ,可以让命令只返回某一部分的信息.

  • FLUSHDB :清空当前数据库中的所有 key。此命令从不失败。

三. Key(键)

  • Keys pattern:查找所有符合给定模式 pattern 的 key 。

  • DEL key [key …] :删除给定的一个或多个 key 。不存在的 key 会被忽略。

  • Type key :返回 key 所储存的值的类型。

  • EXISTS key :检查指定key是否存在

  • EXPIRE key seconds:为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。

  • DUMP key :序列化给定 key ,并返回被序列化的值,如果值不存在,返回nil,否则,返回序列化之后的值。

  • RESTORE key ttl serialized-value:反序列化给定的序列化值,并将它和给定的 key 关联。参数 ttl 以毫秒为单位为 key 设置生存时间;如果 ttl 为 0 ,那么不设置生存时间。

#匹配数据库中所有key
127.0.0.1:6379> keys unreadAskForPriceCache*
  1) "unreadAskForPriceCache:8748"
  2) "unreadAskForPriceCache:386"
  3) "unreadAskForPriceCache:37"

#匹配以unreadAskForPriceCache开头的key
127.0.0.1:6379> keys unreadAskForPriceCache*
  1) "unreadAskForPriceCache:8748"
  2) "unreadAskForPriceCache:386"
  3) "unreadAskForPriceCache:37"

#查看key的类型
127.0.0.1:6379> type unreadAskForPriceCache:295
zset

#删除指定key
127.0.0.1:6379> del unreadAskForPriceCache:295
(integer) 1

#序列化给定 key
127.0.0.1:6379> dump userAccount:w256
"\x00\xc3A\x83B0\x11{\"employeeId\":305,\xe0\x00\x10\x0eCity\":\"9\",\"ding@\x03\x0fName\":null,\"shor\x80\x0f\x00\" !\x04isUse A\x001 \n\nnsertPerson \x1c\x000@\x1d`\x12\x01Ti\xe0\x01=\x05update\x
e0\x04$\x80\x12\xe0\x03$\x0bisShipper\":0`\r\x02ell\xe0\x01\x0c\x06torehou l\xa0\x1e\x04Manag\xa0\r\x05deptKe \xbf\x80\xac\x00n`\xb8\t\"\xe9\x82\xb1\xe6\xb5\xa9\xe6\xa5\xa0 \x93\x02cod \xcb\x04\"w256 \r\x06address\xc0/\x06postalC`\"\x80A\tofficePhon 5\x80\x12\x04mobil\xc0\x12\n\"1367696187@O\x04email\xc0( K\x00t\xe0\x005@\x99Ak\x02\"10A\x1a\x03regiA'\x80R\x06provinc\xe0\x00,\x06orderNo`\xe0\x02sex\xc0&\x03area@\x9c\xe0\x00\xaf\x02mem $\x80C@\x0b\x001\xe0\x03\x0c\x002\xe0\x03\x0c\x003\xe0\x03\x0c\x004\xe0\x03\x0c\x02num\xc0\x0eAT@\xa3\x02293A(\x04mpany@\x0f\x010}\b\x00\xbc%\xce\xe4yN\xdb\x95"

#反序列化给定的序列化值
127.0.0.1:6379> restore userAccout:256 0 "\x00\xc3A\x83B0\x11{\"employeeId\":305,\xe0\x00\x10\x0eCity\":\"9\",\"ding@\x03\x0fName\":null,\"shor\x80\x0f\x00\" !\x04isUse A\x001 \n\nnsertPerson \x1c\
x000@\x1d`\x12\x01Ti\xe0\x01=\x05update\xe0\x04$\x80\x12\xe0\x03$\x0bisShipper\":0`\r\x02ell\xe0\x01\x0c\x06torehou l\xa0\x1e\x04Manag\xa0\r\x05deptKe \xbf\x80\xac\x00n`\xb8\t\"\xe9\x82\xb1\xe6\xb5\xa9\xe6\xa5\xa0 \x93\x02cod \xcb\x04\"w256 \r\x06address\xc0/\x06postalC`\"\x80A\tofficePhon 5\x80\x12\x04mobil\xc0\x12\n\"1367696187@O\x04email\xc0( K\x00t\xe0\x005@\x99Ak\x02\"10A\x1a\x03regiA'\x80R\x06provinc\xe0\x00,\x06orderNo`\xe0\x02sex\xc0&\x03area@\x9c\xe0\x00\xaf\x02mem $\x80C@\x0b\x001\xe0\x03\x0c\x002\xe0\x03\x0c\x003\xe0\x03\x0c\x004\xe0\x03\x0c\x02num\xc0\x0eAT@\xa3\x02293A(\x04mpany@\x0f\x010}\b\x00\xbc%\xce\xe4yN\xdb\x95"OK
127.0.0.1:6379> get userAccount:256
"{\"employeeId\":220,\"employeeCity\":\"22\",\"dingdingName\":\"\",\"shorName\":\"\xe4\xbc\x81\xe9\xb9\x85\",\"isUsed\":0,\"insertPerson\":\"70\",\"insertTime\":null,\"updatePerson\":\"70\",\"updat
eTime\":null,\"isShipper\":0,\"isSeller\":0,\"isStorehouser\":0,\"isManager\":0,\"deptKey\":null,\"name\":\"\xe9\x82\xb1\xe6\xb5\xa9\xe6\xa5\xa0\",\"code\":\"256\",\"address\":\"\",\"postalCode\":null,\"officePhone\":\"\",\"mobilePhone\":\"13676961876\",\"email\":\"\",\"state\":null,\"deptId\":\"185\",\"region\":null,\"province\":null,\"orderNo\":0,\"sex\":null,\"areaCodes\":null,\"memo\":null,\"memo1\":null,\"memo2\":null,\"memo3\":null,\"memo4\":null,\"memonum\":null,\"userId\":208,\"companyId\":0}"

#批量删除所有匹配的key
redis-cli -a uqiauto -p 7001 -n 0 keys "unreadAskForPriceCache*" | xargs redis-cli -a uqiauto -p 7001 -n 0 del
  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值