海口自助建站系统,如何用wordpress修改模板的内容,东莞建材网站建设,深圳罗湖企业网站优化目录
引言
渐进式遍历
SCAN 命令 数据库管理命令
切换数据库
获取数据库 key 个数
删除数据库所有 key
同步删除 SYNC
异步删除 ASYNC 阅读下述文章之前建议点击下方链接熟悉 keys 命令的用法和特点
Redis 全局通用命令 渐进式遍历 keys * 命令一次性将 Redi…目录
引言
渐进式遍历
SCAN 命令 数据库管理命令
切换数据库
获取数据库 key 个数
删除数据库所有 key
同步删除 SYNC
异步删除 ASYNC 阅读下述文章之前建议点击下方链接熟悉 keys 命令的用法和特点
Redis 全局通用命令 渐进式遍历 keys * 命令一次性将 Redis 中所有的 key 都获取到 注意 执行该命令 十分危险可能会导致一下子得到太多 key从而阻塞 Redis 服务器 相较于 keys * 命令渐进式遍历可以做到获取到所有的 key 的同时又不会阻塞 服务器 通俗理解 不是通过一个命令便将所有的 key 都获取到而是每执行一次命令便获取到其中的一小部分 key以此保证当前这次操作不会阻塞 Redis 服务器要想得到所有的 key 仅多执行几次渐进式遍历命令来遍历 Redis 中的 key 即可类似于 化整为零 的思想 SCAN 命令 渐进式遍历的代表命令 语法 scan cursor [MATCH pattern] [COUNT count] [TYPE type] cursor 代表光标而 光标便指向了当前遍历的位置 注意 此处的 cursor 不能理解成 下标cursor 并不是一个连续递增的整数仅仅只是一个字符串程序员 和 Redis 客户端是不认识光标cursor这个概念的只有 Redis 服务器知道光标cursor值 所对应的元素位置我们要做的只能是将返回的光标cursor值写入到下次遍历的 scan 命令中从而获取下次需遍历到的 key 可选项解释 [MATCH pattern] 和前面介绍过的 keys 命令中的 pattern 是一样的 pattern 为包含特殊符号的字符串其存在的意义是去描述 另外的字符串长啥样的 匹配任意一个字符* 匹配 0 个或者多个任意字符[ab] 只能匹配到 a b 别的都不行 相当于给出固定的选项[^ae] 只有 a、e 匹配不了 其他的都能匹配[a-e] 匹配 a - e 这个范围内的字符 包含两侧边界 [COUNT count] 用来限制这一次遍历能获取到的元素个数默认为 10 个 注意 此处的 count 与 MySQL 中的 limit 不同首先此处的 count 值只能对 Redis 服务器起到一个 提示 或 建议 的效果并不代表 Redis 服务器只能返回 count 个 key即填写的 count 值 和 实际返回的 key 的个数不一定完全相同但是也不会差很多但对于 MySQL 中的 limit 来说其给出的值是多少则该 sql 语句便十分精确地返回多少行数据 Redis 中的 key 均为 String 类型但是 value 却有很多种不同的类型[TYPE type] 可利用该选项来控制返回 key 的 value 类型 实例理解 限制一次遍历仅能获取 3个元素 注意点一 渐进式遍历在遍历过程中Redis 服务器不保留任何状态信息所以此处的遍历 是可以随时进行终止的因为其不会对 Redis 服务器产生任何影响 注意点二 渐进式遍历 虽然解决了阻塞的问题但如果在遍历期间 key 有所变化增加、修改、删除这均可能导致遍历时 key 的重复遍历或者遗漏这点务必在实际开发中考虑 数据库管理命令 MySQL 中有一个重要的概念 —— database数据库一个 MySQL 服务器上可以有很多个 database一个 database 上可以有很多个 tableMySQL 上可以随心所欲的 创建、删除 database 和 table Redis 中也有 database 的概念只不过不像 MySQL 那样随意Redis 中的 database 均是现成的即用户不能创建新的数据库也不能删除已有的数据库Redis 默认给我们提供了 16 个数据库编号为 0-15这 16 个数据库之间具有隔离性即这些数据库不会相互影响默认情况下使用的数据库就是 0号数据库 切换数据库 使用下方命令来切换数据库 select dbIndex 注意 在实际 Redis 的使用中很少会关注到数据库一般都是默认使用 0号数据库 实例理解 获取数据库 key 个数 使用下方命令来获取到当前数据库中 key 的个数 dbsize 实例理解 删除数据库所有 key 使用下方命令来删除 当前数据库 或 全部数据库 的所有 key FLUSHDB [ASYNC | SYNC] 删除当前数据库中的所有 keyFLUSHALL [ASYNC | SYNC] 删除全部数据库中的所有 key 选项 [ASYNC | SYNC] 为 [异步 | 同步] 的意思 同步删除 SYNC Redis 会在删除数据前先将数据同步到磁盘上的持久化文件如 RDB文件这意味着在命令执行完成后你可以确保数据已经被持久化到磁盘上即使 Redis 服务在之后重启也能够从磁盘上的数据文件中恢复数据 优点 数据持久性高 缺点 会引起一定的性能开销因为要等待数据写入磁盘 异步删除 ASYNC Redis 会在后台异步删除数据而不等待数据同步到磁盘上这意味着在命令执行完成后数据可能还没有被持久化到磁盘上这样的操作通常会更快因为不需要等待磁盘写入的完成 优点 性能开销小 缺点 在极端情况下如果 Redis 在执行异步删除后崩溃可能会丢失最后一次清空的数据 总结 异步删除主要关注于提高执行 FLUSHDB 命令的执行速度即不会引入等待磁盘写入的性能开销它不会立即将所有数据写入磁盘而是通过异步的方式在后台完成这个过程这也是为什么在异步删除的情况下可以更快地执行清空数据库的操作 实例理解 使用 FLUSHDB 命令 使用 FLUSHALL 命令