Redis 数据库支持多种数据类型,主要有:StringListSetSorted SetHash 等,每种数据类型都有其各自的特点。

一、string 类型

String 类型是一种二进制安全的数据类型,可以把图片和视频保存未 String 类型的 Value ,String 数据类型的底层实现类似于:

struct sdshdr {
    long len;
    long free;
    char bug[];
}

数组用于存放 string 的实际内容,len 字段用于记录 buf 的长度,free 字段用于记录 buf 数组剩余的可用空间。

由于 string 数据底层有单独用于记录数据长度和空间的字段(len 和 free 字段),所欲不必使用一般的 nil 字符作为结束,从而实现了二进制安全。通常情况,string 数据类型用于缓存一些网站的静态文件,如图片、CSS文件等。

二、相关 redis-cli 命令

set key value:设置 key 对应的值为 value,成功返回1,否则返回0;

setnx key value:如果 key 对应的值已经存在则返回0,否则设置值为 value;

get key:获取 key 对应的值,否则返回 nil;

getset key value:先获取 key 对应的值,然后设置值为 value,如果值不存在,则返回 nil;

mget key1 key2......keyN:一次获取多个 key 对应的值,如果有不存在的 key,则对应返回 nil;

mset key1 value1......keyN valueN:一次性设置多个 key 对应的值,全部成功返回1,设置失败返回0;

msetnx key1 value1......keyN valueN:一次性设置多个 key 对应的值,但是不覆盖已经存在的 key;

incr key:对应的 key 值增加1,成功后返回新的值,如果对应的值不是整型,返回错误。如果 key 不存在,则设置一个新的 key 对应的值为1;

decr key:对应的 key 值减1,如果 key 对应的值不存在,则设置一个新的 key 对应值为-1;

incrby key int:对应的 key 值增加 int,返回新的值;

decrby key int:对应的 key 值减少 int,返回新的值;