字符串 可以 存储 以下 3 种 类型 的 值。 字节 串( byte string)。 整数。 浮点 数。 INCR INCR key- name—— 将 键 存储 的 值 加上 1 DECR DECR key- name—— 将 键 存储 的 值 减去 1 INCRBY INCRBY key- name amount—— 将 键 存储 的 值 加上 整数 amount DECRBY DECRBY key- name amount—— 将 键 存储 的 值 减去 整数 amount INCRBYFLOAT INCRBYFLOAT key- name amount—— 将 键 存储 的 值 加上 浮点 数 amount, 这个 命令 在 Redis 2. 6 或 以上 的 版本 可用 String 数据结构是简单的 Key-Value 类型,是Redis中最常用的一种数据类型,Value 可以是string或者数字。String数据类型实际上可以存储字符串、整数、浮点数三种不同类型的值,Redis是如何做到自动识别字符串、整数、浮点数三种不同类型的值。Redis是使用C实现的,但是并未使用C中的字符串,实际上Redis自己实现了一个结构体SDS来替代String类型: struct sdshdr{ //记录buf数组中已使用字节的长度 int len; //记录buf数组中剩余空间的长度 int free; //字节数组,用于存储字符串 char buf\[\]; }; 我们可以看到free参数是用来判断剩余可使用空间的长度,len表示字符串的长度,buf存储字符串的每一个字符以及结尾的'\\0'。为什么Redis要自己实现SDS结构体呢?因为SDS结构体有几个优点: 1. 由于len保存了当前字符串的实际长度,所以获取长度时间复杂度为O(1)。 2. SDS在拼接之前会对当前字符串的空间进行自动调整和扩展,防止当前字符串数据溢出。 3. 减少内存分配次数,SDS拼接字符串发生时,如果此时的字符串长度len小于1M,则SDS会分配和len大小相同的未使用空间给free,如果此时的字符串长度len大于1M,则SDS会分配和1M的未使用空间给free,当字符串缩短时,缩短的空间会叠加到free中,用于后续的拼接使用。 **String数据类型常用命令:** * 常用命令:set、get、decr、incr、mget 等。 **String数据类型适用场景:** * 分布式锁 * 分布式session:将分布式应用session存储到Redis中 * 商品秒杀 * 常规计数:博客数,阅读数