redis常用命令(redis常用命令实验报告)

本篇文章给大家谈谈redis常用命令,以及redis常用命令实验报告对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Redis数据结构之string类型和list类型

        String是redis最基础和最常用的数据结构,其值最大能存储 512MB,可以是简单字符串、复杂的xml/json的字符串、二进制图像或者音频的字符串、以及可以是数字的字符串。String底层使用的是SDS,是Redis的一种基本数据结构,主要是用于存储字符串和整数。

    2.1  set命令  set key value

        用于设置给定key的值,如果key存储了其他值,覆盖写入,无视类型。

    2.2 get命令 get key

        获取指定key的值,如果key不存在返回nil

    2.3 getset命令 get key [value]

        该命令用于获取指定的key的旧值,然后按照新值对key进行赋值。当key中没有旧值的时候返回nil。

    2.4 mget命令 get key1 [key2 keyN]

        返回多个key的值,某个key不存在时返回nil

    2.5 decr命令 decr key

        对key对应的数字做减1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0。如果key有一个错误类型的value或者是一个不能表示成数字的字符串,就返回错误。

    2.6 incr命令 incr key

        对key对应的数字做减1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0。如果key有一个错误类型的value或者是一个不能表示成数字的字符串,就返回错误。

    2.7 append命令 append key value

    如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾。 如果 key 不存在,那么它将首先创建一个空字符串的key,再执行追加操作,这种情况 APPEND 将类似于 SET 操作。返回append后字符串值(value)的长度。

    3.1 SDS动态字符串

   悔洞岁     struct sdshdr {

            unsigned int len;

            unsigned int free;

            char buf[];

        }

        其中,buf表示数据空间,用于存储字符串;len表示buf中已占用的字节数;free表示空闲的字节数。

    3.2 新的SDS结构

        增加了一个flags来标识类型,用一个字节(8位)来存储,前3位表示字符串的类型;剩余5位,存储长度小于32的段字符串。

        创建 SDS 的大致流程是这样的:首先根据字符串长度计算得到 type,根据 type 计算头部所需长度,然后动态分配内存空间。

        注意:① 创建空字符串时,SDS_TYPE_5 被强制转换为 SDS_TYPE_8(原因是创建空字符串后,内容可能会频繁更新而引发扩容操作,故直接创建为 sdshdr8)

                    ②长度计算有 +1 操作,因为结束符 \0 会占用一个长度的空间。

                    ③返回的是指向 buf 的指针 s。

    4.1 session共享

    4.2 计数器(商品浏览记录)

     4.3 访问限速

    list类型用来存储多个有序的字符串,列表当中的每一个字符看做一个元素,一个列表当中可以存储有一个或者多个元素,redis的list支持存储2^32次方-1个元素。

    Redis可以从两端push和pop元素,支持读取指定范围或者制定下表的元素。list是一种灵活的链式结构,可以充当队列或者栈的角色。

    list的元素是有序的,且列表内的元碧睁素是可以重复的。

    注意:Redis3.2以前,列表底层的编码是ziplist(压缩列表)和linkedlist(双向列表)实现的,因为双线列表占用的内存比压缩列表多,所以当创建新的列表键时,列表会优先考虑用压缩列表,只有在需要的时候才会转换到双向列表实现。3.2以后重新引入了一个quicklist,列表底层都是有quicklist实现,quicklist是一个由ziplist组成的双向列表,每个节点使用ziplist来存储数据。

       2.1 Lpush命令 lpush key value

        将一个或多个值插入到列表头部。 如果 key 不存在,则创建list,然后再插入数据操作。 当 key 存在但不是列表类型时,返回颤野一个错误。

    2.2 Rpush命令 rpush key value

        将一个或多个值从list的尾部插入

    2.3 Blpop命令 blpop key seconds

        Blpop是取出列表的第一个元素,如果list中没有元素则会一直等到到超时,或者发现有数据为止,seconds是指定多少秒返回。如没有数据,则返回nil。

        同理,Bropo为移除list列表的最后一个元素

    2.4 Linsert命令 linsert key before/after val1 val2

        在list列表的某一个元素前或者后插入另外一个元素。当指的的元素不存在时,不执行任何动作。如果列表不存在时,视为空列表,不执行任何动作。

    2.5 Lindex命令 lindex key index

        通过链表的下标获取列表中的元素,可以是-1表示链表最后一个元素,-2代表倒数第二个元素,没有返回nil

    2.6 Llen命令 llen key

        返回list的长度,如果list不存在,返回0

    2.7 Lrange命令

        返回指定list区间内的元素,区间以偏移量start和end决定。其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

    5.1 队列秒杀抢购

        list类型的lpop和rpush(或者反过来,lpush和rpop)能实现队列的功能,故而可以用Redis的list类型实现简单的点对点的消息队列。不过不推荐在实战中这么使用,因为现在已经有Kafka、NSQ、RabbitMQ等成熟的消息队列了,它们的功能已经很完善了,除非是为了更深入地理解消息队列,不然没必要去重复造轮子。

    5.2 排行榜

        list类型的lrange命令可以分页查看队列中的数据。可将每隔一段时间计算一次的排行榜存储在list类型中。只有定时计算的排行榜才适合使用list类型存储,与定时计算的排行榜相对应的是实时计算的排行榜,list类型不能支持实时计算的排行榜。

