设值命令:
    set key value 设置 key 对应 string 类型的值,返回 1 表示成功,0 失败。
    set age 25 xx //存在键age时,返回1成功
    还可以设置带过期时间的:
    set age 23 ex 10 //10秒后过期 px 10000 毫秒过期

    setnx key value 如果 key 不存在,设置 key 对应 string 类型的值。如果 key 已经存在,返回 0。
    setnx name test //不存在键name时,返回1设置成功;存在的话失败0

    批量设置

    mset key1 value1 …… keyN valueN 一次设置多个 key 的值,成功返回 1 表示所有的值都设置了,失败返回 0 表示没有任何值被设置。

    msetnx key1 value1 …… keyN valueN 一次设置多个 key 的值,但是不会覆盖已经存在的 key

    批量设值:
    mset country china city beijing

    获值命令:
    get key 获取 key 对应的 string 值,如果 key 不存在返回 nil
    get age //存在则返回value, 不存在返回nil

    批量获取

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

    批量获取:
    mget country city address //返回china beigjin, address为nil

    1. <br />若没有mget命令,则要执行n次get命令<br />![](https://cdn.nlark.com/yuque/0/2020/jpeg/350923/1592469092521-886fc292-04e1-447b-bd24-94224e429551.jpeg#align=left&display=inline&height=200&margin=%5Bobject%20Object%5D&originHeight=200&originWidth=303&status=done&style=stroke&width=303)<br />使用mget=1次网络请求+redis内部n次查询<br />![](https://cdn.nlark.com/yuque/0/2020/jpeg/350923/1592469092672-f97620d0-ef47-4ec3-9e0b-13a46a4e8d07.jpeg#align=left&display=inline&height=159&margin=%5Bobject%20Object%5D&originHeight=159&originWidth=297&status=done&style=none&width=297)

    先获取key的值再设置key的值

    getset key value 先获取 key 的值,再设置 key 的值。如果 key 不存在返回 nil。

    计数:

    incr key 对 key 的值做++操作,并返回新的值。注意 incr 一个不是 int 的 value 会返回错误,incr 一个不存在的 key,则设置 key 值为 1。
    decr key 对 key 的值做—操作,decr 一个不存在 key,则设置 key 值为-1。
    incrby key integer 对 key 加上指定值 ,key 不存在时候会设置 key,并认为原来的 value是 0。
    decrby key integer 对 key 减去指定值。decrby 完全是为了可读性,我们完全可以通过 incrby一个负值来实现同样效果,反之一样

    incr age //必须为整数自加1,非整数返回错误,无age键从0自增返回1
    decr age //整数age减1
    incrby age 2 //整数age+2
    decrby age 2//整数age -2
    incrbyfloat score 1.1 //浮点型score+1.1

    append追加指令:
    set name hello; append name world //追加后成helloworld
    字符串长度:
    set hello “世界”;strlen hello//结果6,每个中文占3个字节
    截取字符串:
    set name helloworld ; getrange name 2 4//返回 llo