Redis学习03-对String类型的操作

一、对String类型的操作


1、set和get命令

set命令用于添加一条String类型的数据,该命令会覆盖已存在的同名key数据;而get命令用于查看String类型的数据


2、incr和decr命令

如果key对应的数据可以表示成整数(小数不行),那么就可以分别使用这两个命令对其进行递增和递减1

Redis学习03-对String类型的操作_第1张图片

3、incrby和decrby命令

这两个命令与incr和decr命令类似,区别在于这两个命令要指定递增和递减的整数值(不能是小数)

Redis学习03-对String类型的操作_第2张图片

4、incrbyfloat命令

该命令与incrby和decrby命令类似,区别在于可以对小数进行递增和递减,而且指定递增和递减的数可以为小数,不过没有对应的decrbyfloat命令,而是用incrbyfloat一个命令来表示增和减。从以下实验结果来看,可以使用incrbyfloat命令将原来表示为小数的数据变为整数,从而可以使用incr等只能操作整数的命令;也可以将原来表示为整数的数据变为小数,但是一旦变为小数就不能再使用incr等只能操作整数的命令

Redis学习03-对String类型的操作_第3张图片

由于Redis是单进程的,所以不管使用哪种递增和递减的命令都不用担心并发的问题

5、append命令

该命令用于在字符串尾部追加字符串


6、getrange命令

该命令用于获取指定索引范围内的值,用法为:getrange key 开始索引 结束索引,结束索引可以用-1表示字符串结尾

Redis学习03-对String类型的操作_第4张图片

7、setrange命令

该命令用于从指定索引位置开始设置后面的值,用法为:setrange key 开始索引 value,开始索引从0开始,不能使用-1表示尾部

Redis学习03-对String类型的操作_第5张图片

8、strlen命令

该命令用于计算存储的字符串的长度


9、mget命令

该命令用于同时获取多个key对应的值


10、mset命令

该命令用于同时设置多个存储字符串的键值对,如果对应的key已存在,同样会被覆盖


11、bitcount命令

该命令用于获取指定索引范围内二进制位为1的个数,用法为:bitcount key [开始索引 结束索引],这里的索引指的是key对应的字符串数据中的字符,结束索引可以用-1表示字符串结尾,默认就是全部字符串。比如这里的abc的二进制为01100001 01100010 01100011,所以bitcount name得出的结果为10,bitcount name 0 0就是取abc字符串中第一个字符a,所以得出的结果为3,以此类推

Redis学习03-对String类型的操作_第6张图片

如果存储的字符串可以表示为整数,那么在计算二进制串的时候不会按照整数来转换成对应的二进制的,而是按照字符串来计算的,如下图所示,字符串10的二进制为00110001 00110000,而不是十进制10对应的二进制00001010,所以得到结果为5


12、getbit命令

该命令用于获取指定索引位置的二进制位的值,用法为:getbit key 索引,这里的索引就是key对应的整个字符串的二进制形式的索引,索引从0开始,不能使用-1表示尾部。比如这里的abc的二进制为01100001 01100010 01100011,所以索引位0为0,索引位1为1,索引位2为1,索引位3为0,索引位9为1,索引位10为1,以此类推

Redis学习03-对String类型的操作_第7张图片

同样的,如果存储的字符串可以表示为整数,那么在计算二进制串的时候也不会按照整数来转换成对应的二进制的,而是按照字符串来计算的

Redis学习03-对String类型的操作_第8张图片

13、setbit命令

该命令用于设置指定索引位置的二进制位的值,用法为:setbit key 索引 值,这里的索引也是key对应的整个字符串的二进制形式的索引,索引从0开始,不能使用-1表示尾部,比如这里的abc的二进制为01100001 01100010 01100011,设置第22位为0,则变成了aba

Redis学习03-对String类型的操作_第9张图片

同样的,如果存储的字符串可以表示为整数,那么在计算二进制串的时候也不会按照整数来转换成对应的二进制的,而是按照字符串来计算的


14、bitop命令

该命令用于多个key对应的整个字符串的二进制形式的位操作,用法为:bitop 操作类型 目的key key1 key2...,操作类型有and(相同二进制位都为1结果才为1)、or(相同二进制位只要有一个为1结果就为1)、xor(相同二进制位不同结果就为1)、not(取反),not这个操作类型只要一个操作key,其余的操作类型可以有一个或多个操作key。这个操作并不要求目的key事先存在,会自动将结果设置到目的key中,当然如果目的key已经存在,则会被覆盖。这里的a、b、c对应的二进制分别是01100001、01100010、01100011,a、b、c进行and操作得到的二进制形式为01100000,对应的字符就是'`';进行or操作得到的二进制形式为01100011,对应的字符就是'c';进行xor操作得到的二进制形式为01100000,对应的字符就是'`'

Redis学习03-对String类型的操作_第10张图片

同样的,如果存储的字符串可以表示为整数,那么在计算二进制串的时候也不会按照整数来转换成对应的二进制的,而是按照字符串来计算的


15、getset命令

该命令用于原子的设置key的值,并返回设置key之前的旧值,如果key本身不存在,则返回nil



你可能感兴趣的:(Redis,redis)