首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis:06---数据库管理

0号数据库,但客户端可以通过执行SELECT命令来切换目标数据库 以下代码示例演示了客户端在0号数据库设置并读取键msg,之后切换到2号数据库并执行类似操作的过程: 这个推荐给大家一个好用的redis客户端...Redis3.0中已经逐渐弱化这个功能,例如Redis的分布式实现Redis Cluster只允许使用0号数据库,只不过为了向下兼容老版本的数据库功能, 该功能没有完全废弃掉,下面分析一下为什么要废弃掉这个...这样既保证了业务之间不会受到影响,又合理地使用了CPU资源 三、清除数据库(flushdb、flushall) flushdb/flushall命令用于清除数据库,两者的区别的是:flushdb只清除当前数据库...,flushall会清除所有数据库(老板最怕的就是删库跑路的员工了,所以最怕的技术是只会rm -rf的和删库的) 这两个命令使用需要谨慎 flushdb/flushall命令会将所有数据清除,一旦误操作后果不堪设想...,后面的文章会介绍rename-command配置规避这个问题,以及如何在误操作后快速恢复数据 如果当前数据库键值数量比较多,flushdb/flushall存在阻塞Redis的可能性 演示案例 例如下面

48520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Redis进阶-Redis的惰性删除

    Pre Redis进阶-Redis对于过期键的三种清除策略 我们一直说 Redis 是单线程的,这里的我们默认指的都是Redis主要的工作线程,面向开发的。...实际上 Redis 内部实并不是只有一个主线程,它有很多个异步线程专门用来处理一些耗时的操作 del ------> unlink 删除指令 del 会直接释放对象的内存,大部分情况下,这个指令非常快,...Redis 为了解决这个卡顿问题,在 4.0 版本引入了 unlink 指令,它能对删除操作进行懒处理,丢给后台线程来异步回收内存。.../FLUSHALL --> FLUSHDB ASYNC/FLUSHALL ASYNC Redis 提供了 flushdb 和 flushall 指令,用来清空数据库,当数据量很大时,容易阻塞Redis。...不是所有的 unlink 操作都会延后处理,如果对应 key 所占用的内存很小,延后处理就没有必要了,这时候 Redis 会将对应的 key 内存立即回收,跟 del 指令一样。

    1.4K30

    Redis 非关系型数据库学习(三)---- Redis 基础知识

    [partten] (3)清除数据库的 key flushdb 清除当前db的key flushall 清除所有db的key (4)Redis默认端口号6379的由来 Redis 非关系型数据库学习(...三)---- Redis 基础知识   在之前的学习中,我们已经在Linux系统上安装了Redis,之后的所有操作都在Linux 系统上完成操作 (1)Redis 数据库 select 切换当前数据库...key flushdb 清除当前db的key 这条指令用来清除当前数据库中 所有的key信息 127.0.0.1:6379> keys * 1) "names" 2) "name" 127.0.0.1...:6379> flushdb # 清除当前数据库中所有key OK 127.0.0.1:6379> keys * (empty array) flushall 清除所有db的key 这条命令用来清除所有数据库中的...key 信息 127.0.0.1:6379> flushdb # 清除所有数据库中所有key OK (4)Redis默认端口号6379的由来 讲一点题外的小知识,为什么 Redis的默认端口号是 6379

    38910

    Redis线上救命丸:01---误操作AOF、RDB恢复数据

    Redis的flushall/flushdb命令可以做数据清除,对于Redis的开发和运维人员有一定帮助,然而一旦误操作,它的破坏性也是很明显的。怎么才能快速恢复数据,让损失达到最小呢?...本文我们将结合之前学习的Redis相关知识进行分析,最后给出一个合理的方案 注意:为了方便说明,下文中除了AOF文件中的flushall/flushdb以外,其他所有的flushall/flushdb都用...所以当误操作后,需要考虑如下两件事: 2)如果要用AOF文件进行数据恢复,那么必须要将AOF文件中的flushall相关操作去掉,为了更加安全,可以在去掉之后使用redis-check-aof这个工具去检验和修复一下...,意味着使用RDB恢复基本无望 综上所述,如果AOF已经开启了,那么用AOF来恢复是比较合理的方式,但是如果AOF关闭了,那么RDB虽然数据不是很实时,但是也能恢复部分数据,完全取决于RDB是什么时候备份的...当然RDB并不是一无是处,它 的恢复速度要比AOF快很多,但是总体来说对于flush操作之后不是最好的恢复数据源 四、从节点有什么变化 Redis从节点同步了主节点的flush命令,所以从节点的数据也是被清除了

    1.3K20

    【云原生进阶之PaaS中间件】第一章Redis-1.4过期策略

    如使用 INCR 递增key的值,执行 LPUSH 将新值推到 list 中或用 HSET 改变hash的field,这些操作都使超时保持不变。...1.1 刷新过期时间         对已经有过期时间的key执行EXPIRE操作,将会更新它的过期时间。有很多应用有这种业务场景,例如记录会话的session。...1.2 Redis 之前的 2.1.3 的差异         在 Redis 版本之前 2.1.3 中,使用更改其值的命令更改具有过期集的密钥具有完全删除key的效果。...可使用 EXPIRE 和 PERSIST 命令(或其他严格命令)更新或完全删除生存的关键时间。...3 Redis 内存淘汰机制         Redis 数据库可以通过配置文件来配置最大缓存,当写入的数据发现没有足够的内存可用的时候,Redis 会触发内存淘汰机制。

    18520

    Redis(三):Redis基础知识与常用命令

    1、基础命令 Redis默认有16个数据库,用的是第0个数据库,可以使用select进行切换数据库,使用DBSIZE查看DB大小(只针对当前数据库)。...使用keys * 查看当前数据库下所有的key,使用flushdb清除当前数据库,flushall清除全部数据库内容。...Redis是单线程的,Redis是基于内存操作,CPU不是Redis的性能瓶颈,Redis的瓶颈是机器的内存和网络带宽。(对于内存系统来说,如果没有上下文切换效率就是最高的!)...2、Redis-Key相关命令 Exists key:判断key是否存在 move key 1:移除当前key ExPIRE name 20 :设置key的过期时间,单位是秒 type key:查看可以的数据类型...更多命令可以参照Redis官网:http://www.redis.cn/commands.html

    20130

    Redis 安全问题

    2015年, 很多redis节点都遭受到了攻击, redis中的数据全部被清除, 只包含一个名为crackit(换一个key就很难被发现了)的key, key的value为类似如下的公钥: `ssh-rsa...使用redis 客户端连接redis服务器, 执行redis命令(del, flushdb, flushall)清除所有redis数据 3....更改默认端口: 更改默认端口可以降低redis服务被发现的可能性, 但并不能完全制止, 攻击可以扫描其他端口并试图判定其为redis服务器 2....增加redis密码验证,增加redis密码验证可有效防止redis服务器的恶意登录, 但redis但密码要足够复杂: 2.1 redis是基于内存的数据库, 访问速度十分快, 如果密码不够复杂, 则很容易被恶意破解...更改命令名称防止破坏性命令的执行 redis支持rename操作更改命令名称, 如rename flushall abcdefg, renam后执行flushall命令则会提示命令不存在 rename的缺点是

    1.5K70

    Redis 数据库操作、配置以及慢查询

    中已经逐渐弱化这个功能,例如 Redis 的分布式实现 Redis Cluster 只允许使用0号数据库,只不过为了向下兼容老版本的数据库功能,该功能没有完全废弃掉,下面分析一下为什么要废弃掉这个“优秀...建议如果要使用多个数据库功能,完全可以在一台机器上部署多个 Redis 实例,彼此用端口来做区分,因为现代计算机或者服务器通常是有多个 CPU 的。...key 数量 (integer) 0 FLUSHDB/FLUSHALL 命令可以非常方便的清理数据,但是也带来两个问题: FLUSHDB/FLUSHALL 命令会将所有数据清除,一旦误操作后果不堪设想...如果当前数据库键值数量比较多,FLUSHDB/FLUSHALL 存在阻塞 Redis 的可能性。 所以在使用FLUSHDB/FLUSHALL 一定要小心谨慎。...在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。

    76420

    给接口添加缓存

    本文介绍如何在接口上增加缓存来提高接口的性能。...三、给接口增加缓存 缓存的形式比较多,可以在项目的内存中直接进行缓存,也可以使用专门的缓存服务器进行缓存。...在两个注解中,都有一个 value 值,@CacheEvict 清除缓存时会清除指定 value 的缓存。 增加完缓存后,我们重启项目,重新来测试接口的缓存。...在测试接口之前,不要忘记启动 Redis 服务器,然后通过 redis-cli 执行 flushdb 清空 redis 中的缓存,这样方便我们观察缓存中的数据。...四、总结 并不是所有的接口都适合增加缓存,但是对于类似字典表中的数据我们完全可以进行缓存,还有一些不经常变化的数据也可以进行缓存。

    1.5K40

    【Redis】概述与安装

    flushdb; 清除全部数据库的内容 FLUSHALL; 思考:为什么 Redis 的端口是6379; 端口6379的由来;   Redis 是单线程的 明白 Redis 是很快的,官方表示,...Redis 是基于内存操作,CPU 不是 Redis 性能瓶颈,Redis 的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了; Redis 是 C 语言写的,官方提供的数据为...100000+ 的 QPS,完全不比同样是使用 key-vale 的 Memecache 差; Redis 为什么单线程还这么快?...Docker 安装 1、使用 docker 安装 redis: docker pull redis 这样拉下来的镜像就是最新的,如果要指定版本,可以在后面接个版本号; 安装好之后使用 docker images...7、查看 docker redis 运行日志: [root@localhost redis]# docker logs redis-sid10t 后记 安装好之后,就可以准备正式开始学习 redis

    24130

    redis.conf翻译与配置(四)【redis6.0.6】

    基于上述原因,Redis还提供了非阻塞删除原语,如UNLINK(非阻塞DEL)和异步选项的FLUSHALL和FLUSHDB命令,以便在后台回收内存。这些命令在固定的时间内执行。...然而,有时由于其他操作的副作用,redis不得不删除或刷新整个数据库。...译文 Redis大部分是单线程的,但是也有一些线程操作,如解除链接,缓慢的I/O访问和一些其他事情是在侧线程上执行的。 现在它也可以在不同的I/O线程下去处理Redis客户端套接字读写。...一些操作系统会真正刷新磁盘上的数据,而另一些操作系统会尝试尽快这么做。 Redis支持以下三种不同的模式: no: 不fsync,只要让操作系统在需要的时候刷新数据即可。尽快。...如果达到最大执行时间,Redis将记录在允许的最长时间之后脚本仍在执行中,并将开始以错误的方式答复查询。

    33130

    详解Redis内部运作机制

    此种操作对内存最友好,不会有垃圾数据占用内存情况存在 缺点是会造成很大的服务器负载,特别是CPU负载高的时候,CPU很大一部分负载用在了删除不必要的KEY上了 惰性清除: 放任键空间的键不管,每次查询KEY...此种操作对CPU最友好,这种策略仅限于当前KEY,相关不必要的KEY不会造成CPU负载 缺点是:容易造成内存空间浪费,特别是当系统中存在大量过期KEY且很少被用到,这十分影响非常依赖于内存大小Redis...的性能 定期删除: 由定时脚本cron定时对expires的键扫描判断是否有过期的KEY存在,如存在,将其删除掉。...这是一种折中方案,既不会过多消耗CPU,又可以定时清楚惰性删除忽略到的不必要的内存消耗 Redis采用的“惰性清除”和“定期清楚”相结合的方式,其中定期删除模式是在规定的时间限制内,尽 可能地遍历各个数据库的...过期键删除的主从同步问题(Redis的机制是由主节点统一控制) 如果服务器是主节点,当它删除一个过期键之后,会显式的向所有附属节点发送一条DEL命令 如果服务器是附属节点,当它判断到当前KEY已经过期

    95970

    019.Redis键管理命令

    0代表没有完成重命名 127.0.0.1:6379> renamenx name first_name (integer) 0 # 如果新key和旧key的名称相同,在3.2版本之前会报错,3.2版本之后返回...在3.0之后已经开始逐渐弱化这个功能,例如Redis的分布式实现Redis Cluster只允许使用0号数据库,只不过为了向下兼容老版本的数据库功能,该功能没有完全废弃掉,那么为什么要废弃掉这个功能呢?...即使支持,在开发的时候来回切换数字形式的数据库,很容易弄乱 建议如果要使用多个数据库功能,完全可以在一台机器上部署多个Redis实例,彼此用端口来做区分,因为现代计算机或者服务器通常是有多个CPU的。...3]> select 2 OK 127.0.0.1:6379[2]> get name "tony" # 使用flushdb清空数据,则其他数据库的数据也被清除了 127.0.0.1:6379[2]>.../flushall命令可以非常方便的清理数据,但是也带来两个问题: 这两个命令会将所有数据清除,一旦误操作后果不堪设想 如果当前数据库键值数量比较多,使用这两个命令会存在阻塞Redis的可能性

    37820

    Redis服务器被攻击后该如何安全加固

    一旦入侵成功,攻击者可直接添加账号用于 SSH 远程登录控制服务器,给用户的 Redis 运行环境以及 Linux 主机带来安全风险,如删除、泄露或加密重要数据,引发勒索事件等。...下述配置将 config/flushdb/flushall 设置为空,即禁用该命令;也可设置为一些复杂的、难以猜测的名字。 1. `rename-command CONFIG ""` 2....`rename-command flushdb ""` 4....2、redis数据破坏 攻击者可修改redis数据表、增加删除key项,比如调用flushall命令可以清除所有key。...3、主机系统环境泄露,为后续攻击提供网情 比如利用info命令,可以查看主机的相关信息,比如操作系统环境、目录名称、CPU/内存等敏感信息。

    3.1K20

    NOSQL(一)--Redis

    输入之后,会显示如下界面: ?...save 900 1 #当有10 条Keys 数据被改变时,300 秒刷新到disk 一次 save 300 100 #当有1w 条keys 数据被改变时,60 秒刷新到disk 一次 save 6000...–p 端口 –a 密码 redis-cli.exe -h 127.0.0.1 -p 6379 连接成功后,就可对redis数据增删改查了,如字符串操作: ?...Redis支持各种不同方式的序列。为了保证效率,都是缓存在内存中的,它也可以周期性的吧更新的数据写入磁盘或者把修改操作写入追加的记录文件。   ...举例:在我使用的环境中,如SQLServer数据库与Application 的中间加入了Redis,这样不仅起到了一个中间的作用更大大提高了读写效率,同时减轻了数据库压力,也使安全性得到了极大保证。

    66450

    Redis怎么保证存放的是热点数据?

    1、键的过期删除策略 Redis中键到达设定的过期时间后并不会马上被删除,这是因为如果是一个存储多个数据的大列表,那么删除时是会阻塞命令执行线程的,这会造成其他命令无法执行,因此Redis采用的是定时删除和懒惰删除兼具的做法...Redis默认每秒会进行十次过期扫描,会从过期字典中随机取出二十个键,删除其中已经过期的,如果已过期的占总数的1/4那么就再进行一次扫描,以此循环,当然Redis默认设置了扫描的最长时间为25ms; 懒惰删除...算法,在第一次采样是从数据中随机选出N个存入集合中,之后将这N个中lru字段最小的淘汰出去,如果缓存空间还是到达限制,就接着再次进行随机抽取数据,跟现有集合数据进行比较,淘汰出最小的那个。...为了解决这个问题,Redis还提供了一个unlink指令,代表对键的删除进行懒处理,交由后台的异步线程进行操作,从名字也可以看出来,这里似乎只是断开了断开了连接关系,并不是真正马上释放内存。...此外,对于清空数据库的操作可以使用flushdb 或者 flushall ,这两个操作也可能会造成单线程的卡顿,因此可以使用 flushall async 让异步线程去处理键清除空间释放的工作。

    75250

    Redis 4.0新功能介绍

    Loadable Module System》: http://antirez.com/news/106 因为模块系统是通过高层次 API 实现的, 它与 Redis 内核本身完全分离、互不干扰, 所以用户可以在有需要的情况下才启用这个功能...PSYNC 2.0 新版本的 PSYNC 命令解决了旧版本的 Redis 在复制时的一些不够优化的地方: 在旧版本 Redis 中, 如果一个从服务器在 FAILOVER 之后成为了新的主节点, 那么其他从节点在复制这个新主的时候就必须进行全量复制...非阻塞 DEL 、 FLUSHDB 和 FLUSHALL 在 Redis 4.0 之前, 用户在使用 DEL 命令删除体积较大的键, 又或者在使用 FLUSHDB 和 FLUSHALL 删除包含大量键的数据库时...此外, Redis 4.0 中的 FLUSHDB 和 FLUSHALL 这两个命令都新添加了 ASYNC 选项, 带有这个选项的数据库删除操作将在后台线程进行: redis> FLUSHDB ASYNC...-- 证明两个数据库已经互换 混合 RDB-AOF 持久化格式 Redis 4.0 新增了 RDB-AOF 混合持久化格式, 这是一个可选的功能, 在开启了这个功能之后, AOF 重写产生的文件将同时包含

    1.6K70
    领券