Redis 交互模式

news/2024/7/27 15:20:54/文章来源:https://blog.csdn.net/qq_39177678/article/details/135619180

交互模式(Interact Mode)

安装 Redis 时通常连带安装了一个 Redis CLI (apt install redis 或者是 apt install redis-cli 类似的)。在本博客中将会对 redis-cli 中的常用命令做一个使用介绍,下文中以黑色代码块表示在 redis-cli 的实际操作,其中使用 “127.0.0.1:6379>” 字符串表示当前正在输入的命令。注意:本文中仅列出我所使用的常用命令,未必适合所有的人,为了适合索引和使用,应尽可能简约详尽。

1.连接 Connection

在任何命令行中,你可以通过以下命令进入到交互模式/或者说是 Redis 客户端工具。

redis-cli

或者更详细的如下面所示,使用了 Host 和 Port 的参数,用于指定 Redis Server 的主机和端口。

redis-cli -h 127.0.0.1 -p 6379

连接后的状态大概如下,这个时候就进入到了交互模式的最初状态,你的输入将始终显示在 “>” 符号之后。

127.0.0.1:6379> 

2. 认证 Authentication

redis 提供了一些安全措施,其中之一是认证或者是验证用户权限。在 redis.conf 启用 requirepass 配置,下面这个例子是在 redis.conf 中设置了一个 pass 作为认证依据。

# redis.conf
...
requirepass your-password

在设置了 “requirepass” 之后,Redis Server 将拒绝所有未认证的查询。你可以使用以下命令来进行认证。

127.0.0.1:6379> auth your-password 
OK

3. 数据库操作

在 Redis 中,默认情况下有 16 个数据库(编号从 0 到 15)。每个数据库都是相对独立的命名空间,允许用户在同一个 Redis 服务器中存储多个不同的数据集(dataset)。

在连接到 Redis 服务器时,默认使用的是第一个数据库(编号为 0)。可以使用 SELECT 命令切换到其他数据库,例如:

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> 

此时你的提示符变成了 127.0.0.1:6379[1],即意味着当前处于数据库 1 中。

当然你可以使用 CONFIG 命令实时得查到当前的数据库数量,查询结果是一个数组:

127.0.0.1:6379[1]> config get databases
1) "databases"
2) "16"

下面列出一些还可能使用到的数据库操作:

3.1 查看数据库的所有键

127.0.0.1:6379[1]> keys *
1) "key1"
2) "key2"

请注意如果较大的数据库应该避免使用这个命令,这个命令将会遍历整个键空间(Key space),可能会影响数据库的性能。

KEYS 命令还支持使用 glob 模式进行模糊查询,例如:

匹配前缀是 key 的

127.0.0.1:6379[1]> keys key*

匹配包含某个词的

127.0.0.1:6379[1]> keys *word*

匹配以某个字符结尾的

127.0.0.1:6379[1]> keys *d

使用 ? 进行单字符匹配

127.0.0.1:6379[1]> keys *
1) "user:hong:age"
2) "user:xiaoming:age"127.0.0.1:6379[1]> keys user:????:age
1) "user:hong:age"

在这个例子中,设置了两个 key;使用 “????” 匹配四个字符,所以结果“xiaoming” 没有被匹配。

使用字符范围匹配

127.0.0.1:6379[1]> keys *
1) "b"
2) "c"
3) "a"
127.0.0.1:6379[1]> keys [a-z]
1) "b"
2) "c"
3) "a"
127.0.0.1:6379[1]> keys [a-b]
1) "b"
2) "a"
127.0.0.1:6379[1]> keys [a,b]
1) "b"
2) "a"
127.0.0.1:6379[1]> keys [a,b,c]
1) "b"
2) "c"
3) "a"

3.2 其余数据库操作

查看当前数据库中键的数量

127.0.0.1:6379> dbsize
(integer) 5

清空当前数据库

127.0.0.1:6379> flushdb
OK

清空所有数据库

127.0.0.1:6379> flushall
OK

删除键
删除一个名为 key_name 的键,如果没有或者失败,会返回 0,反之则 1

127.0.0.1:6379> del key_name
(integer) 0

判断键是否存在

127.0.0.1:6379> exists key_name
(integer) 0

设置键的过期时间
为 key_name 设置 50 秒的过期时间,单位为秒。键将在指定的时间后自动删除。

