百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

2023年Redis面试题大全(redis面试题2020)

mhr18 2024-11-16 23:33 20 浏览 0 评论

标题目录

  • 什么是Redis,Redis优缺点
  • 什么是NoSQL,特点和意义
  • Redis String 常用命令,应用场景
  • Redis Hash常用命令,应用场景
  • Redis List 常用命令,应用场景
  • Redis Set 常用命令,应用场景
  • Redis ZSet 常用命令,应用场景
  • Redis内存开发管理(淘汰策略机制)
  • Redis持久化机制( RDB和AOF区别)
  • Redis和MYSQL如何保持一致性(同步)
  • 什么是缓存穿透,解决方案、如何避免缓存穿透
  • 什么是缓存雪崩,解决方案
  • 什么是Redis集群、Redis集群特点(Cluster)
  • 什么情况下集群单个master不可用?什么情况下整个集群不可用?
  • 数据库和Redis如何做到数据同步(一致性)?

什么是Redis

Redis 是完全开源免费的,是一个高性能(NOSQL)的key-value数据库,Redis使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

根据业内项目实践经验及企业级开发中:

可以用作数据库、缓存、秒杀、计数器、排行榜、热点数据(经常会被查询,但是不经常被修改或者删除的数据)、分布式锁、分布式ID、和消息中间件等大部分功能等性能密切相关场景里

Redis的优缺点

优点:

  • 性能极高 – 由于数据是存储在内存中(Redis能读的速度是110000次/s,写的速度是81000次/s )。
  • 丰富的数据类型 – Redis支持的类型 String, Hash,List, Set 及 Ordered Set 等数据类型操作。
  • 原子性 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
  • 高速读写 redis使用自己实现的分离器,代码量很短,没有使用lock(MySQL),因此效率非常高。
  • 持久化 Redis直接将数据存储到内存中,要将数据保存到磁盘上,Redis可以使用两种方式实现持久化过程。定时快照(snapshot):每隔一段时间将整个数据库写到磁盘上,每次均是写全部数据,代价非常高。第二种方式基于语句追加(aof):只追踪变化的数据,但是追加的log可能过大,同时所有的操作均重新执行一遍,回复速度慢。

缺点:

  • 耗内存,占用内存过高。
  • 在线扩容,Redis难以支持在线扩容,尤其在集群场景里,当存储容量达到上限后,在线扩容会非常困难。

什么是NoSQL

NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题

NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题

NoSQL的特点:

1、数据模型比较简单;

2、需要灵活性更强的IT系统;

3、对数据库性能要求较高;

4、不需要高度的数据一致性;

5、对于给定key,比较容易映射复杂值的环境



Redis String 常用命令,应用场景

string类型是Redis最基本的数据类型。

string 数据结构是简单的key-value类型,value其不仅是string,也可以是数字,是包含很多种类型的特殊类型

常用命令:

赋值语法:
  SET KEY_NAME   VALUE: (说明:多次设置name会覆盖) (Redis SET 命令用于设置给定 key 的值。如果 key 已经存储值, SET 就覆写旧值,且无视类型)
  
命令:
  SETNX key1 value:(not exist) 如果key1不存在,则设值 并返回1。如果key1存在,则不设值并返回0;(解决分布式锁 方案之一,只有在 key 不存在时设置 key 的值。Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值)
  
  SETEX key1 10 lx :(expired) 设置key1的值为lx,过期时间为10秒,10秒后key1清除(key也清除)
 
  SETRANGE string range value: 替换字符串
  

 
取值语法:
 GET KEY_NAME :Redis GET命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。
 GETRANGE key start end :用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)

GETBIT key offset :对 key 所储存的字符串值,获取指定偏移量上的位(bit)

GETSET语法:  GETSET  KEY_NAME  VALUE :Getset 命令用于设置指定 key 的值,并返回 key 的旧值,当 key 不存在时,返回 nil 

STRLEN key :返回 key 所储存的字符串值的长度


删值语法:
DEL KEY_Name :删除指定的KEY,如果存在,返回值数字类型。

批量写:MSET k1 v1 k2 v2 ... 一次性写入多个值
批量读:MGET k1 k2 k3

GETSET name value :一次性设值和读取(返回旧值,写上新值)

自增/自减:
INCR KEY_Name :Incr 命令将 key 中储存的数字值增1。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作 
 自增:INCRBY KEY_Name :增量值 Incrby 命令将 key 中储存的数字加上指定的增量值 
 自减:DECR KEY_NAME       或    DECYBY KEY_NAME 减值 :DECR 命令将 key 中储存的数字减1
 
 :(注意这些 key 对应的必须是数字类型字符串,否则会出错,)

字符串拼接:APPEND  KEY_NAME VALUE 
 :Append 命令用于为指定的 key 追加至未尾,如果不存在,为其赋值

