string机制
- SDS结构------>底层是字符数组,以"\0"结尾,这样就可以重用C语言库里的<string.h>中的部分函数。
- string内部结构实现上类似java的ArrayList
- 预先分配比实际占用空间大的空间,这样,当字符串长度变大时不用再申请内存空间
- 自动扩容(字符串存储空间),当字符串长度小于1M时,加倍现有的空间扩容,超过1M时,多扩容1M的空间。
字符串命令
-
set dog “wang” ex 60 nx//过期时间:60s,nx—>针对key是否存在设置规则
-
getset dog “li”
输出:“wang” //重新设置value值,并返回旧值 -
msetnx dog wang cat li //用于同时设置多个键值对。当key存在时执行失败
-
set word “hello woild”
setrange word 6 pengyu //从偏移量6开始覆盖
bitmap
- 通过将比特位设置为0/1来实现数据存取,本质是一个字节数组,存储上限2^32
- 应用场景:1代表签到,0代表未签,可以花费很少的时间统计用户365天签到次数, 位图中的每一条记录占用一bit,一年是365位;若使用string存储,则需要365个键值对
- 自动扩容
- 命令:对a设置其bit位上的值。setbit user 1 1就错了!!!1
set user a
setbit a 1 1
setbit a 2 1
setbit a 4 1
get a
输出:“h”
INCR数值操作
- 自增/减、加/减1
- 应用场景:点赞、关注
- 注意:redis有规定key----对应的value数值的范围,切类型must是整数、浮点数
- 实例:incr fans:num //自动创建key,初始化为1,每次增加1
incrby fans:num 3//增加3
incrbyfloat fans:num -10.5 //增加-10.5