本篇文章给大家谈谈redis常用命令,以及redis常用命令实验报告对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Redis数据结构之string类型和list类型
- 2、210629:Linux中使用curl命令发送带参数的get请求和post请求-Redis中常用命令
- 3、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常用命令实验报告的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。