(三)redis常用命令之string

  • 概述
    string可能是最普遍的数据类型了,在redis中,字符串可以存储的值还是很多的,当然这要结合业务场景。字符串类型可以存储:简单字符串,复杂字符串(json/xml),数字,二进制(图片,视频),但是单个值不能超过512M。

  • set(添加一个键值对)
    格式:set key value [ex seconds] [px milliseconds] [nx|xx]
    ex seconds:设置秒级过期时间
    px milliseconds 设置毫秒过期时间
    nx|xx : nx(必须键不存在才可以设置成功),xx(和nx相反)
    在这里插入图片描述
    在这里插入图片描述

  • setex(添加一个有过期时间的键值对)
    格式: setex key seconds value
    在这里插入图片描述

  • setnx(添加一个不存在的键值对)
    格式: setnx key value
    在这里插入图片描述
    注意:为什么要把这个命令单独出来,因为只有一个键不存在的情况下,setnx才可以执行成功,这个是在使用分布式锁的场景使用;当我们程序并发访问一个资源的时候,我们可以通过setnx设置是否成功,来控制并发(redis是单线程的,所以只有一个会setnx成功)。

  • get(获取对应键的值)
    get key
    在这里插入图片描述

  • mset(批量设置值)
    格式: mset key value [key value …]
    在这里插入图片描述
    -mget(批量获取键值对)
    格式:mget key [key …]
    在这里插入图片描述
    注意:鼓励使用批量操作,因为每次执行一个redis命令,实际时间=网络时间+执行命令时间,使用批量命令可以使多个命令只需要一次网络时间(redis每次能执行数万次读写,指的是执行命令次数,不包括网络时间)。

  • 内部编码选择
    字符串类型的数据结构有三种内部编码:int,embstr,raw
    int: 8个字节的长整型
    embstr: 小于等于39个字节的字符串
    raw:大于39个字节的字符串
    在这里插入图片描述

  • 字符串使用场景
    1.缓存功能(缓存记录信息,序列化为json; 缓存简单字符串)
    在这里插入图片描述
    a.如果从redis可以获取,那么直接返回
    b.如果从redis获取不到,那么查询mysql ,再将查询结果放入redis,返回结果

    2.计数器
    计算视频点击次数,视频播放次数,网页浏览次数等;因为redis是单线程的所以不会发生更新丢失的情况。
    3.共享session
    在这里插入图片描述
    因为现在应用都是分布式的,一个服务部署了好几个节点,如果各自内存是独立的,用户session信息总是在登录的节点的内存中,不能共享内存,所有在负载的情况下,用户可能要多次登录
    在这里插入图片描述
    如果用户的session存放在统一的内存中就可以解决多次登录的问题,解决方案就是存放在redis中,每次去校验 用户是否登录
    4.限速
    比如用户在登录时或者注册的时候,是需要发送验证码,为了防止用户刷我们短信平台,我们可以进行限制,通过使用 key和用户手机号绑定,值设置用户访问次数,每访问一次+1
    在这里插入图片描述
    可以看到我们对一个电话号码映射了一个访问次数,这个key的过期时间是60s,也就是单个用户发短信一分钟次数的一个限制。

发布了65 篇原创文章 · 获赞 11 · 访问量 7166

猜你喜欢

转载自blog.csdn.net/weixin_38312719/article/details/94958044