字符串长度 :STRLEN key

应用场景:

  • 1、String通常用于保存单个字符串或JSON字符串数据
  • 2、因String是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储
  • 3、计数器(常规key-value缓存应用。常规计数: 微博数, 粉丝数)

Redis Hash常用命令,应用场景

Hash类型是String类型的field和value的映射表,或者说是一个String集合。hash特别适合用于存储对象,相比较而言,将一个对象类型存储在Hash类型要存储在String类型里占用更少的内存空间,并对整个对象的存取。

常用命令:

赋值语法: 
 HSET KEY  FIELD VALUE    :为指定的KEY,设定FILD/VALUE  
 HMSET KEY FIELD VALUE [FIELD1,VALUE1]…… :同时将多个 field-value (域-值)对设置到哈希表 key 中。 
 
取值语法: 
  HGET KEY FIELD   :获取存储在HASH中的值,根据FIELD得到VALUE
  HMGET KEY field[field1]      :获取key所有给定字段的值 
  HGETALL KEY      :返回HASH表中所有的字段和值 
	
HKEYS KEY  :获取所有哈希表中的字段
HLEN KEY   :获取哈希表中字段的数量

删除语法: 
   HDEL KEY field1[field2]    :删除一个或多个HASH表字段 

其它语法:
HSETNX key field value :只有在字段 field 不存在时,设置哈希表字段的值

HINCRBY key field increment :为哈希表 key 中的指定字段的整数值加上增量 increment 。

HINCRBYFLOAT key field increment  :为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

HEXISTS key field  :查看哈希表 key 中,指定的字段是否存在

应用场景:

1、 常用于存储一个对象

2、分布式Session等

Redis List 常用命令,应用场景

List类型是一个链表结构的集合,我们可以通过相关的操作进行集合的头部或者尾部添加和删除元素,List的设计非常简单精巧,即可以作为栈,又可以作为队列,满足绝大多数的需求。

常用命令:

赋值

赋值语法: 
    LPUSH key value1 [value2]  :将一个或多个值插入到列表头部(从左侧添加)
    RPUSH key value1 [value2]  :在列表中添加一个或多个值(从右侧添加)
    LPUSHX key value   :将一个值插入到已存在的列表头部。如果列表不在,操作无效
    RPUSHX key value   :一个值插入已存在的列表尾部(最右边)。如果列表不在,操作无效。

取值

取值语法: 
    LLEN key      :获取列表长度
    LINDEX key index   :通过索引获取列表中的元素
    LRANGE key start stop  :获取列表指定范围内的元素

删除

删除语法:
    LPOP key  移出并获取列表的第一个元素(从左侧删除)
    RPOP key  移除列表的最后一个元素,返回值为移除的元素(从右侧删除)

    BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

修改

修改语法:

    LSET key index value  :通过索引设置列表元素的值
    LINSERT key BEFORE|AFTER world value :在列表的元素前或者后插入元素 描述:将值 value 插入到列表 key 当中,位于值 world 之前或之后。

高级命令

高级语法:
    RPOPLPUSH source destination :移除列表的最后一个元素,并将该元素添加到另一个列表并返回  
    示例描述:
        RPOPLPUSH a1  a2   :a1的最后元素移到a2的左侧
        RPOPLPUSH a1  a1   :循环列表,将最后元素移到最左侧
    BRPOPLPUSH source destination timeout  :从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

应用场景:

项目常应用于:1、对数据量大的集合数据删减 2、任务队列

1、对数据量大的集合数据删减 列表数据显示、关注列表、粉丝列表、留言评价等…分页、热点新闻(Top5)等 利用LRANGE还可以很方便的实现分页的功能,在博客系统中,每片博文的评论也可以存入一个单独的list中。

2、任务队列 (list通常用来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序)

Redis Set 常用命令,应用场景

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的

常用命令:

赋值语法: 
	SADD key member1 [member2] :向集合添加一个或多个成员 

取值语法: 
	SCARD key :获取集合的成员数 
	SMEMBERS key  :返回集合中的所有成员 
	SISMEMBER key member  :判断 member 元素是否是集合 key 的成员(开发中:验证是否存在判断) 
	SRANDMEMBER key [count] :返回集合中一个或多个随机数	   
  
删除语法:  
	SREM key member1 [member2] :移除集合中一个或多个成员
	SPOP key [count]  :移除并返回集合中的一个随机元素
	SMOVE source destination member :将 member 元素从 source 集合移动到 destination 集合

差集语法: 
	SDIFF key1  [key2]   :返回给定所有集合的差集(左侧) 
	SDIFFSTORE destination key1 [key2]  :返回给定所有集合的差集并存储在 destination 中
