redis中String的定义
·redis中没有String的基本类型,使用char数组来实现String类型的定义,从内部看来可以是一个byte数组,其最大上限是1gb,其数据结构的定义如下:
struct sdshdr{
long len;
long free;
char buf[]
}
len : 数组的长度
free: 是数组中剩余可用的字节数
buff: 是一个char数组用于存储实际的byte数据
操作命令
- set: eg:set name zhangsan 设置key=name, value=zhangsan 的键值对
- setnx: 设置 key 对应的值为 string 类型的 value。如果 key 已经存在,返回 0,nx 是 not exist 的意思 eg: >setnx name zhangsan 返回的就是0
- setex: 设置 key 对应的值为 string 类型的 value,并指定此键值对应的有效期。eg: setex name zhangsan 10 red 就是添加一个 name = zhangsan的键值对,并指定它的有效期是 10 秒
- setrange:设置指定 key 的 value 值的子字符串,意思是将指定key的value从指定位置进行替换,eg:>setrange name 1 lisi 其中的 1 是指从下标为 1(包含1)的字符开始替换为lisi
- mset:一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置。eg: > mset key1 HongWan1 key2 HongWan2
- msetnx: :一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置,但是不会覆盖已经存在的 key。
- get:获取 key 对应的 string 值,如果 key 不存在返回 nil。
- getset:设置 key 的值,并返回 key 的旧值
- getrange:获取指定 key 的 value 值的子字符串
- incr: 对 key 的值做加加操作,并返回新的值。注意 incr 一个不是 int 的 value 会返回错误,incr 一个不存在的 key,则设置 key 为 1
- incrby:同 incr 类似,加指定值 ,key 不存在时候会设置 key,并认为原来的 value 是 0
- decr: 对 key 的值做的是减减操作,decr 一个不存在 key,则设置 key 为-1
- decrby: 同decr,减指定值
使用场景
- 字符串结构使用非常广泛,一个常见的用途就是缓存用户信息。我们将用户信息结构体使用 JSON 序列化成字符串,然后将序列化后的字符串塞进 Redis 来缓存。同样,取用户信息会经过一次反序列化的过程。还有一个是使用incr命令进行计数,利用redis自带的递增命令来进行浏览数,点赞数的统计.