@[TOC]redis
启动:redis-cli --raw
正常启动用redis-cli即可,加上–raw是为了能够显示中文
127.0.0.1:6379> SET test "字符串"
OK
127.0.0.1:6379> GET test
字符串
127.0.0.1:6379> DEL test
1
127.0.0.1:6379> HMSET test field1 "Hello" field2 "redis"
OK
127.0.0.1:6379> HGET test field1
Hello
127.0.0.1:6379> HGET test field2
redis
127.0.0.1:6379> DEL test
1
127.0.0.1:6379> lpush test redis
1
127.0.0.1:6379> lpush test mongodb
2
127.0.0.1:6379> lpush test rabbitmq
3
127.0.0.1:6379> lrange test 0 10
rabbitmq
mongodb
redis
127.0.0.1:6379> DEL test
1
127.0.0.1:6379> sadd test redis
1
127.0.0.1:6379> sadd test mongodb
1
127.0.0.1:6379> sadd test rabbitmq
1
127.0.0.1:6379> sadd test redis
0
127.0.0.1:6379> smembers test
mongodb
redis
rabbitmq
redis 127.0.0.1:6379> DEL test
redis 127.0.0.1:6379> zadd test 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd test 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd test 0 rabbitmq
(integer) 1
redis 127.0.0.1:6379> zadd test 0 rabbitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE test 0 1000
1) "mongodb"
2) "rabbitmq"
3) "redis"
打开客户端
redis-cli
使用PING命令检测是否启动
PING
在远程服务上执行命令
redis-cli -h host -p port -a password
以下实例演示了如何连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上。
$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SET testkey redis
OK
127.0.0.1:6379> GET testkey
redis
127.0.0.1:6379> DEL testkey
1
127.0.0.1:6379> DEL testkey
0
检查key是否存在
127.0.0.1:6379> EXISTS testkey
0
127.0.0.1:6379> SET testkey redis
OK
127.0.0.1:6379> EXISTS testkey
1
修改key名称
127.0.0.1:6379> RENAME testkey testke
OK
127.0.0.1:6379> EXISTS testkey
0
127.0.0.1:6379> EXISTS testke
1
127.0.0.1:6379> SET testkey redis
OK
127.0.0.1:6379> GET testkey
redis
获取子字符串
127.0.0.1:6379> GETRANGE testkey 0 3
redi
127.0.0.1:6379> GETRANGE testkey 0 -1
redis
在以上实例中,我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 testkey 中。
127.0.0.1:6379> HMSET testkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
127.0.0.1:6379> HGETALL testkey
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"
删除哈希表 key 中的一个或多个指定字段
redis 127.0.0.1:6379> HSET myhash field1 "foo"
1
redis 127.0.0.1:6379> HDEL myhash field1
1
redis 127.0.0.1:6379> HDEL myhash field2
0
Redis Hexists 命令用于查看哈希表的指定字段是否存在。
redis 127.0.0.1:6379> HSET myhash field1 "foo"
1
redis 127.0.0.1:6379> HEXISTS myhash field1
1
redis 127.0.0.1:6379> HEXISTS myhash field2
0
Redis Hkeys 命令用于获取哈希表中的所有域(field
redis 127.0.0.1:6379> HSET myhash field1 "foo"
1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
1
redis 127.0.0.1:6379> HKEYS myhash
1) "field1"
2) "field2"
Redis Hlen 命令用于获取哈希表中字段的数量。
redis 127.0.0.1:6379> HLEN myhash
2
127.0.0.1:6379> LPUSH testkey redis
1
127.0.0.1:6379> LPUSH testkey mongodb
2
127.0.0.1:6379> LPUSH testkey mysql
3
127.0.0.1:6379> LRANGE testkey 0 10
mysql
mongodb
redis
移出并获取列表的第一个元素
127.0.0.1:6379> BLPOP testkey 100
testkey
mysql
移出并获取列表的最后一个元素
127.0.0.1:6379> BRPOP testkey 100
testkey
redis
通过索引获取列表中的元素
redis 127.0.0.1:6379> LPUSH mylist "World"
1
redis 127.0.0.1:6379> LPUSH mylist "Hello"
2
redis 127.0.0.1:6379> LINDEX mylist 0
"Hello"
redis 127.0.0.1:6379> LINDEX mylist -1
"World"
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
集合对象的编码可以是 intset 或者 hashtable。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
redis 127.0.0.1:6379> SADD testbkey redis
1
redis 127.0.0.1:6379> SADD testkey mongodb
1
redis 127.0.0.1:6379> SADD testkey mysql
1
redis 127.0.0.1:6379> SADD testkey mysql
0
redis 127.0.0.1:6379> SMEMBERS testkey
1) "mysql"
2) "mongodb"
3) "redis"
Redis Scard 命令返回集合中元素的数量
redis 127.0.0.1:6379> SCARD myset
3
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
127.0.0.1:6379> ZADD testkey 1 redis
1
127.0.0.1:6379> ZADD testkey 2 mongodb
1
127.0.0.1:6379> ZADD testkey 3 mysql
1
127.0.0.1:6379> ZADD testkey 4 mysql
0
127.0.0.1:6379> ZRANGE testkey 0 10 WITHSCORES
redis
1
mongodb
2
mysql
4
Redis 教程
Redis 教程
Redis 简介
Redis 安装
Redis 配置
Redis 数据类型
Redis 命令
Redis 命令
Redis 键(key)
Redis 字符串(String)
Redis 哈希(Hash)
Redis 列表(List)
Redis 集合(Set)
Redis 有序集合(sorted set)
Redis HyperLogLog
Redis 发布订阅
Redis 事务
Redis 脚本
Redis 连接
Redis 服务器
Redis GEO
Redis Stream
Redis 高级教程
Redis 数据备份与恢复
Redis 安全
Redis 性能测试
Redis 客户端连接
Redis 管道技术
Redis 分区
Java 使用 Redis
PHP 使用 Redis
Redis Zadd 命令Redis Zcount 命令
Redis Zcard 命令
Redis 有序集合(sorted set)
Redis Zcard 命令用于计算集合中元素的数量
127.0.0.1:6379> ZCARD testkey
3
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
什么是基数?
比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。
127.0.0.1:6379> PFADD testkey "redis"
1
127.0.0.1:6379> PFADD testkey "mongodb"
1
127.0.0.1:6379> PFADD testkey "mysql"
1
127.0.0.1:6379> PFCOUNT testkey
3
Redis Pfadd 命令将所有元素参数添加到 HyperLogLog 数据结构中
127.0.0.1:6379> PFADD testkey a b c d e f g h i j
1
127.0.0.1:6379> PFCOUNT testkey
13
Redis Pfcount 命令返回给定 HyperLogLog 的基数估算值
Redis PFMERGE 命令将多个 HyperLogLog 合并为一个 HyperLogLog
redis> PFADD hll1 foo bar zap a
1
redis> PFADD hll2 a b c foo
1
redis> PFMERGE hll3 hll1 hll2
"OK"
redis> PFCOUNT hll3
6
redis>
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
Redis 客户端可以订阅任意数量的频道。
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
以下实例演示了发布订阅是如何工作的,需要开启两个 redis-cli 客户端
第一个 redis-cli 客户端
redis 127.0.0.1:6379> SUBSCRIBE runoobChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "runoobChat"
3) 1
现在,我们先重新开启个 redis 客户端,然后在同一个频道 runoobChat 发布两次消息,订阅者就能接收到消息。
redis 127.0.0.1:6379> PUBLISH runoobChat "Redis PUBLISH test"
(integer) 1
redis 127.0.0.1:6379> PUBLISH runoobChat "Learn redis by runoob.com"
(integer) 1
# 订阅者的客户端会显示如下消息
1) "message"
2) "runoobChat"
3) "Redis PUBLISH test"
1) "message"
2) "runoobChat"
3) "Learn redis by runoob.com"
步骤
Redis Psubscribe 命令订阅一个或多个符合给定模式的频道。
redis 127.0.0.1:6379> PSUBSCRIBE mychannel
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "mychannel"
3) 1
Redis Pubsub 命令用于查看订阅与发布系统状态,它由数个不同格式的子命令组成。
redis 127.0.0.1:6379> PUBSUB CHANNELS
(empty list or set)
Redis Publish 命令用于将信息发送到指定的频道。
返回值是接收到信息的订阅者数量。
redis 127.0.0.1:6379> PUBLISH mychannel "hello, i m here"
1
Redis Punsubscribe 命令用于退订所有给定模式的频道
redis 127.0.0.1:6379> PUNSUBSCRIBE mychannel
1) "punsubscribe"
2) "a"
3) 1
Redis Subscribe 命令用于订阅给定的一个或多个频道的信息。。
redis 127.0.0.1:6379> SUBSCRIBE mychannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) 1
1) "message"
2) "mychannel"
3) "a"
Redis Unsubscribe 命令用于退订给定的一个或多个频道的信息。
redis 127.0.0.1:6379> UNSUBSCRIBE mychannel
1) "unsubscribe"
2) "a"
3) 0
一个事务从开始到执行会经历以下三个阶段:
开始事务。
命令入队。
执行事务。
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
redis 127.0.0.1:6379> GET book-name
QUEUED
redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis 127.0.0.1:6379> SMEMBERS tag
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
2) "C++"
3) "Programming"
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
redis 127.0.0.1:7000> multi
OK
redis 127.0.0.1:7000> set a aaa
QUEUED
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec
1) OK
2) OK
3) OK
Redis Discard 命令用于取消事务,放弃执行事务块内的所有命令。
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> PING
QUEUED
redis 127.0.0.1:6379> SET greeting "hello"
QUEUED
redis 127.0.0.1:6379> DISCARD
OK
Redis Exec 命令用于执行所有事务块内的命令。
# 事务被成功执行
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> INCR user_id
QUEUED
redis 127.0.0.1:6379> INCR user_id
QUEUED
redis 127.0.0.1:6379> INCR user_id
QUEUED
redis 127.0.0.1:6379> PING
QUEUED
redis 127.0.0.1:6379> EXEC
1) (integer) 1
2) (integer) 2
3) (integer) 3
4) PONG
# 监视 key ,且事务成功执行
redis 127.0.0.1:6379> WATCH lock lock_times
OK
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET lock "huangz"
QUEUED
redis 127.0.0.1:6379> INCR lock_times
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) (integer) 1
# 监视 key ,且事务被打断
redis 127.0.0.1:6379> WATCH lock lock_times
OK
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET lock "joe" # 就在这时,另一个客户端修改了 lock_times 的值
QUEUED
redis 127.0.0.1:6379> INCR lock_times
QUEUED
redis 127.0.0.1:6379> EXEC # 因为 lock_times 被修改, joe 的事务执行失败
(nil)
Redis Multi 命令用于标记一个事务块的开始。
事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。
redis 127.0.0.1:6379> MULTI # 标记事务开始
OK
redis 127.0.0.1:6379> INCR user_id # 多条命令按顺序入队
QUEUED
redis 127.0.0.1:6379> INCR user_id
QUEUED
redis 127.0.0.1:6379> INCR user_id
QUEUED
redis 127.0.0.1:6379> PING
QUEUED
redis 127.0.0.1:6379> EXEC # 执行
1) (integer) 1
2) (integer) 2
3) (integer) 3
4) PONG
Redis Unwatch 命令用于取消 WATCH 命令对所有 key 的监视。
redis 127.0.0.1:6379> WATCH lock lock_times
OK
redis 127.0.0.1:6379> UNWATCH
OK
Redis Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断
redis> WATCH lock lock_times
OK
Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"
Redis Evalsha 命令根据给定的 sha1 校验码,执行缓存在服务器中的脚本。
将脚本缓存到服务器的操作可以通过 SCRIPT LOAD 命令进行。
这个命令的其他地方,比如参数的传入方式,都和 EVAL 命令一样
redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'"
"232fd51614574cf0867b83d384a5e898cfd24e5a"
redis 127.0.0.1:6379> EVALSHA "232fd51614574cf0867b83d384a5e898cfd24e5a" 0
"hello moto"
Redis Script Exists 命令用于校验指定的脚本是否已经被保存在缓存当中。
redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'" # 载入一个脚本
"232fd51614574cf0867b83d384a5e898cfd24e5a"
redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
1) (integer) 1
redis 127.0.0.1:6379> SCRIPT FLUSH # 清空缓存
OK
redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
1) (integer) 0
Redis Script Flush 命令用于清除所有 Lua 脚本缓存。
redis 127.0.0.1:6379> SCRIPT FLUSH
OK
Redis Script kill 命令
Redis Script kill 命令用于杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效。
这个命令主要用于终止运行时间过长的脚本,比如一个因为 BUG 而发生无限循环的脚本。
SCRIPT KILL 执行之后,当前正在运行的脚本会被杀死,执行这个脚本的客户端会从 EVAL 命令的阻塞当中退出,并收到一个错误作为返回值。
Redis Script kill 命令
Redis Script Load 命令
Redis Script Load 命令用于将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。
EVAL 命令也会将脚本添加到脚本缓存中,但是它会立即对输入的脚本进行求值。
如果给定的脚本已经在缓存里面了,那么不执行任何操作。
redis 127.0.0.1:6379> SCRIPT LOAD "return 1"
"e0e1f9fabfc9d4800c877a703b823ac0578ff8db"
Redis 连接命令主要是用于连接 redis 服务。
以下实例演示了客户端如何通过密码验证连接到 redis 服务,并检测服务是否在运行:
redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
Redis Echo 命令用于打印给定的字符串。
redis 127.0.0.1:6379> ECHO "Hello World"
"Hello World"
Redis Ping 命令使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。
# 客户端和服务器连接正常
redis 127.0.0.1:6379> PING
PONG
# 客户端和服务器连接不正常(网络不正常或服务器未能正常运行)
redis 127.0.0.1:6379> PING
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Redis Quit 命令用于关闭与当前客户端与redis服务的连接。
一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭。
redis 127.0.0.1:6379> QUIT
OK
Redis Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值
redis 127.0.0.1:6379> SET db_number 0 # 默认使用 0 号数据库
OK
redis 127.0.0.1:6379> SELECT 1 # 使用 1 号数据库
OK
redis 127.0.0.1:6379[1]> GET db_number # 已经切换到 1 号数据库,注意 Redis 现在的命令提示符多了个 [1]
(nil)
redis 127.0.0.1:6379[1]> SET db_number 1
OK
redis 127.0.0.1:6379[1]> GET db_number
"1"
redis 127.0.0.1:6379[1]> SELECT 3 # 再切换到 3 号数据库
OK
redis 127.0.0.1:6379[3]> # 提示符从 [1] 改变成了 [3]
Redis 服务器命令主要是用于管理 redis 服务。
redis 127.0.0.1:6379> INFO
# Server
redis_version:2.8.13
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:c2238b38b1edb0e2
redis_mode:standalone
os:Linux 3.5.0-48-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.7.2
process_id:3856
run_id:0e61abd297771de3fe812a3c21027732ac9f41fe
tcp_port:6379
uptime_in_seconds:11554
uptime_in_days:0
hz:10
lru_clock:16651447
config_file:
# Clients
connected_clients:1
client-longest_output_list:0
client-biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:589016
used_memory_human:575.21K
used_memory_rss:2461696
used_memory_peak:667312
used_memory_peak_human:651.67K
used_memory_lua:33792
mem_fragmentation_ratio:4.18
mem_allocator:jemalloc-3.6.0
# Persistence
loading:0
rdb_changes_since_last_save:3
rdb_bgsave_in_progress:0
rdb_last_save_time:1409158561
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
# Stats
total_connections_received:24
total_commands_processed:294
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:41
keyspace_misses:82
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:264
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:10.49
used_cpu_user:4.96
used_cpu_sys_children:0.00
used_cpu_user_children:0.01
# Keyspace
db0:keys=94,expires=1,avg_ttl=41638810
db1:keys=1,expires=0,avg_ttl=0
db3:keys=1,expires=0,avg_ttl=0
Redis Bgrewriteaof 命令用于异步执行一个 AOF(AppendOnly File) 文件重写操作。重写会创建一个当前 AOF 文件的体积优化版本。
即使 Bgrewriteaof 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 Bgrewriteaof 成功之前不会被修改。
redis 127.0.0.1:6379>
Background append only file rewriting started
Redis Bgsave 命令用于在后台异步保存当前数据库的数据到磁盘。
BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
redis> BGSAVE
Background saving started
Redis Client Kill 命令用于关闭客户端连接。
# 列出所有已连接客户端
redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:43501 fd=5 age=10 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
# 杀死当前客户端的连接
redis 127.0.0.1:6379> CLIENT KILL 127.0.0.1:43501
OK
# 之前的连接已经被关闭,CLI 客户端又重新建立了连接
# 之前的端口是 43501 ,现在是 43504
redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:43504 fd=5 age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
Redis Client List 命令用于返回所有连接到服务器的客户端信息和统计数据。
redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:43143 fd=6 age=183 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
addr=127.0.0.1:43163 fd=5 age=35 idle=15 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
addr=127.0.0.1:43167 fd=7 age=24 idle=6 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
Redis Client Getname 命令用于返回 CLIENT SETNAME 命令为连接设置的名字。 因为新创建的连接默认是没有名字的, 对于没有名字的连接, CLIENT GETNAME 返回空白回复。
# 新连接默认没有名字
redis 127.0.0.1:6379> CLIENT GETNAME
(nil)
# 设置名字
redis 127.0.0.1:6379> CLIENT SETNAME hello-world-connection
OK
# 返回名字
redis 127.0.0.1:6379> CLIENT GETNAME
"hello-world-connection"
Redis Client Pause 命令用于阻塞客户端命令一段时间(以毫秒计)。
redis 127.0.0.1:6379> CLIENT PAUSE timeout
Redis Client Setname 命令用于指定当前连接的名称。
这个名字会显示在 CLIENT LIST 命令的结果中, 用于识别当前正在与服务器进行连接的客户端。
# 新连接默认没有名字
redis 127.0.0.1:6379> CLIENT GETNAME
(nil)
# 设置名字
redis 127.0.0.1:6379> CLIENT SETNAME hello-world-connection
OK
# 返回名字
redis 127.0.0.1:6379> CLIENT GETNAME
"hello-world-connection"
# 在客户端列表中查看
redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:36851
fd=5
name=hello-world-connection # <- 名字
age=51
...
# 清除名字
redis 127.0.0.1:6379> CLIENT SETNAME # 只用空格是不行的!
(error) ERR Syntax error, try CLIENT (LIST | KILL ip:port)
redis 127.0.0.1:6379> CLIENT SETNAME "" # 必须双引号显示包围
OK
redis 127.0.0.1:6379> CLIENT GETNAME # 清除完毕
(nil)
Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。
redis 127.0.0.1:6379> SAVE
OK
Redis Shutdown 命令执行以下操作:
停止所有客户端
如果有至少一个保存点在等待,执行 SAVE 命令
如果 AOF 选项被打开,更新 AOF 文件
关闭 redis 服务器(server)
redis 127.0.0.1:6379> PING
PONG
redis 127.0.0.1:6379> SHUTDOWN
$
$ redis
Could not connect to Redis at: Connection refused
not connected>