Redis常用指令

news2024/12/23 13:51:19

3. 常用指令

在这部分中呢,我们家学习两个知识,第一个是key的常用指令,第二个是数据库的常用指令。和前面我们学数据类型做一下区分,前面你学的那些指令呢,都是针对某一个数据类型操作的,现在学的都是对所有的操作的,来看一下,我们在学习Key的操作的时候,我们先想一下的操作我们应该学哪些东西:

3.1 key 操作分析

3.1.1 key应该设计哪些操作?

key是一个字符串,通过key获取redis中保存的数据

对于key自身状态的相关操作,例如:删除,判定存在,获取类型等

对于key有效性控制相关操作,例如:有效期设定,判定是否有效,有效状态的切换等

对于key快速查询操作,例如:按指定策略查询key

3.1.2 key 基本操作

删除指定key

del key

获取key是否存在

exists key

获取key的类型

type key

127.0.0.1:6379> set name itheima
OK
127.0.0.1:6379> type name
string
127.0.0.1:6379> lpush list1 aa
(integer) 5
127.0.0.1:6379> type list1
list
127.0.0.1:6379> exists list1
(integer) 1
127.0.0.1:6379>

3.1.3 拓展操作

排序

sort

改名

rename key newkey
renamenx key newkey 存在改名

integer) 1
127.0.0.1:6379> rename list1 list2
OK
127.0.0.1:6379> lrange list1 0 -1
(empty list or set)
127.0.0.1:6379> lrange list2 0 -1
1) "aa"
2) "zl"
3) "ww"
4) "ls"
5) "zs"
127.0.0.1:6379> sort list1
(empty list or set)
127.0.0.1:6379> sort list2
(error) ERR One or more scores can't be converted into double
127.0.0.1:6379> sort list2 alpha
1) "aa"
2) "ls"
3) "ww"
4) "zl"
5) "zs"
127.0.0.1:6379> sort list2
(error) ERR One or more scores can't be converted into double
127.0.0.1:6379> lrange list2 0 -1
1) "aa"
2) "zl"
3) "ww"
4) "ls"
5) "zs"
127.0.0.1:6379> sort list2 alpha desc
1) "zs"
2) "zl"
3) "ww"
4) "ls"
5) "aa"
127.0.0.1:6379>

3.1.3 key 扩展操作(时效性控制)

为指定key设置有效期

expire key seconds 
pexpire key milliseconds
expireat key timestamp
pexpireat key milliseconds-timestamp

127.0.0.1:6379> set dd 123
OK
127.0.0.1:6379> ttl dd
(integer) -1
127.0.0.1:6379> expire dd 10
(integer) 1
127.0.0.1:6379> ttl dd
(integer) 3
127.0.0.1:6379> ttl dd
(integer) 2
127.0.0.1:6379> ttl dd
(integer) 1
127.0.0.1:6379> ttl dd
(integer) -2
127.0.0.1:6379>

获取key的有效时间

ttl key
pttl key

127.0.0.1:6379> set aa 123
OK
127.0.0.1:6379> ttl aa
(integer) -1   -1代表永久有效
127.0.0.1:6379> ttl bb
(integer) -2  	 -2代表目前不存在
127.0.0.1:6379> setex cc 100 123
OK
127.0.0.1:6379> ttl cc
(integer) 96
127.0.0.1:6379> ttl cc
(integer) 95
127.0.0.1:6379> ttl cc
(integer) 94
127.0.0.1:6379> pttl cc
(integer) 84289
127.0.0.1:6379> pttl cc
(integer) 48043
127.0.0.1:6379>

切换key从时效性转换为永久性

persist key

(integer) -2
127.0.0.1:6379> set ee 123
OK
127.0.0.1:6379> ttl ee
(integer) -1
127.0.0.1:6379> expire ee 100
(integer) 1
127.0.0.1:6379> persist ee
(integer) 1
127.0.0.1:6379> expire ee 100
(integer) 1
127.0.0.1:6379> ttl ee
(integer) 96
127.0.0.1:6379> ttl ee
(integer) 95
127.0.0.1:6379> ttl ee
(integer) 94
127.0.0.1:6379> persist ee
(integer) 1
127.0.0.1:6379> ttl ee
(integer) -1
127.0.0.1:6379>

3.1.4 key 扩展操作(查询模式)

查询key

keys pattern
127.0.0.1:6379> keys *
 1) "num"
 2) "s2"
 3) "id:001"
 4) "setmealPicDbResources"
 5) "set1"
 6) "aa"
 7) "s1"
 8) "age"
 9) "user"
10) "s4"
11) "user:123"
12) "name"
13) "k1"
14) "ee"
15) "setmealPicResources"
16) "k3"
17) "k2"
18) "list2"
19) "s3"
20) "k4"
21) "h1"
127.0.0.1:6379>

