首页 > 数据库 >redis的key操作及切换数据库

redis的key操作及切换数据库

时间:2023-01-19 15:44:06浏览次数:44  
标签:返回 迭代 数据库 redis 游标 命令 key

redis 默认有16个库(0-15),进入后默认在第0个库
# 切换数据库使用select命令,index为数据库标号,切换数据库后除了0号库其余库会在端口后的[ ]会显示编号
select index

# 示例
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]>
键(key)

redis是key-value的数据结构,每条数据都是一个键值对。

  • key的类型是字符串
  • key不能重复
查看所有key
keys *
通配符查询包含指定字符的key
keys '*m*'
判断key是否存在【存在返回1,不存在返回0】
exists key
查看value的类型
type key
删除key【返回被删除 key 的数量】
del key1 key2
给key设置超时时间【单位/秒】

设置成功返回 1,当 key 不存在或者不能为 key 设置过期时间时返回 0 。

expire key seconds
查看还有多少秒过期【-1表示永不过期-2表示已过期】
ttl key
当前数据库的key移动到给定的数据库 db 当中

db参数为数据库编号,移动成功返回 1,失败则返回 0 。

move key db
用于修改key的名称【当修改的名称key已存在时,将被覆盖】

改名成功时提示 OK ,被覆盖时也是返回 OK,失败时返回一个错误。

rename old_key_name new_key_name
从当前数据库中随机返回一个 key【 当数据库为空时,返回为空】
randomkey
查看当前数据库有多少个key【返回key数量,没有key时返回0】
dbsize
清空当前数据库【操作成功返回OK】
flushdb
清空所有数据库【操作成功返回OK】
flushall
迭代数据库中的数据库键 -- scan
scan cursor [MATCH pattern] [COUNT count] [TYPE type]
# 选项
cursor:本次迭代开始的游标。
pattern :本次迭代要匹配的 key 的模式。
count :本次迭代要从数据集里返回多少元素,默认值为 10 。
type:本次迭代要返回的 value 的类型,默认为所有类型。

# 示例
redis 127.0.0.1:6379> scan 0       # 使用 0 作为游标,开始新的迭代
1) "17"                            # 第一次迭代时返回的游标
2)  1) "key:12"
    2) "key:8"
    3) "key:4"
    4) "key:14"
    5) "key:16"
    6) "key:17"
    7) "key:15"
    8) "key:10"
    9) "key:3"
   10) "key:7"
   11) "key:1"
redis 127.0.0.1:6379> scan 17     # 使用的是第一次迭代时返回的游标 17 开始新的迭代
1) "0"                            # 返回游标 0 意味着已遍历结束
2) 1) "key:5"
   2) "key:18"
   3) "key:0"
   4) "key:2"
   5) "key:19"
   6) "key:13"
   7) "key:6"
   8) "key:9"
   9) "key:11"

SCAN 命令是一个基于游标 cursor 的迭代器:SCAN 命令每次被调用之后,都会向用户返回返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标,而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数,以此来延续之前的迭代过程。当 SCAN 命令的游标参数被设置为 0 时,服务器将开始一次新的迭代。如果新游标返回 0 表示迭代已结束。

说明:使用间断的、负数、超出范围或者其他非正常的游标来执行增量式迭代不会造成服务器崩溃。
当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。由于 scan 命令每次执行都只会返回少量元素,所以该命令可以用于生产环境,而不会出现像 KEYS 命令带来的服务器阻塞问题。
增量式迭代命令所使用的算法只保证在数据集的大小有界的情况下迭代才会停止,换句话说,如果被迭代数据集的大小不断地增长的话,增量式迭代命令可能永远也无法完成一次完整迭代。即当一个数据集不断地变大时,想要访问这个数据集中的所有元素就需要做越来越多的工作, 能否结束一个迭代取决于用户执行迭代的速度是否比数据集增长的速度更快。
相关命令:另外还有 3 个 scan 命令用于对三种类型的 value 进行遍历。

  • hscan:属于 Hash 型 Value 操作命令集合,用于遍历当前 db 中指定 Hash 表的所有 field-value 对。
  • sscan:属于 Set 型 Value 操作命令集合,用于遍历当前 db 中指定 set 集合的所有元素
  • zscan:属于 ZSet 型 Value 操作命令集合,用于遍历当前 db 中指定有序集合的所有元素(数值与元素值)

注:分布式集群用不了 scan 和 keys * 命令,因为分布式集群是分片存储的,这种批量查询命令只能返回当前节点上的key而不能返回全部的key。

标签:返回,迭代,数据库,redis,游标,命令,key
From: https://www.cnblogs.com/tandabao/p/17061640.html

相关文章

  • redis安装
    1.到官网寻找自己需要的版本wgethttps://github.com/redis/redis/archive/7.0.7.tar.gz2.编译&编译安装#解压并改名tarzxvf7.0.7.tar.gz-C/usr/local/mv/us......
  • redis启停和连接
    启动#redis-server命令用于启动redis,安装后该命令已位于/usr/local/bin/目录下,可在任意路径执行#直接执行redis-server则是前台启动,使用redis-server指定配置文件启动......
  • 查询并发程序是否启动跟踪功能-trc文件对数据库性能有
    SELECTICON_NAME,ROW_ID,USER_CONCURRENT_PROGRAM_NAME,ENABLED_FLAG,CONCURRENT_PROGRAM_NAME,DESCRIPTION,EXECUTION_OPTIONS,REQUEST_PRIORITY,......
  • C# 使用SQLDMO备份数据库时不显示进度的问题解决方法
    在使用SQLDMO备份数据库的过程中,参考了网上的例子,但是进度条却不显示,每次返回的都是0,解决方法是使用全局变量,每次做个累加就可以了。stringServerName="";......
  • Redis下载安装与配置(linux)
    一、Redis下载与安装1.下载安装包官网下载地址:Download|Redis点击"Download7.0.7",即可进行下载。2.将安装包上传至服务器2.1将安装包上传至/usr/local目录并解压......
  • redis面试题
    1.项目中是否使用过redis?为什么要使用redis?使用过之前使用的都是修改某个value值,如登录账号被锁定30分钟,查看还剩余的时间,或者想将账号由锁定状态更新为未锁定状态,删......
  • Redis之key的淘汰策略
    淘汰策略概述redis作为缓存使用时,在添加新数据的同时自动清理旧的数据。这种行为在开发者社区众所周知,也是流行的memcached系统的默认行为。redis中使用的LRU淘汰算法是......
  • 北邮工程硕士_数据库系统设计_考试复习答案
    考试范围:第一章第二章第三章第四章SQL 复习题1.      试述数据管理的发展阶段。手工管理阶段(50年代中期以前)文件系统阶段(50年代末-60年代末)数据库系统阶段(60年......
  • Linux安装KingbaseES数据库 Unsupported major.minor version错误处理
    Linux系统安装V008R006C007B0012版本KingbaseES数据库报错:Unsupportedmajor.minorversion52.0系统版本:[root@vm-10-37-129-15~]#cat/etc/redhat-releaseRedHa......
  • 用溪流 WarKey 辅助红警开局快捷操作
    背景自从发现红警除了ddraw补丁可以在最新的系统里玩后,就开始怀旧了。但是由于手残,遇到别人抢地盘基本上直接崩了。偶然有一次发现像08这样的高手点30个坦克使用工......