127.0.0.1:6379> expire key_name 50
(integer) 1

查看键的过期时间
返回指定键的剩余过期时间,单位为秒。返回 -1 表示键没有设置过期时间,返回 -2 表示键不存在或已过期。

127.0.0.1:6379> ttl key_name
(integer) 55

4. 数据类型操作

在 Redis 中常用的数据类型有字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)。另外有一些较为不常用的:Geospatial、Bitmaps…等。对于不太常用的,在这里不做更多介绍。

Redis 是典型的键值对型数据库,每种类型在 Redis 中都以键值对存储,其中 Value 中的内容有数据类型的差异。其中每一个键值对所表示的数据叫做数据集(dataset)。如果要删除一个数据集,也就是删除这个键,无论这个数据集是何种类型,都可以直接使用 del key_name 的命令进行删除。

以下是一些常见的 Redis 数据结构及其基本的 CRUD 操作(因为未使用提示符,将其中命令统一使用大写表示以优化观感):

  1. 字符串(String):

    • 创建/更新:
      SET key_name "value"
      
    • 读取:
      GET key_name
      
    • 删除:
      DEL key_name
      
  2. 哈希表(Hash):

    • 创建/更新:
      HSET hash_name field_name field_value
      
    • 读取:
      HGET hash_name field_name
      HGETALL hash_name
      
    • 删除:
      HDEL hash_name field_name
      
  3. 列表(List):

    • 创建/更新: 其中 L 是从列表左侧(头部)插入,R 是从列表右侧(尾部)插入
      LPUSH list_name element1 elem2 elem3
      RPUSH list_name element1
      
    • 读取:
      LRANGE list_name start stop
      (LRANGE list_name 0 20)
      
    • 删除:
      从左侧或者右侧弹出若干个元素,默认是 1
      LPOP list_name
      LPOP list_name 3  
      RPOP list_name
      RPOP list_name 3
      
  4. 集合(Set):
    集合不存在重复的元素,所有的 Member 都是唯一的,通常可以使用集合类型去重。

    • 创建/更新:
      SADD set_name member1 member2 ...
      
    • 读取:
      SMEMBERS set_name
      
    • 删除:
      SREM set_name member1
      
  5. 有序集合(Sorted Set):

    • 创建/更新:
      有序集合的元素增加需要给定一个权重值 score
      ZADD zset_name score member
      (ZADD zset1 1 memember1)
      
    • 读取:
      有序集合的读取可以显示 Score 或者不
      ZRANGE zset_name start stop WITHSCORES
      (ZRANGE zset1 0 20 withscores)
      (ZRANGE zset1 0 20)
      
    • 删除:
      ZREM zset_name member
      

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十二章 Java内存模型与线程(二)