查询模式规则

*匹配任意数量的任意符号 ? 配合一个任意符号 [] 匹配一个指定符号

keys *  keys    查询所有
it*  keys       查询所有以it开头
*heima          查询所有以heima结尾
keys ??heima    查询所有前面两个字符任意,后面以heima结尾 查询所有以
keys user:?     user:开头,最后一个字符任意
keys u[st]er:1  查询所有以u开头,以er:1结尾,中间包含一个字母,s或t

3.2 数据库指令

3.2.1 key 的重复问题

在这个地方我们来讲一下数据库的常用指令,在讲这个东西之前,我们先思考一个问题:

假如说你们十个人同时操作redis,会不会出现key名字命名冲突的问题。

一定会,为什么?因为你的key是由程序而定义的。你想写什么写什么,那在使用的过程中大家都在不停的加,早晚有一天他会冲突的。

redis在使用过程中,伴随着操作数据量的增加,会出现大量的数据以及对应的key。

那这个问题我们要不要解决?要!怎么解决呢?我们最好把数据进行一个分类,除了命名规范我们做统一以外,如果还能把它分开,这样是不是冲突的机率就会小一些了,这就是咱们下面要说的解决方案!

3.2.2 解决方案

redis为每个服务提供有16个数据库,编号从0到15

每个数据库之间的数据相互独立

在这里插入图片描述

在对应的数据库中划出一块区域,说他就是几,你就用几那块,同时,其他的这些都可以进行定义,一共是16个,这里边需要注意一点,他们这16个共用redis的内存。没有说谁大谁小,也就是说数字只是代表了一块儿区域,区域具体多大未知。这是数据库的一个分区的一个策略!

3.2.3 数据库的基本操作

切换数据库

select index

其他操作

ping
127.0.0.1:6379> set name1 123
OK
127.0.0.1:6379> get name
"itheima"
127.0.0.1:6379> get name1
"123"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name1
(nil)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

3.2.4 数据库扩展操作

数据移动

move key db

数据总量

dbsize

数据清除

flushdb  flushall

127.0.0.1:6379> set name1 123
OK
127.0.0.1:6379> get name
"itheima"
127.0.0.1:6379> get name1
"123"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name1
(nil)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> set name itheima
OK
127.0.0.1:6379> get name
"itheima"
127.0.0.1:6379> move name 1
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
"itheima"
127.0.0.1:6379[1]> dbsize
(integer) 1
127.0.0.1:6379[1]> set age 19
OK
127.0.0.1:6379[1]> dbsize
(integer) 2
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> set name itheima
OK
127.0.0.1:6379> get name
"itheima"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
"itheima"

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

#14环形链表#