交集语法: 
	SINTER key1 [key2]  :返回给定所有集合的交集(共有数据) 
	SINTERSTORE destination key1 [key2]  :返回给定所有集合的交集并存储在 destination 中
并集语法: 
 	SUNION key1 [key2] :返回所有给定集合的并集 
	SUNIONSTORE destination key1 [key2]  :所有给定集合的并集存储在 destination 集合中

应用场景:

常应用于:对两个集合间的数据[计算]进行交集、并集、差集运算

1、利用集合操作,可以取不同兴趣圈子的交集,以非常方便的实现如共同关注、共同喜好、二度好友等功能。对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存储到一个新的集合中。

2、利用唯一性,可以统计访问网站的所有独立 IP、存取当天[或某天]的活跃用户列表。

Redis ZSet 常用命令,应用场景

有序集合(sorted set)

1、 Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

2、不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

3、有序集合的成员是唯一的,但分数(score)却可以重复。

常用命令:

赋值语法: 
	ZADD key score1 member1 [score2 member2]  :向有序集合添加一个或多个成员,或者更新已存在成员的分数  

取值语法: 
	ZCARD key  :获取有序集合的成员数
	ZCOUNT key min max :计算在有序集合中指定区间分数的成员数
	ZRANK key member :返回有序集合中指定成员的索引
	ZRANGE key start stop [WITHSCORES] :通过索引区间返回有序集合成指定区间内的成员(低到高)
	ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] :通过分数返回有序集合指定区间内的成员
	ZREVRANGE key start stop [WITHSCORES] :返回有序集中指定区间内的成员,通过索引,分数从高到底
	ZREVRANGEBYSCORE key max min [WITHSCORES] :返回有序集中指定分数区间内的成员,分数从高到低排序
删除语法: 
	DEL key   :移除集合 
	ZREM key member [member ...] :移除有序集合中的一个或多个成员
	ZREMRANGEBYRANK key start stop :移除有序集合中给定的排名区间的所有成员(第一名是0)(低到高排序)
	ZREMRANGEBYSCORE key min max :移除有序集合中给定的分数区间的所有成员
	
	ZINCRBY  key increment member  	:增加memeber元素的分数increment,返回值是更改后的分数

应用场景:

常应用于:排行榜

销量排名,积分排名等


Redis内存开发管理(淘汰策略机制)

redis作为优秀的中间缓存件,时常会存储大量的数据,即使采取了集群部署来动态扩容,也应该及时的整理内存,避免内在资源过多,导致服务内存发生溢出、并维持系统性能。

Redis官方给的警告,当内存不足时,Redis会根据配置的缓存策略淘汰部分Keys,以保证写入成功。当无淘汰策略时或没有找到适合淘汰的Key时,Redis可能会返回out of memory错误。

在redis中有两种解决方案

一 为数据设置超时时间

expire key time(以秒为单位)--这是最常用的方式
setex(String key, int seconds, String value)--字符串独有的方式

二 采用LRU算法动态将不用的数据删除

内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,

操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。

1.**volatile-lru:设定超时时间的数据中,删除最不常使用的数据.
2.**allkeys-lru:查询所有的key中最近最不常使用的数据进行删除,这是应用最广泛的策略.
3.volatile-random:在已经设定了超时的数据中随机删除.
4.allkeys-random:查询所有的key,之后随机删除.
5.volatile-ttl:查询全部设定超时时间的数据,之后排序,将马上将要过期的数据进行删除操作.
6.noeviction:如果设置为该属性,则不会进行删除操作,如果内存溢出则报错返回.
7.volatile-lfu:从所有配置了过期时间的键中驱逐使用频率最少的键
8.allkeys-lfu:从所有键中驱逐使用频率最少的键

Redis持久化机制( RDB和AOF区别)

什么是Redis持久化?

持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。

Redis 提供了两种持久化方式:RDB(默认)和AOF。

RDB持久化机制

rdb是Redis DataBase缩写 功能核心函数rdbSave(生成RDB文件)和rdbLoad(从文件加载内存)两个函数

RDB:是redis的默认持久化机制。 快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为 dump.rdb。

优点: 快照保存数据极快、还原数据极快 适用于灾难备份

缺点:小内存机器不适合使用,RDB机制符合要求就会照快照

快照条件:

1、服务器正常关闭时  ./bin/redis-cli shutdown
2、key满足一定条件,会进行快照 
 vim redis.conf搜索save
       :/save
      save 900 1     //每900秒(15分钟)至少1个key发生变化,产生快照
      save 300 10   //每300秒(5分钟)至少10个key发生变化,产生快照
      save 60 10000   //每60秒(1分钟)至少10000个key发生变化,产生快照