[img]

210629:Linux中使用curl命令发送带参数的get请求和post请求-Redis中常用命令

curl命令 + 请求接口的地址

如果想看到详细的请求信息,可以加上 -v 参数

结果如下:

可以用 -X POST 来申明我们的请求方法,用 -d 参数,来传送我们的参数。

所以,我们可以用 -X PUT 和 -X DELETE 来指定另外的请求方法。

上面就是一个普通的 post带两个参数请求

但是,当我们的接口都是 json 格式的时候,我们可以用 -H 参数来申明请求的 header

我们可以用 -H 来设置更多的 header ,同样,我们也可以用 -v 来查看详者薯链细的请求信息

上面手团的两种请求,都是只传输字符串数据

通常我们的开发过程中也需要使用POST接口上传文件

我们首孙添加参数 -F "file=@FILE_PATH" 传输文件即可。命令如下:

redis 查看keys 的有效期:

全量遍历键

docker进入redis客户端

Redis操作数据常用命令详细注释

使用help查询有哪些命令

示例所有Key名都为bigkang为示例

首先我们需要了解什么是Bit,其实所有的Bit操作都是在操作字符串类型,我们设置了bit以后可以发现他的类型其实是一个String

然后我们来获取这个bit的类型

那么我们就会发现其实存储的数据是一个字符串,那么字符串和bit有什么关系呢,我们知道Redis中的字符串底层采用的SDS,实际上它存储的一个char数组,那么这个char数组,那么C语言中一个char等于1个byte,一个byte等于8个bit,我们可以知道一个char能够存储8个bit,那么Redis的String能够存储512MB,那么我们再来看一下最大能够存储多少个bit位:

最大存储数量

512 * 1024 * 1024 * 8 = 42 9496 7296 (大约43亿)

MB KB Byte BIit

我们就能够存储大约43亿bit,每个bit的值只能是0 或樱信者 1

我们上访的操作 setbit newbit 1 1 就是将bit位为1,也就是第二个bit设置为1,bit为数组

大概的流程图如下:

这样我们就可以知道bit位在 0 - 7的属于第一个字节,8 - 15属于第二个字节,那么我们现在来测试一下吧

例如我们想要获取某个bit位的值,我们使用getbit

BitCount可以统计我们的Bit数组中的值为1的数据,例如我想要统计bit位的值的结果有多少。(!注意是根据一个char,也就是一个byte=8bit进行统计,每个值表示相应的8个bit)

如下

或者根据范围进行统计携大

Bit主要用来帮助我们对不同Bit进行操作,和Set中的并集,并归等类似。

现在我们来初始化两个bit数据

目前两个Bit中的结构如下

那么我们知道既然是二进制,那么肯定是有运算的,例如与,或等等

Redis提供了如下几种

AND

OR

NOT

XOR

Bit操作可以帮助我们存储大量的数据,以及状态,我们可以在多个场景下使用,例如用户的连续登录,辩颂竖以及活跃用户统计。

例如如下操作,我们的Key采用 login-年-月-日 ,bit位 使用用户ID,状态为1

关于redis常用命令和redis常用命令实验报告的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

Powered By Z-BlogPHP 1.7.2

备案号:蜀ICP备2023005218号