环形链表 1题目链接 链接 2思路 slow和fast指向链表的开始 slow一次走一步 fast一次走两步 不带环 fast就会为空 带环 fast就会在环里追上slow 3实现 bool hasCycle(struct ListNode* head) {struct ListNode* slow head, * fast head;while (fast && fast->ne…

微信小程序学习第3天——网络数据请求

一、小程序网络请求限制 1、必须https类型的接口 2、必须将接口的域名添加到信任列表中 二、配置request合法域名 配置步骤:登录微信小程序管理后台 -> 开发 -> 开发设置 -> 服务器域名 -> 修改 request 合法域名 点击修改request合法域名&#xf…

【自动化测试】从0开始玩转docker—— 01软件安装

目的 CI / CD在目前各类互联网企业中已然成为推动软件开发行为的重要基础设施服务。同样的对于测试团队来说更是有着举足轻重的重大意义,无论是测试左移的具象化提现亦或是持续测试的顺利开展,掌握这一技能已是广大软件测试工程师的必修课。分享这一技术…

Springboot+Vue+Uniapp自媒体视频系统

简介:本项目采用了基本的springbootvueuniapp设计的自媒体系统。详情请看主要截图。经测试,本项目正常运行。本项目适用于Java毕业设计、课程设计学习参考等用途。 项目描述 项目名称SpringbootVueUniapp自媒体视频系统源码作者LHL项目类型Java EE项目 …

C++vector容器

目录 1.vector基本概念 2.构造函数 3.vector赋值操作,,assign 4.vector容量和大小 ,empty,capacity,size,resize 5.vector的插入和删除,push_back,pop_back,insert,erase,clear 6.vector数据存取,at,[],遍历 7.vector互换…

C++之引用(上)

文章目录前言一、引用二、引用的写法三、引用特性1.引用在定义时必须初始化2. 一个变量可以有多个引用3. 引用一旦引用一个实体,再不能引用其他实体三、引用的权限(含例子)四、常引用总结前言 今天要介绍的是C中的一个新概念——引用。 一、…

MobaXterm使用指南

MobaXterm使用指南 1. 介绍 通俗的来讲,MobaXterm就是一款SSH客户端,它帮助我们在Windows操作系统下去连接并操作Linux服务器。MobaXterm 又名 MobaXVT,是一款增强型终端、X 服务器和 Unix 命令集(GNU/ Cygwin)工具箱。MobaXterm 可以开启多…

Django网页+Yolov5垃圾识别系统

Django网页Yolov5垃圾识别系统如需安装运行环境或远程调试&#xff0c;见文章底部个人微信或QQ名片&#xff0c;由专业技术人员远程协助&#xff01;前言这篇博客针对<<Django网页Yolov5垃圾识别系统>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易…

代码随想录NO33 |Leetcode 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

贪心LeetCode_860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球今天是贪心第四天的题了&#xff0c;快开始dp了&#xff01;大头啊&#xff01; 860.柠檬水找零 在柠檬水摊上&#xff0c;每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品&#xff0c;&am…

day28|1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

1005.K次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后&#xff0c;返回数组 可能的…

若依框架实现多级联动下拉

最近也是用到了若依的多级联动&#xff0c;效果如下&#xff08;可多级&#xff09; 若依有已经封装好的一套js&#xff0c;难点在于后端数据封装&#xff0c;前端按照封装好的代码引用即可。 这里主要分享下关于后端数据如何封装多层。后端代码直接奉上。 记得要把集合转j…

SpringBoot+Vue+Wx新冠疫苗预约系统

简介&#xff1a;本项目采用了基本的springbootvue微信小程序设计的新冠疫苗预约系统。详情请看主要截图。经测试&#xff0c;本项目正常运行。本项目适用于Java毕业设计、课程设计学习参考等用途。 项目描述 项目名称SpringBootVueWx新冠疫苗预约系统源码作者LHL项目类型Java…

python爬虫正则表达式

博主简介&#xff1a;博主是一个大二学生&#xff0c;主攻人工智能领域研究。感谢缘分让我们在CSDN相遇&#xff0c;博主致力于在这里分享关于人工智能&#xff0c;C&#xff0c;python&#xff0c;爬虫等方面的知识分享。如果有需要的小伙伴&#xff0c;可以关注博主&#xff…

零碎的算法笔记(1)

From算法竞赛入门经典 第2版1.判断 n 是否为完全平方数2. 比较大的数组应尽量声明在 main 函数外&#xff0c;否则程序可能无法运行 3.开灯问题1.判断 n 是否为完全平方数 可以先求出其平方根&#xff0c;然后看它是否为整数&#xff0c;即用一个 int 型变量 m 存储 sqrt(n&am…

C++入门(二)

C入门&#xff08;二&#xff09;1.引用1.1引用概念1.2引用特性1.3常应用1.4使用场景1.5传值、传引用效率比较1.6引用和指针的区别2.内联函数2.1概念2.2内联函数的特性3.auto关键字&#xff08;C11&#xff09;3.1auto使用细则4.基于范围的for循环&#xff08;C11&#xff09;5…

题库——“C”

由于小雅兰的C语言程序设计考试的时间实在是越来越近了&#xff0c;那么&#xff0c;这篇博客也就产生了&#xff0c;这篇博客的主要内容是一些C语言程序设计的练习题&#xff0c;现在&#xff0c;就让我们一起进入C语言的世界吧。 1.函数fun的功能是&#xff1a;将形参n中&…

Java Agent 内存马攻防

前言 在 jdk 1.5 之后引入了 java.lang.instrument 包&#xff0c;该包提供了检测 java 程序的 Api&#xff0c;用于监控、收集性能信息、诊断问题等。通过 java.lang.instrument 实现的工具我们称之为 Java Agent &#xff0c;Java Agent 能够在不影响正常编译的情况下来修改…

黑马主播单场带货千万,抖音直播市场还有哪些新机遇?

1月受春节假期影响&#xff0c;主播带货场次降低&#xff0c;抖音直播电商市场略显低迷&#xff0c;据新抖『直播带货风向』大盘数据显示&#xff0c;1月平台直播销量与去年12月相比下降39.55%&#xff0c;直播销售额下降也较为明显。了解更多行业带货风向&#xff0c;可点此处…

【C++11】可变参数模板

目录 可变参数模板 函数递归展开参数包 逗号表达式展开参数包 emplace_back 可变参数模板 其实C语言中我们就一直在使用可变参数列表。 C11 的新特性可变参数模板能够让我们创建可变参数的函数模板和类模板&#xff0c;相比C98和C03&#xff0c;类模板和函数模板中只能传入…

19《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》 本人能力有限&#xff0c;如果错误欢迎批评指正。 第四章&#xff1a;Protein Binding Leads to Biological Actions &#xff08;蛋白质的结合会产生生物作用&#xff09; -布朗棘轮在耦合结合的过…