根据上面的命令解释,大家应该比较容易看懂截图里面的所有命令含义,这里就不过多解释了。
字符串使用字符串 string 是 Redis 最简单的数据结构。Redis 的字符串是动态字符串,是可以修改的字符串,内部结构实现上类似于 Java 的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。
字符串结构使用非常广泛,一个常见的用途就是缓存用户信息。我们将用户信息结构体 使用 json 序列化成字符串,然后将序列化后的字符串塞进 Redis 来缓存。同样,取用户 信息会经过一次反序列化的过程。
常用字符串命令- set key value [ex seconds][px milliseconds] [nx|xx]: 设置值,返回 ok 表示成功
- ex seconds:为键设置秒级过期时间。
- px milliseconds:为键设置毫秒级过期时间。
- nx:键必须不存在,才可以设置成功,用于添加。可单独用 setnx 命令替代
- xx:与 nx 相反,键必须存在,才可以设置成功,用于更新。可单独用 setxx 命令替代
- get key:获取值
- mset key value [key value ...]:批量设置值,批量操作命令可以有效提高业务处理效率
- mget key [key ...]:批量获取值,批量操作命令可以有效提高业务处理效率
- incr key:计数,返回结果分 3 种情况:
- 值不是整数,返回错误。
- 值是整数,返回自增后的结果。
- 键不存在,按照值为 0 自增,返回结果为 1。
- decr(自减)、incrby(自增指定数字)、 decrby(自减指定数字)
根据上面的命令解释,大家应该比较容易看懂截图里面的所有命令含义,这里就不过多解释了。
字符串使用场景- 缓存数据,提高查询性能。比如存储登录用户信息、电商中存储商品信息
- 可以做计数器(想知道什么时候封锁一个 IP 地址(访问超过几次)),短信限流
- 共享 Session,例如:一个分布式 Web 服务将用户的 Session 信息(例如用户登录信息)保存在各自服务器中,这样会造成一个问题,出于负载均衡的考虑,分布式服务会将用户的访问均衡到不同服务器上,用户刷新一次访问可 能会发现需要重新登录,为了解决这个问题,可以使用 Redis 将用户的 Session 进行集中管理,在这种模式下只要保证 Redis 是高可用和扩展性的,每次用户 更新或者查询登录信息都直接从 Redis 中集中获取,如图: