常用五大数据数据类型
1.1 String 类型
String类型是一个key对应一个value。
String类型是二进制安全的,也就是Redis的string可以包含任务数据。比如jpg图片或者序列化的对象。
String类型是Redis最基本的数据类型,一个Redis中字符串value最多可是512M。
String的数据类型是简单的动态字符串,是可以修改的字符串,内部结构实现上类似于java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。
扩容方式:当字符串长度小于1M时,扩容都是加倍现有的空间。如果超过1M,扩容一次只会多扩1M的空间,直到最大长度512M。
1.2 常用命令
set<key> <value> 添加键值对
get <key> 查询对应健值
append <key> <value> 将给定的<value> 追加到原值的末尾
strlen <key> 获得值的长度
setnx <key> <value> 只有在key不存在时,设置key的值
incr <key>
将key中存储的数字值增1
只能对数字操作,如果为空,新增值为1
decr <key>
将key中存储的字数值减1
只能对数字操作,如果为空,新增至为-1
incrby | decrby <key> <步长> 将key中存储的数字值增减。自定义步长。
mset <key1><value1><key2><value2>...
同时设置一个或多个key-value对
mget <key1><key2>... 同时获取一个或多个value
msetnx <key1><value1><key2><value2>... 同时设置一个或多个key-value对,当且仅当所有给定的key都不存在
getrange <key><起始位置><结束位置> 获得值的范围,类似java中的substring
setrange <key><起始位置><结束位置> 用<value>覆写<key>所存储的字符串值,从<起始位置>开始(索引从0开始)。
setex <key><过期时间><value> 设置键值的同时,设置过期时间,单位秒
getset<key><value> 以新换旧,设置了新值同时获取旧值。
2.1 List (列表)类型
是一个键对应多个值
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。
List的数据结构为快速链表quckList,在列表元素较少的情况下会使用一块连续的内存存储,这个结构是zipList (压缩列表)。当数据量比较多的时候才会改成quickList,因为普通的链表需要的附加指针空间太大,会比较浪费空间。