AOF持久化机制
由于快照方式是在一定间隔时间做一次的,所以如果redis意外down 掉的话,就会丢失最后一次快照后的所有修改。如果应用要求不能丢失任何修改的话,可以采用aof持久化方式。

Append-only file:aof 比快照方式有更好的持久化性,是由于在使用aof持久化方式时,redis会将每一个收到的写命令都通过write 函数追加到文件中(默认是appendonly.aof)。当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

每当执行服务器(定时)任务或者函数时flushAppendOnlyFile函数都会被调用,这个函数执行以下两个工作 aof写入保存: WRITE:根据条件,将aof_buf中的缓存写入到 AOF 文件 SAVE:根据条件,调用fsync或fdatasync函数,将 AOF 文件保存到磁盘中。

产生的问题: aof的方式也同时带来了另一个问题。持久化文件会变的越来越大。例如我们调用incr test命令 100 次,文件中必须保存全部的 100 条命令,其实有 99 条都是多余的。

Redis和MYSQL如何保持一致性(同步)

1、实时同步 SpringCache

对强一致要求比较高的,应采用实时同步方案,即查询缓存查询不到再从DB查询,保存到缓存;
更新缓存时,先更新数据库,再将缓存的设置过期(建议不要去更新缓存内容,直接设置缓存过期)。
@Cacheable:查询时使用,注意Long类型需转换为Sting类型,否则会抛异常
@CachePut:更新时使用,使用此注解,一定会从DB上查询数据
@CacheEvict:删除时使用;
@Caching:组合用法     

2、异步队列

异步对队:对于并发程度较高的,可采用异步队列的方式同步,可采用MQ等消息中间件处理消息生产和消费或者通过定时任务定期处理数据同步。
3、使用阿里的同步工具canal

4、采用UDF自定义函数的方式

面对mysql的API进行编程,利用触发器进行缓存同步,但UDF主要是c/c++语言实现,学习成本高。

什么是缓存穿透,解决方案、如何避免缓存穿透

缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透

解决办法:

持久层查询不到就缓存空结果,查询时先判断缓存中是否exists(key) ,如果有直接返回空,没有则查询后返回,

注意insert时需清除查询的key,否则即便DB中有值也查询不到(当然也可以设置空缓存的过期时间)

1、不管数据实际上存不存在,我们都把这个键存到缓存中(有效期设置的短一些,比如一分钟到三分钟),然后值设置为一个特定值,业务中如果获取到的结果是这个特定值,则报错返回。

2、是使用 redis 的布隆过滤器(Bloom Filter),将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。

如何避免缓存穿透?

可尝试通过对请求地址参数拼接进行加密的方式完成。

什么是缓存雪崩,解决方案

雪崩:缓存大量失效的时候,引发大量查询数据库。

如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,造成了缓存雪崩。

这个没有完美解决办法,但可以分析用户行为,尽量让失效时间点均匀分布。大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上。

解决方案

加锁排队. 限流-- 限流算法.

 在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。
 比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。

数据预热

可以通过缓存reload机制,预先去更新缓存,
再即将发生大并发访问前手动触发加载缓存不同的key,
设置不同的过期时间,让缓存失效的时间点尽量均匀

什么是Redis集群

Redis Cluster是Redis分布式集群解决方案,主要解决Redis分布式方面的需求,比如,当遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster能起到很好的负载均衡的目的。

Redis集群特点(Cluster)

Redis集群搭建至少需要3(Master)+3(Slave)才能建立集群,其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用

Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有

节点连接。

1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
2、节点的fail是通过集群中超过半数的节点检测失效时才生效。
3、客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
4、redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster 负责维护
5、Redis集群预分好16384个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,
redis 先对key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,
这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,
redis 会根据节点数量大致均等的将哈希槽映射到不同的节

什么情况下集群单个master不可用?

投票机制。投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时(cluster-node-timeout),认为当前master节点挂掉。

什么情况下整个集群不可用?

如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. 如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

相关推荐

【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...

Pure Storage推出统一数据管理云平台及新闪存阵列

PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...

对Java学习的10条建议(对java课程的建议)

不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...

SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!

官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...

JDK21有没有什么稳定、简单又强势的特性?

佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...

「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了

在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...

Java面试题及答案最全总结(2025版)

大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...

数据库日常运维工作内容(数据库日常运维 工作内容)

#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...

分布式之系统底层原理(上)(底层分布式技术)

作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...

oracle 死锁了怎么办?kill 进程 直接上干货

1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...

SpringBoot 各种分页查询方式详解(全网最全)

一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...

《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略

《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...

LoadRunner(loadrunner录制不到脚本)

一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...

Redis数据类型介绍(redis 数据类型)

介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...

RMAN备份监控及优化总结(rman备份原理)

今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...

取消回复欢迎 发表评论: