深入浅出Redis(零):Redis常用命令的使用

news2024/12/23 0:17:39

前言

Redis是一款基于键值对的数据结构存储系统,它的特点是基于内存操作、单线程处理命令、IO多路复用模型处理网络请求、键值对存储与简单丰富的数据结构等等

本篇文章作为深入浅出Redis(一):对象与数据结构的基础篇,将深入浅出的介绍Redis中常用命令,如果想了解底层实现可以去观看那篇文章

Redis中的命令分为两种,一种则是所有对象通用的,另一种是专门为对象使用的

本篇文章将先简单说明通用命令,再说明五大对象(string、hash、list、set、zset)专用命令

通用命令

  • keys *查看所有key
  • sort key 对key进行排序,key只能是list、set、zset对象
  • exists key查看这个key是否存在,存在为1,不存在为0

     127.0.0.1:6379> keys *
     1) "age"
     2) "name"
     127.0.0.1:6379> exists name
     (integer) 1
     127.0.0.1:6379> exists names
     (integer) 0
  • move key db把这个key移动到编号为几的数据库,成功为1,失败为0

     127.0.0.1:6379> move name 3      
     (integer) 1
     127.0.0.1:6379> keys  *
     1) "age"
     127.0.0.1:6379> select 3
     OK
     127.0.0.1:6379[3]> keys *
     1) "name"

    把name移动到了编号为3的数据库(第四个数据库)

  • expire key seconds让这个key多少秒失效,返回1为成功,0为失败

  • ttl key查看这个key的有效时间,返回-1为永久,-2为已过期,其他数字代表有效秒数

     127.0.0.1:6379[3]> expire name 10
     (integer) 1
     127.0.0.1:6379[3]> ttl name
     (integer) 7
     127.0.0.1:6379[3]> ttl name
     (integer) 6
     127.0.0.1:6379[3]> ttl name
     (integer) 5
     127.0.0.1:6379[3]> ttl name
     (integer) 4
     127.0.0.1:6379[3]> ttl name
     (integer) 2
     127.0.0.1:6379[3]> ttl name
     (integer) -2
     127.0.0.1:6379[3]> ttl name
     (integer) -2
     127.0.0.1:6379[3]> ttl name
     (integer) -2
     127.0.0.1:6379[3]> expire name 10
     (integer) 0
     127.0.0.1:6379[3]> keys *
     (empty list or set)
  • type key返回这个key的类型

     127.0.0.1:6379[3]> get age
     "1"
     127.0.0.1:6379[3]> type age
     string

String(字符串)

动态字符数组

  • set key value设置一个key的值

  • get key得到这个key的值

  • append key value给key追加字符串value。如果key不存在就相当于 set key

     127.0.0.1:6379> append name "hello"
     (integer) 5
     127.0.0.1:6379> get name
     "hello"
     127.0.0.1:6379> append name ",wrold!"
     (integer) 12
     127.0.0.1:6379> get name
     "hello,wrold!"
  • strlen key获得这个key的字符串长度

     127.0.0.1:6379> get name
     "hello,wrold!"
     127.0.0.1:6379> strlen name
     (integer) 12
  • incr key让key自增1

  • decr key让key自减1

     127.0.0.1:6379> set age 18
     OK
     127.0.0.1:6379> incr age
     (integer) 19
     127.0.0.1:6379> decr age
     (integer) 18
  • incrby key increment让key增加指定的增量(设置步长)

  • decrby key decrement让key减少指定的减量(设置步长)

     127.0.0.1:6379> get age
     "18"
     127.0.0.1:6379> incrby age 10
     (integer) 28
     127.0.0.1:6379> decrby age 20
     (integer) 8
  • getrange key start end截取字符串【start,end】(这里是下标,从0开始,end如果是-1就算截取到倒数第一位,类似substring方法)

  • setrange key offset value替换指定位置开始的字符串

     127.0.0.1:6379> get string
     "hello"
     127.0.0.1:6379> getrange string 0 2
     "hel"
     127.0.0.1:6379> setrange string 0 abcd
     (integer) 5
     127.0.0.1:6379> get string
     "abcdo"
  • setex key seconds value设置key的过期秒数(set with expire)

    127.0.0.1:6379> setex name 10 hello
    OK
    127.0.0.1:6379> get name
    "hello"
    127.0.0.1:6379> ttl name
    (integer) -2
    127.0.0.1:6379> get name
    (nil)
  • setnx key value如果key不存在就创建,存在就创建失败

     127.0.0.1:6379> setnx name liang
     (integer) 1
     127.0.0.1:6379> get name
     "liang"
     127.0.0.1:6379> setnx name chenliang
     (integer) 0
     127.0.0.1:6379> get name
     "liang"
  • mset key value[key value...]同时设置多个元素

  • mget key [key...]同时获取多个元素

     127.0.0.1:6379[3]> mset user:1:name liang user:1:age 18  
     #这个key是精妙的设计,user:{id}:{filed}
     OK
     127.0.0.1:6379[3]> mget user:1
     1) "{name:al,age:3}"
     127.0.0.1:6379[3]> mget user:1:name user:1:age
     1) "liang"
     2) "18"
  • msetnx key value[key value...]在setnx的基础上加上可同时创建多个,如果有一个存在,所有都不会创建成功(原子性)

  • getset先get再set

     127.0.0.1:6379[3]> getset name redis #不存在返回空
     (nil)
     127.0.0.1:6379[3]> getset name mongodb #返回原来设置的redis,再设置mongodb
     "redis"
     127.0.0.1:6379[3]> get name
     "mongodb"
  • rename key newkey重命名key

     127.0.0.1:6379> set name chenliang
     OK
     127.0.0.1:6379> rename name liang
     OK
     127.0.0.1:6379> get name
     (nil)
     127.0.0.1:6379> get liang
     "chenliang"
  • del key...删除一个或多个Key

     127.0.0.1:6379> get liang
     "chenliang"
     127.0.0.1:6379> del liang
     (integer) 1
     127.0.0.1:6379> get liang
     (nil)

Hash(哈希)

可以把hash当作map集合 Hash:key-<field,value>

有关hash的命令基本上是以h开头

可以把以下的key看成hash

  • hset key field value设置hash中的字段和值,返回1为创建并赋值,0为已经有了并覆盖

  • hget key field得到hash中一个字段对应的值

  • hmset key field value[field value...]设置同个hash的多个字段和值

  • hmget key field field...得到同个hash的多个字段对应的值

  • hgetall key获得这个hash的数据

     127.0.0.1:6379> hset user:1 name liang
     (integer) 1
     127.0.0.1:6379> hmset user:1 age 18 addres China
     OK
     127.0.0.1:6379> hget user:1 name
     "liang"
     127.0.0.1:6379> hmget user:1 age addres
     1) "18"
     2) "China"
     127.0.0.1:6379> hgetall user:1
     1) "name"
     2) "liang"
     3) "age"
     4) "18"
     5) "addres"
     6) "China"
     127.0.0.1:6379> hset user:1 name chenliang
     (integer) 0
     127.0.0.1:6379> hgetall user:1
     1) "name"
     2) "chenliang"
     3) "age"
     4) "18"
     5) "addres"
     6) "China"
  • hdel key field field...删除一个或多个hash指定字段(对应的值就消失了)

     127.0.0.1:6379> hgetall user:1
     1) "name"
     2) "chenliang"
     3) "age"
     4) "18"
     5) "addres"
     6) "China"
     127.0.0.1:6379> hdel user:1 addres age
     (integer) 2
     127.0.0.1:6379> hgetall user:1
     1) "name"
     2) "chenliang"
     127.0.0.1:6379> hdel user:1 name
     (integer) 1
     127.0.0.1:6379> hgetall user:1
     (empty list or set)
  • hlen key获得hash字段数

     127.0.0.1:6379> hmset user:2 name zhangsan age 20 address china
     OK
     127.0.0.1:6379> hlen user:2
     (integer) 3
  • hexists key field判断该hash中是否存在field该字段,在返回1,不在返回0

     127.0.0.1:6379> hgetall user:2
     1) "name"
     2) "zhangsan"
     3) "age"
     4) "20"
     5) "address"
     6) "china"
     127.0.0.1:6379> hexists user:2 name
     (integer) 1
     127.0.0.1:6379> hexists user:2 names
     (integer) 0
  • hkeys key只获得所有hash的字段

  • hvalue key只获得所有hash的值

     127.0.0.1:6379> hgetall user:2
     1) "name"
     2) "zhangsan"
     3) "age"
     4) "20"
     5) "address"
     6) "china"
     127.0.0.1:6379> hkeys user:2
     1) "name"
     2) "age"
     3) "address"
     127.0.0.1:6379> hvals user:2
     1) "zhangsan"
     2) "20"
     3) "china"
  • hincrby key field increment 给hash的字段自增(increment设置步长)

     127.0.0.1:6379> hset hash count 0
     (integer) 1
     127.0.0.1:6379> hincrby hash count 10
     (integer) 10
     127.0.0.1:6379> hincrby hash count -20
     (integer) -10
  • hsetnx key field value也是给hash设置字段和值,与hset不同的是如果已经存在就失败返回0,如果还没有就成功返回1,与setnx用法类似

     127.0.0.1:6379> hsetnx user:3 name liang
     (integer) 1
     127.0.0.1:6379> hsetnx user:3 name cheng
     (integer) 0
     127.0.0.1:6379> hvals user:3
     1) "liang"

List(列表)

有关List的指令大部分都是以L开头(往左边操作),以R开头(往右边操作)

以下的key可以看成列表

  • lpush key value...在队列头(左)插入一个或多个元素

  • rpush key value...在队列尾(右)插入一个或多个元素

  • lrange key start end用法与range相同

     127.0.0.1:6379> lpush list hello1 hello2 hello3
     (integer) 3
     127.0.0.1:6379> lrange list 0 -1
     1) "hello3"
     2) "hello2"
     3) "hello1"
     127.0.0.1:6379> rpush list hello4 hello5 hello6
     (integer) 6
     127.0.0.1:6379> lrange list 0 -1
     1) "hello3"
     2) "hello2"
     3) "hello1"
     4) "hello4"
     5) "hello5"
     6) "hello6"
  • lpop key从队列左边移除一个元素并返回

  • rpop key从队列右边移除一个元素并返回

     127.0.0.1:6379> lpop list
     "hello3"
     127.0.0.1:6379> rpop list
     "hello6"
     127.0.0.1:6379> lrange list 0 -1
     1) "hello2"
     2) "hello1"
     3) "hello4"
     4) "hello5"
  • lindex key index通过下标获取一个元素

  • llen key返回队列的长度

     127.0.0.1:6379> lrange list 0 -1
     1) "hello2"
     2) "hello1"
     3) "hello4"
     4) "hello5"
     127.0.0.1:6379> lindex list 0
     "hello2"
     127.0.0.1:6379> llen list
     (integer) 4
  • lrem count value从列表中删除多少个元素(从头到尾)

     127.0.0.1:6379> lrange list 0 -1
     1) "hello1"
     2) "hello4"
     3) "hello2"
     4) "hello1"
     5) "hello2"
     6) "hello1"
     7) "hello4"
     8) "hello5"
     127.0.0.1:6379> lrem list 2 hello1
     (integer) 2
     127.0.0.1:6379> lrange list 0 -1
     1) "hello4"
     2) "hello2"
     3) "hello2"
     4) "hello1"
     5) "hello4"
     6) "hello5"
  • ltrim key start end将列表修剪到指定范围(start从0开始 end-1表示倒数第一位)

     127.0.0.1:6379> lrange list 0 -1
     1) "hello4"
     2) "hello2"
     3) "hello2"
     4) "hello1"
     5) "hello4"
     6) "hello5"
     127.0.0.1:6379> ltrim list 2 -1
     OK
     127.0.0.1:6379> lrange list 0 -1
     1) "hello2"
     2) "hello1"
     3) "hello4"
     4) "hello5"
  • rpoplpush source destination将source的最后一个元素,插到destination的头部

     127.0.0.1:6379> lrange list 0 -1
     1) "hello2"
     2) "hello1"
     3) "hello4"
     4) "hello5"
     127.0.0.1:6379> lpush mylist hello1
     (integer) 1
     127.0.0.1:6379> rpoplpush list mylist
     "hello5"
     127.0.0.1:6379> lrange list  0 -1
     1) "hello2"
     2) "hello1"
     3) "hello4"
     127.0.0.1:6379> lrange mylist  0 -1
     1) "hello5"
     2) "hello1"
  • lset key index value将列表中指定的index下标的值替换为value,如果index超出范围返回error

     127.0.0.1:6379> lrange mylist  0 -1
     1) "hello5"
     2) "hello1"
     127.0.0.1:6379> lset mylist 2 hello
     (error) ERR index out of range
     127.0.0.1:6379> lset mylist 0 hello
     OK
     127.0.0.1:6379> lrange mylist 0 -1
     1) "hello"
     2) "hello1"
  • linsert key before|after pivot value在列表中的一个元素(pivot)之前(before)或之后(after)插入另一个元素(value)

     127.0.0.1:6379> lrange mylist 0 -1
     1) "hello"
     2) "hello1"
     127.0.0.1:6379> linsert mylist before hello1 hello0
     (integer) 3
     127.0.0.1:6379> linsert mylist after hello1 hello2
     (integer) 4
     127.0.0.1:6379> lrange mylist 0 -1
     1) "hello"
     2) "hello0"
     3) "hello1"
     4) "hello2"
  • 阻塞

    blpop key 时间秒

    brpop key 时间秒

    image.png

Set(集合)

无序,不可重复的散列表:Key用来存值,Value则是空的(类似HashSet)

有关set的指令基本上都是以s开头

以下的key可以看成set集合

  • sadd key value...给set集合中添加一个或多个元素,返回1为成功,0为失败

  • smembers key查看set集合中所有元素

  • sismember key value判断value是不是在set集合中

  • scard key返回set集合中的元素个数

     127.0.0.1:6379> sadd set1 a
     (integer) 1
     127.0.0.1:6379> sadd set1 b
     (integer) 1
     127.0.0.1:6379> sadd set1 c
     (integer) 1
     127.0.0.1:6379> smembers set1
     1) "c"
     2) "b"
     3) "a"
     127.0.0.1:6379> sismember set1 a
     (integer) 1
     127.0.0.1:6379> sismember set1 d
     (integer) 0
     127.0.0.1:6379> scard set1
     (integer) 3
  • srandmember key [count]随机抽取set集合中的多个元素,不写count默认一个,返回抽中的元素

     127.0.0.1:6379> srandmember set1
     "b"
     127.0.0.1:6379> srandmember set1
     "c"
     127.0.0.1:6379> srandmember set1 2
     1) "b"
     2) "a"
  • srem key value...指定删除一个或多个set集合中的元素,返回删除的元素

     127.0.0.1:6379> smembers set1
     1) "c"
     2) "b"
     3) "a"
     127.0.0.1:6379> srem set1 a b
     (integer) 2
     127.0.0.1:6379> smembers set1
     1) "c"
  • spop key [count]随机删除set集合中的元素,不写count默认一个,返回删除的元素

     127.0.0.1:6379> smembers set1
     1) "c"
     2) "b"
     3) "a"
     4) "d"
     127.0.0.1:6379> spop set1
     "d"
     127.0.0.1:6379> spop set1 2
     1) "c"
     2) "b"
     127.0.0.1:6379> smembers set1
     1) "a"
  • smove source destination member将set集合(source)中指定的一个元素(member)移动到另一个set集合(destination)中

     127.0.0.1:6379> smembers set1
     1) "a"
     127.0.0.1:6379> sadd set2 b
     (integer) 1
     127.0.0.1:6379> smove set1 set2 a
     (integer) 1
     127.0.0.1:6379> smembers set1
     (empty list or set)
     127.0.0.1:6379> smembers set2
     1) "b"
     2) "a"
  • sdiff key key..差集(以第一个set集合作为对象去比较)

  • sinter key key..交集(以第一个set集合作为对象去比较)【共同好友的实现】

  • sunion key key..并集(以第一个set集合作为对象去比较)

     127.0.0.1:6379> sadd set1 a b c
     (integer) 3
     127.0.0.1:6379> sadd set2 c d f
     (integer) 3
     127.0.0.1:6379> sdiff set1 set2
     1) "b"
     2) "a"
     127.0.0.1:6379> sinter set1 set2
     1) "c"
     127.0.0.1:6379> sunion set1 set2
     1) "c"
     2) "b"
     3) "f"
     4) "a"
     5) "d"

Zset(有序集合)

看作是一个有序的集合,它比集合多了一个score用来排序