文章目录 12.4 Java与线程12.4.1 线程的实现12.4.2 Java线程调度12.4.3 状态转换 12.5 Java与协程12.5.1 内核线程的局限12.5.2 协程的复苏12.5.3 Java的解决方案 12.4 Java与线程 12.4.1 线程的实现 实现线程主要有三种方式:使用内核线程实现(1&#…

算法通关村第十六关—滑动窗口与堆结合(黄金)

滑动窗口与堆结合 堆与滑动窗口问题的结合 LeetCode239给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位,返回滑动窗口中的最大值。  对于最大值、K个最大这种场…

【教3妹学编程-算法题】最大频率元素计数

2哥 : 3妹,最近有个电视剧《繁花》非常火🔥,你听说了吗? 3妹:没有,最近一直在忙着找工作,哪有时间看电视啊 2哥 : 啊?大周末还不休息一下啊,这么辛苦。 3妹:当…

压力测试JMeter

一、JMeter概述 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务…

k8s node节点加入集群,token过期

1、master01节点执行 kubeadm token create --print-join-command 2、执行命令 kubeadm join 192.168.0.236:16443 --token qucd8q.hsfq4a1afluzaky3 --discovery-token-ca-cert-hash sha256:92175a356db070deb2ddd3823e288e3005a4baeec9b68580dcc11ce4d3767195 3、查看node02…

FPGA节省资源篇------正确处理设计优先级

声明:以下文章来源于孤独的单刀,仅供学习用途 概述 假如现在有一种方法–可以在不怎么需要修改已有设计的情况下,就可以帮您节省50%的设计资源,那你会试试看吗? 当前市场环境下,更低廉的成本却可获得同等…

steam游戏搬砖项目还能火多久?

最近放假回到老家,见了不少亲戚朋友,大家不约而同都在感叹今年大环境不好,工作不顺,生意效益不好,公司状况不佳,反问我们生意如何?为了让他们心里好受一点,我也假装附和道:也不咋地&…

3000多个厂商默认帐号、默认密码

做网工这行,多少都会遇上各种各样的厂商设备,遇上一些新设备,虽然没有更改密码,但不知道初始默认账号和密码是啥。 今天就给你整理了一波,三千多个厂商默认帐号、默认密码,方便你查阅。 不过,…

自创C++题目——风扇

预估难度 简单 题目描述 有一个风扇,它有个旋转叶片,每个旋转叶片的编号是,请输出它旋转后,中心点与地面的直线距离哪个叶片最近,输出此旋转叶片的编号。默认以“”的形式。 当时: 当或时,…

MATLAB二维与三维绘图实验

本文MATLAB源码,下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740747 一、实验目的 掌握图形对象属性的基本操作。掌握利用图形对象进行绘图操作的方法。 二、实验内容 利用图形对象绘制曲线&#xff…

Java基础 - 黑马

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 知…

最佳实践分享:SQL性能调优

SQL性能调优是一个需要不断探索和实践的过程,旨在确保数据库查询的高效运行。本文将分享一些SQL性能调优的最佳实践,帮助您提升数据库性能,减少查询响应时间。 一、索引优化 索引是提高查询性能的关键。以下是一些关于索引优化的建议&#…

完全备份、增量备份、差异备份、binlog日志

1 案例1:完全备份与恢复 1.1 问题 练习物理备份与恢复练习mysqldump备份与恢复 1.2 方案 在数据库服务器192.168.88.50 练习数据的备份与恢复 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一:练习物理备份与恢复 冷备份,需停止数…

数据结构第十四弹---链式二叉树基本操作(下)

链式二叉树 1、翻转二叉树2、判断两棵树是否相同3、判断二叉树是否是单值二叉树4、对称二叉树5、判断二叉树是否是平衡二叉树6、判断二叉树是否是另一棵二叉树的子树7、二叉树的销毁8、二叉树的深度遍历8.1、前序遍历8.2、中序遍历8.3、后序遍历 9、二叉树的构造和遍历总结 1、…

Java中的JVM指令和Arthas以及Dump文件(jvisualvm和MemoryAnalyzer工具)整体分析

前言 前天线上服务器突然内存和CPU都爆掉了,两者都处于一种高负载的状态,而且还是周末的情况下,起初运维同事怀疑是用户数量暴增,但是数据面板上并没有出现很大的暴增现象,之前的服务器4G的内存都跑不满后面升到8G还是…

NFS网络共享服务存储

目录 一、NFS简介 1、NFS定义: 2、NFS的特点 3、NFS的优缺点 4、NFS的原理图示 二、服务端NFS配置文件:/etc/exports 三、实验:NFS共享存储服务配置 1、服务端安装nfs-utils与rpcbind软件包 2、服务端新建共享文件夹目录并赋予权限 …

【数据库】sql优化有哪些?从query层面和数据库层面分析

目录 归纳sql本身的优化数据库层面的优化 归纳 这类型问题可以称为:Query Optimization,从清华AI4DB的paper list中,该类问题大致可以分为: Query RewriterCardinality EstimationCost EstimationPlan Optimization 从中文的角…

排序算法9----计数排序(C)

计数排序是一种非比较排序,不比较大小 。 1、思想 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 2、步骤 1、统计数据:统计每个数据出现了多少次。(建立一个count数组,范围从[MIN,MAX],MAX代表arr中…

网页屏幕适配通透了

一,如果设计尺寸固定 那就按照固定尺寸开发 一般都是1920*1080 二,需要适配多种像素屏幕(大屏可视化) 可使用媒体查询设置多套css样式或者使用自适应单位,%,vw,vh 最好解决方案rem&#xff…

Unity Shader 的模板测试效果

模板测试是渲染管线中逐片元操作的一环,它的作用是筛选出指定模板的片元,而不符合模板的片元会被舍弃,从而做到一个遮罩的效果。 以下是Unity中实践的一个效果: 场景中可以看出,熊模型和茶壶模型都在差不多的位置&am…