Redis的数据类型一共分为9种,分别是 String(字符串)、list(列表)、Hash(哈希)、set(集合)、ZSet(有序集合)、Geo(位置信息)、bitmap(位图)、HyperLogLog(基数统计)、Stream(流)。
Redis——String类型(一)
String是Redis最基本的数据类型,一个键最大能存储512MB。String类型是数据安全的。意思就是redis的String类型可能包含任何数据。
原理:redis的字符串是动态的字符串,它类似于Java中的ArrayList。采用预分配冗余空间的方式减少内存的频繁分配。内部的为字符串分配的空间往往大于实际字符串的值,当字符串长度<1MB时,每次扩容会加倍(当前空间乘以2);当字符串长度大于1MB时,每次只会增加1MB,直到增加至512MB。
String类型相关的操作命令
相关命令:
1)set + key + 字符串:添加数据。
2)append + key + 字符串:在指定的key的值后面添加字符串。返回当前字符串的长度。
例如:先 set k1 "hello"
再 append k1 " world"
再获取 get k1 输出的是字符串 "hello world"
3)strlen + key:返回key对应的值的字符串长度。
4)getrange + key + start + end:获取初始位置到结束位置的值,从0开始计数,类似于java中String类型的subString方法。
与此相对应的方法:setrange + key + start + newString: 设置开始位置,替换该位置为新的字符串。
举个小栗子:
往数据库添加一个字符串 "hello world" (字符串中间有个空格,也算1位) ,键为k1, 然后进行setrange k1 6 hello操作,
得到的数据结果是:"hello hello",注意:开始位置start是从0开始。
5)setex + key +时间 + valu:这里的setex是一个整合命令,实际上等于 set + expire(expire上一篇我文章有讲),向数据库添加 值,并且设置数据的有效时间。
setnx + key + value : 同样也是一个整合命令,是set + exists 。如果key不存在,设置数据,返回1;如果存在,不设置,返回0
getset + key newValue :返回原来的值,然后设置新的值。
6)mget + key1 + key2 + key3 + ...:可以输入多个key,返回多个value。
mset + key1 + value 1 + key2 + valu2 + key3 + value3:可以设置多个key和value,参数本身是map键值对的形式。
msetnx + key1 + value 1 + key2 + valu2 + key3 + value3:和mset唯一的无别就是,需要判断key是否存在。
7)特别的情况,当value的值是整数时,可以通过命令直接进行数学运算。
incr key :自增,返回最新的值。
decr key :自减,返回最新的值。
incrby + key + n : 区别是增加计算的参数。当前key对应的值,加上n。
decrby + key + n: 减少,同上。