把以下的key看成有序集合

  • zadd key score member在同一个有序集合中添加一个或多个带score的值

  • zrangebyscore key min max [withscores]让有序集合从min到max这个范围排序输出,-inf ,+inf代表负无穷,正无穷,如果加上withscores就会把成员的score也输出出来

  • zrevrangebyscore key min max [withscores]从max到min ,与zrangebuscore 类似

  • zrevrange key start stop从score高到低输出成员 0代表第一个元素,-1代表倒数第一个

  • zrange key start stop从score低到高输出成员 0代表第一个元素,-1代表倒数第一个

     127.0.0.1:6379> zadd zset 1 one 2 two 3 three
     (integer) 3
     127.0.0.1:6379> zrangebyscore zset 0 2 
     1) "one"
     2) "two"
     127.0.0.1:6379> zrangebyscore zset -inf +inf
     1) "one"
     2) "two"
     3) "three"
     127.0.0.1:6379> zrangebyscore zset -inf +inf withscores
     1) "one"
     2) "1"
     3) "two"
     4) "2"
     5) "three"
     6) "3"
     127.0.0.1:6379> zrevrangebyscore zset +inf -inf withscores
     1) "three"
     2) "3"
     3) "two"
     4) "2"
     5) "one"
     6) "1"
     127.0.0.1:6379> zrange zset 0 -1
     1) "one"
     2) "two"
     3) "three"
     127.0.0.1:6379> zrevrange zset 0 -1
     1) "three"
     2) "two"
     3) "one"
  • zrem key member member...移除有序集合中的成员

  • zcard key获得有序集合中的个数

  • zcount key min max获得min~max范围之间的成员数量

     127.0.0.1:6379> zrange zset 0 -1
     1) "one"
     2) "two"
     3) "three"
     127.0.0.1:6379> zrem zset one
     (integer) 1
     127.0.0.1:6379> zrange zset 0 -1
     1) "two"
     2) "three"
     127.0.0.1:6379> zcard zset
     (integer) 2
     127.0.0.1:6379> zcount zset -inf +inf
     (integer) 2

最后(一键三连求求拉~)

本篇文章笔记以及案例被收入 gitee-StudyJava、 github-StudyJava 感兴趣的同学可以stat下持续关注喔~

有什么问题可以在评论区交流,如果觉得菜菜写的不错,可以点赞、关注、收藏支持一下~

关注菜菜,分享更多干货,公众号:菜菜的后端私房菜

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1482848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker自定义镜像与上传

alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版&#xff0c;它不同于通常的Linux发行版&#xff0c;Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗。 2.Alpine Linux提供了自己的包管理工具&#xff1a;apk(注意&#xff1a;…

修改docker默认存储位置【高版本的docker】

一、修改docker默认存储位置 1、停服务 systemctl stop docker 2、修改/etc/docker/daemon.json添加新的dcoker路径 如"data-root": "/mnt/hdd1/docker" 3、保存后重启服务&#xff1a;systemctl restart docker 二、其他服务的命令 systemctl disab…

4.1.CVAT——目标检测的标注详细步骤

文章目录 1. 进入任务1. 创建任务2. 已创建的task3. 进入标注界面 2. 选择标注类型2.1 选择标注类型2.2 进行标注2.3 遮挡 2.快捷键3.导出标注结果 1. 进入任务 登录后会看到如下图界面&#xff0c;CVAT的标注最小单位是Task&#xff0c;每个Task为一个标注任务。点击Task按钮…

python实现ElGamal算法

ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法&#xff0c;基于公钥密码体制和椭圆曲线加密体系&#xff0c;其安全性是基于有限域上离散对数学问题的难解性。至今仍是一个安全性良好的公钥密码算法。既可用于加密又可用于数字签名的公钥密码体制。 数字签…

浅谈人才招聘APP开发的解决方案

随着企业竞争加剧&#xff0c;高效、精准地招聘人才成为企业持续发展的关键。人才招聘系统能够简化招聘流程&#xff0c;提高效率&#xff0c;确保企业快速找到合适人才。同时&#xff0c;通过智能匹配和数据分析&#xff0c;提升招聘质量&#xff0c;优化候选人体验。因此&…

【Vue3】自定义 Vue3 插件(全局实现页面加载动画)

// main.ts import { createApp } from vue import App from ./App.vue import Loading from "./components/Loading/index.ts";const app createApp(App) type Lod {show: () > void,hide: () > void } //编写ts loading 声明文件放置报错 和 智能提示 decl…

腾讯云优惠券领取的三个渠道,一个比一个优惠!

腾讯云代金券领取渠道有哪些&#xff1f;腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券&#xff0c;大家也可以在腾讯云百科蹲守代金券&#xff0c;因为腾讯云代金券领取渠道比较分散&#xff0c;腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

MyBatis 学习(四)之 SQL 映射文件

目录 1 SQL 映射文件介绍 2 select 元素 3 insert 元素 4 update 和 delete 元素 5 sql 元素 6 parameterType 元素 7 resultType 元素 8 resultMap 元素&#xff08;重要&#xff09; 9 参考文档 1 SQL 映射文件介绍 映射器是 MyBatis 中最复杂并且是最重要的…

Vue开发实例(二)Vue代码运行及分析配置

Vue项目代码运行及分析 一、项目运行二、目录结构说明1、项目本身结构2、其他可能用到的文件夹 三、建议配置1、启动服务浏览器自动打开页面地址2、关闭eslint校验工具3、 src文件夹的别名的设置 一、项目运行 上篇文件末尾介绍到&#xff0c;进入项目&#xff0c;运行启动命令…

Unity(第二十二部)官方的反向动力学一般使用商城的IK插件,这个用的不多

反向动力学&#xff08;Inverse Kinematic&#xff0c;简称IK&#xff09;是一种通过子节点带动父节点运动的方法。 正向动力学 在骨骼动画中&#xff0c;大多数动画是通过将骨架中的关节角度旋转到预定值来生成的&#xff0c;子关节的位置根据父关节的旋转而改变&#xff0c;这…

【LeetCode】【滑动窗口长度不固定】978 最长湍流子数组

1794.【软件认证】最长的指定瑕疵度的元音子串 这个例题&#xff0c;是滑动窗口中长度不定求最大的题目&#xff0c;在看题之前可以先看一下【leetcode每日一题】【滑动窗口长度不固定】案例。 题目描述 定义&#xff1a;开头和结尾都是元音字母&#xff08;aeiouAEIOU&…

java基础-mysql

文章目录 mysql基础面试题什么是mysql什么是事务并发事务带来的影响事物的隔离级别索引大表优化什么是池化思想&#xff0c;什么是数据库连接池&#xff0c;为什么要用数据库连接池⾏锁&#xff0c;表锁&#xff1b;乐观锁&#xff0c;悲观锁MySQL主备同步的基本原理SQL什么情况…

2024年腾讯云优惠代金券领取入口汇总(新老用户免费领)

腾讯云代金券领取渠道有哪些&#xff1f;腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券&#xff0c;大家也可以在腾讯云百科蹲守代金券&#xff0c;因为腾讯云代金券领取渠道比较分散&#xff0c;腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

基于 STM32U5 片内温度传感器正确测算温度

目录预览 1、引言 2、问题 3、小结 01 引言 STM32 在内部都集成了一个温度传感器&#xff0c;STM32U5 也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度&#xff0c;但是用于监控晶圆上的温度还是挺好的&#xff0c;以防止芯片过温运行。 02 问题…

springcloud和基础服务的搭建以及封装

page分页也进行了封装&#xff0c;只需要添加到pom中&#xff0c;将会自动进行分页&#xff0c;并且后端不需要写任何的分页数据。只需要前端自己传分页参数即可&#xff0c;并且里面封装了很多类型的参数类型。自定义的很多注解&#xff0c;并且也支持多个版本的同一个接口名称…

推荐一个屏幕上鼠标高亮显示的小工具

在视频录制等特定场景下&#xff0c;很多人希望在点击鼠标时能够在屏幕上及时进行显示&#xff0c;便于别人发现&#xff0c;提高别人的注意力。 因此&#xff0c;很多录屏软件中都内含显示鼠标点击功能。那如果不支持该怎么办呢&#xff1f;其实&#xff0c;也是可以通过其他工…

MongoDB聚合运算符:$count

文章目录 语法使用举例在$group阶段中使用在$setWindowFields阶段使用 $count聚合运算符返回分组中文档的数量。从5.0开始支持。 语法 { $count: { } }$count不需要参数 使用 $count可以用于下列聚合阶段&#xff1a; $bucket$bucket$group$setWindowFields 在$group阶段中…

vue3创建h5 项目使用rem做响应式的配置

第一步 安装依赖&#xff1a; npm install amfe-flexible -S npm install postcss-px2rem -S第二步 main.ts文件中导入 import "amfe-flexible/index.js";第三步 进行配置&#xff1a; vue3 项目中创建 postcss.cinfig.js文件&#xff0c;这里是基于设计稿是750px…

【k8s管理--两种方式安装prometheus】

1、k8s的监控方案 1.1 Heapster Heapster是容器集群监控和性能分忻工具&#xff0c;天然的支持Kubernetes和CoreOS。 Kubernetes有个出名的监控agent–cAdvisor。在每个kubernetes Node上都会运行cAdvisor&#xff0c;它会收集本机以及容器的监控数(cpu,memory,filesystem,ne…

java学习笔记-初级

完整笔记下载链接&#xff1a;https://download.csdn.net/download/qq_48257021/88800766?spm1001.2014.3001.5503 一、变量 1.双标签 <!-- 外部js script 双标签 --><script srcmy.js></script> 在新文件my.js里面写&#xff1a; 2.字符串定义&#xff…