Redis 实战(五)- 字符串,kafka 基本原理
"world"
如果要获取的键不存在,则返回 nil(空):
127.0.0.1:6379> get not_exist_key
(nil)
3、批量设置值
mset key value [key value ...]
下面操作通过 mset 命令一次性设置 4 个键值对:
127.0.0.1:6379> mset a 1 b 2 c 3 d 4
OK
4、批量获取值
mget key [key ...]
下面操作批量获取了键 a、b、c、d 的值:
127.0.0.1:6379> mget a b c d
"1"
"2"
"3"
"4"
如果有些键不存在,那么它的值为 nil(空),结果是按照传入键的顺序返回:
127.0.0.1:6379> mget a b c f
"1"
"2"
"3"
(nil)
批量操作命令可以有效提高开发效率,假如没有 mget 这样的命令,要执行 n 次 get 命令,图示如下:
使用 mget 命令后,要执行 n 次 get 命令操作,图示如下:
Redis 可以支撑每秒数万的读写操作,但是这指的是 Redis 服务端的处理能力,对于客户端来说,一次命令除了命令时间还是有网络时间,假设网络时间为 1 毫秒,命令时间为 0.1 毫秒(按照每秒处理 1 万条命令算),那么执行 1000 次 get 命令和 1 次 mget 命令的区别图示如下,因为 Re
dis 的处理能力已经足够高,对于开发人员来说,网络可能会成为性能的瓶颈。
学会使用批量操作,有助于提高业务处理效率,但是要注意的是每次批量操作所发送的命令数不是无节制的,如果数量过多可能造成 Redis 阻塞或者网络拥塞。
5、计数
incr key
incr 命令用于对值做自增操作,返回结果分为三种情况:
·值不是整数,返回错误。
·值是整数,返回自增后的结果。
·键不存在,按照值为 0 自增,返回结果为 1。
例如对一个不存在的键执行 incr 操作后,返回结果是 1:
127.0.0.1:6379> exists key
(integer) 0
127.0.0.1:6379> incr key
(integer) 1
再次对键执行 incr 命令,返回结果是 2:
127.0.0.1:6379> incr key
(integer) 2
如果值不是整数,那么会返回错误:
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> incr hello
(error) ERR value is not an integer or out of range
除了 incr 命令,Redis 提供了 decr(自减)、incrby(自增指定数字)、decrby(自减指定数字)、incrbyfloat(自增浮点数):
decr key
incrby key increment
decrby key decrementincrbyfloat key increment 很多存储系统和编程语言内部使用 CAS 机制实现计数功能,会有一定的 CPU 开销,但在 Redis 中完全不存在这个问题,因为 Redis 是单线程架构,任何命令到了 Redis 服务端都要顺序执行。到此字符串介绍完成。
评论