Bootstrap

Redis 客户端服务端命令数据交换

Redis 客户端服务端命令数据交换,以及运维工具。极客时间《Redis 核心技术与实战》专栏学习笔记 24,部分已经作为留言发布,但是留言太多,排在后面的一般很难被大家看到,所以集中发布在这里,欢迎讨论。

题图来自 CacheCloud 的 github 主页

加餐(四) | Redis客户端如何与服务器端交换命令和数据?

在 macOS 上默认似乎是没有 telnet 的,放狗搜索,似乎是可以安装一个 telnet,也可以使用 ssh 或者 nc 工具。

我尝试使用 ssh 被拒绝了,然后使用 nc 连上了阿里云的 Redis 实例。

#> nc -v r-2zede1d2b3b2b312pd.redis.rds.aliyuncs.com 6379
Connection to r-2zede0d1b1b2b564pd.redis.rds.aliyuncs.com port 6379 [tcp/*] succeeded!

连接之后,是没有命令提示符的。直接 hello world,需要输入密码

get hello
-NOAUTH Authentication required.
auth myPassword
+OK
get hello
$5
world

然后看一下专栏中提到的例子

LRANGE mylist 0 4
*5
$5
hello
$1
4
$3
3.3
$1
2
$1
1
set testkey testvalue
+OK
get testkey
$9
testvalue
hset testhash a 1 b 2 c 3
:3
put testkey2 testvalue
-ERR unknown command `put`, with args beginning with: `testkey2`, `testvalue`,

可以看到 mylist 中的值都是使用长字符串类型(RESP Bulk String)来回复的,还能看到 以“:”开头的简单字符串类型(RESP Simple Strings),用“+”号开头的整数类型(RESP Integer)和用“-”号开头的错误类型(RESP Errors)

用“*”号开头的数组编码类型(RESP Arrays)没有看到具体的例子。

最后,关于 Hash 类型的 testhash 和 Sorted Set 类型的 testzset 的例子

hset testhash a 1 b 2 c 3
:0
hgetall testhash
*6
$1
a
$1
1
$1
b
$1
2
$1
c
$1
3
zadd testzset 1 "a"
:1
zadd testzset 2 "b"
:1
zadd testzset 3 "c"
:1
zrange testzset 0 3 withscores
*6
$1
a
$1
1
$1
b
$1
2
$1
c
$1
3
加餐(五) | Redis有哪些好用的运维工具?

      

作为没有实战经验的小白,只能把本节内容暗自记下,以后需要的时候再回来查询。

运维的时候仅有 info 的信息是明显不够的,否则即使单项指标有问题,也只能依赖于经验值,如果有运维工具的话,就可以看到一段时间内的平均值、正常值、波动情况等等。

Prometheus 之前听说过,现在看来应该是开源系统监控报警框架里面比较成熟的一个了,有机会的话可以学习一下。

如果只运维 Redis 的话,CacheCloud 似乎也是一个不错的选择,不知道除了搜狐之外,有没有其他大厂采用。另外,CacheCloud 团队还写了一本《Redis开发与运维》。

有一点好奇,为什么中国团队似乎比较喜欢 Redis ?之前介绍的图书也大部分的都是国内原创的,这次介绍的运维工具也大多是国内的。