Redis(一)常见命令使用

news2024/9/22 19:35:27

    • 常见文件名
    • Redis-cli使用命令
      • 1、启动Redis
      • 2、连接Redis
      • 3、停止Redis
      • 4、发送命令
        • 1、redis-cli带参数运行,如:
        • 2、redis-cli不带参数运行,如:
      • 5、测试连通性
    • key操作命令
      • 获取所有键
      • 查询键是否存在
      • 删除键
      • 查询键类型
      • 移动键
      • 查询key的生命周期(秒)
      • 设置过期时间
      • 设置永不过期
      • 更改键名称
    • 字符串操作命令
      • 存放键值
      • 获取键值
      • 值递增/递减
      • 批量存放键值
      • 获取获取键值
      • 获取值长度
      • 追加内容
      • 获取部分字符
    • 集合操作命令
      • 存储值
      • 获取元素
      • 判断集合是否存在元素
      • 获取集合元素个数
      • 删除集合元素
      • 弹出元素
      • 有序集合和列表的区别:
      • 存储值
      • 获取元素分数
      • 获取排名范围排名语法:zrange key start stop [WITHSCORES]
      • 获取指定分数范围排名语法:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
      • 增加指定元素分数
      • 获取集合元素个数
      • 获取指定范围分数个数
      • 删除指定元素
      • 获取元素排名
    • 列表操作命令
      • 存储值
        • 左端存值语法:lpush key value [value ...]
        • 右端存值语法:rpush key value [value ...]
        • 索引存值语法:lset key index value
      • 弹出元素
        • 左端弹出语法:lpop key
        • 右端弹出语法:rpop key
        • 获取元素个数
        • 获取列表元素
    • 散列操作命令
      • 存放键值
      • 获取字段值
      • 获取所有键与值语法:hgetall key
      • 获取所有字段语法:hkeys key
      • 获取所有值语法:hvals key
      • 判断字段是否存在
      • 获取字段数量
      • 递增/减
      • 删除字段

常见文件名

在这里插入图片描述

Redis-cli使用命令

1、启动Redis

> redis-server [--port 6379]

如果命令参数过多,建议通过配置文件来启动Redis。

> redis-server [xx/xx/redis.conf]
6379是Redis默认端口号。

2、连接Redis

> ./redis-cli [-h 127.0.0.1 -p 6379]

3、停止Redis

> redis-cli shutdown

> kill redis-pid

以上两条停止Redis命令效果一样。

4、发送命令

给Redis发送命令有两种方式:

1、redis-cli带参数运行,如:

> redis-cli shutdown
not connected>

这样默认是发送到本地的6379端口。

2、redis-cli不带参数运行,如:

> ./redis-cli

127.0.0.1:6379> shutdown
not connected>

5、测试连通性

127.0.0.1:6379> ping
PONG

key操作命令

获取所有键

语法:keys pattern

127.0.0.1:6379> keys *
1) "javastack"

*表示通配符,表示任意字符,会遍历所有键显示所有的键列表,时间复杂度O(n),在生产环境不建议使用。
获取键总数
语法:dbsize

127.0.0.1:6379> dbsize

(integer) 6

获取键总数时不会遍历所有的键,直接获取内部变量,时间复杂度O(1)。

查询键是否存在

语法:exists key [key …]

127.0.0.1:6379> exists javastack java
(integer) 2

查询查询多个,返回存在的个数。

删除键

语法:del key [key …]

127.0.0.1:6379> del java javastack
(integer) 1

可以删除多个,返回删除成功的个数。

查询键类型

语法: type key

127.0.0.1:6379> type javastack
string

移动键

语法:move key db
如把javastack移到2号数据库。

127.0.0.1:6379> move javastack 2
(integer) 1
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> keys *
1) "javastack"

查询key的生命周期(秒)

秒语法:ttl key
毫秒语法:pttl key

127.0.0.1:6379[2]> ttl javastack
(integer) -1

-1:永远不过期。

设置过期时间

秒语法:expire key seconds
毫秒语法:pexpire key milliseconds

127.0.0.1:6379[2]> expire javastack 60
(integer) 1
127.0.0.1:6379[2]> ttl javastack
(integer) 55

设置永不过期

语法:persist key

127.0.0.1:6379[2]> persist javastack
(integer) 1

更改键名称

语法:rename key newkey

127.0.0.1:6379[2]> rename javastack javastack123
OK

字符串操作命令

字符串是Redis中最基本的数据类型,单个数据能存储的最大空间是512M。

存放键值

语法:set key value [EX seconds] [PX milliseconds] [NX|XX]
nx:如果key不存在则建立,xx:如果key存在则修改其值,也可以直接使用setnx/setex命令。

127.0.0.1:6379> set javastack 666
OK

获取键值

语法:get key

127.0.0.1:6379[2]> get javastack
"666"

值递增/递减

如果字符串中的值是数字类型的,可以使用incr命令每次递增,不是数字类型则报错。

语法:incr key

127.0.0.1:6379[2]> incr javastack
(integer) 667

一次想递增N用incrby命令,如果是浮点型数据可以用incrbyfloat命令递增。

同样,递减使用decr、decrby命令。

批量存放键值

语法:mset key value [key value …]

127.0.0.1:6379[2]> mset java1 1 java2 2 java3 3
OK

获取获取键值

语法:mget key [key …]

127.0.0.1:6379[2]> mget java1 java2
1) "1"
2) "2"

Redis接收的是UTF-8的编码,如果是中文一个汉字将占3位返回。

获取值长度

语法:strlen key

127.0.0.1:6379[2]> strlen javastack (integer) 3

追加内容

语法:append key value

127.0.0.1:6379[2]> append javastack hi
(integer) 5

向键值尾部添加,如上命令执行后由666变成666hi

获取部分字符

语法:getrange key start end

> 127.0.0.1:6379[2]> getrange javastack 0 4
"javas"

集合操作命令

集合类型和列表类型相似,只不过是集合是无序且不可重复的。

集合

存储值

语法:sadd key member [member …]
// 这里有8个值(2个java),只存了7个

127.0.0.1:6379> sadd langs java php c++ go ruby python kotlin java
(integer) 7

获取元素

获取所有元素语法:smembers key

127.0.0.1:6379> smembers langs
1) "php"
2) "kotlin"
3) "c++"
4) "go"
5) "ruby"
6) "python"
7) "java"

随机获取语法:srandmember langs count

127.0.0.1:6379> srandmember langs 3
1) "c++"
2) "java"
3) "php"

判断集合是否存在元素

语法:sismember key member

127.0.0.1:6379> sismember langs go
(integer) 1

获取集合元素个数

语法:scard key

127.0.0.1:6379> scard langs
(integer) 7

删除集合元素

语法:srem key member [member …]

127.0.0.1:6379> srem langs ruby kotlin
(integer) 2

弹出元素

语法:spop key [count]

127.0.0.1:6379> spop langs 2
1) "go"
2) "java"

有序集合和列表的区别:

1、列表使用链表实现,两头快,中间慢。有序集合是散列表和跳跃表实现的,即使读取中间的元素也比较快。

2、列表不能调整元素位置,有序集合能。

3、有序集合比列表更占内存。

存储值

语法:zadd key [NX|XX] [CH] [INCR] score member [score member …]

127.0.0.1:6379> zadd footCounts 16011 tid 20082 huny 2893 nosy
(integer) 3

获取元素分数

语法:zscore key member

127.0.0.1:6379> zscore footCounts tid
"16011"

获取排名范围排名语法:zrange key start stop [WITHSCORES]

// 获取所有,没有分数

127.0.0.1:6379> zrange footCounts 0 -1
1) "nosy"
2) "tid"
3) "huny"

// 获取所有及分数

127.0.0.1:6379> zrange footCounts 0 -1 Withscores
1) "nosy"
2) "2893"
3) "tid"
4) "16011"
5) "huny"
6) "20082"

获取指定分数范围排名语法:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

127.0.0.1:6379> zrangebyscore footCounts 3000 30000 withscores limit 0 1
1) "tid"
2) "16011"

增加指定元素分数

语法:zincrby key increment member

127.0.0.1:6379> zincrby footCounts 2000 tid
"18011"

获取集合元素个数

语法:zcard key

127.0.0.1:6379> zcard footCounts
(integer) 3

获取指定范围分数个数

语法:zcount key min max

127.0.0.1:6379> zcount footCounts 2000 20000
(integer) 2

删除指定元素

语法:zrem key member [member …]

127.0.0.1:6379> zrem footCounts huny
(integer) 1

获取元素排名

语法:zrank key member

127.0.0.1:6379> zrank footCounts tid
(integer) 1

列表操作命令

列表类型是一个有序的字段串列表,内部是使用双向链表实现,所有可以向两端操作元素,获取两端的数据速度快,通过索引到具体的行数比较慢。

列表类型的元素是有序且可以重复的。

存储值

左端存值语法:lpush key value [value …]

127.0.0.1:6379> lpush list lily sandy
(integer) 2

右端存值语法:rpush key value [value …]

127.0.0.1:6379> rpush list tom kitty
(integer) 4

索引存值语法:lset key index value

127.0.0.1:6379> lset list 3 uto
OK

弹出元素

左端弹出语法:lpop key

127.0.0.1:6379> lpop list
"sandy"

右端弹出语法:rpop key

127.0.0.1:6379> rpop list
"kitty"

获取元素个数

语法:llen key

127.0.0.1:6379> llen list
(integer) 2

获取列表元素

两边获取语法:lrange key start stop

127.0.0.1:6379> lpush users tom kitty land pony jack maddy
(integer) 6
127.0.0.1:6379> lrange users 0 3
1) "maddy"
2) "jack"
3) "pony"
4) "land"

// 获取所有
127.0.0.1:6379> lrange users 0 -1
1) "maddy"
2) "jack"
3) "pony"
4) "land"
5) "kitty"
6) "tom"

// 从右端索引
127.0.0.1:6379> lrange users -3 -1
1) "land"
2) "kitty"
3) "tom"
索引获取语法:lindex key index
127.0.0.1:6379> lindex list 2
"ketty"

// 从右端获取
127.0.0.1:6379> lindex list -5
"sady"
删除元素
根据值删除语法:lrem key count value
127.0.0.1:6379> lpush userids 111 222 111 222 222 333 222 222
(integer) 8

// count=0 删除所有
127.0.0.1:6379> lrem userids 0 111
(integer) 2

// count > 0 从左端删除前count个
127.0.0.1:6379> lrem userids 3 222
(integer) 3

// count < 0 从右端删除前count个
127.0.0.1:6379> lrem userids -3 222
(integer) 2
范围删除语法:ltrim key start stop
// 只保留2-4之间的元素
127.0.0.1:6379> ltrim list 2 4
OK

散列操作命令

redis字符串类型键和值是字典结构形式,这里的散列类型其值也可以是字典结构。

存放键值

单个语法:hset key field value

127.0.0.1:6379> hset user name javastack
(integer) 1

多个语法:hmset key field value [field value …]

127.0.0.1:6379> hmset user name javastack age 20 address china
OK

不存在时语法:hsetnx key field value

127.0.0.1:6379> hsetnx user tall 180
(integer) 0

获取字段值

单个语法:hget key field

127.0.0.1:6379> hget user age
"20"

多个语法:hmget key field [field …]

127.0.0.1:6379> hmget user name age address
1) "javastack"
2) "20"
3) "china"

获取所有键与值语法:hgetall key

127.0.0.1:6379> hgetall user
1) "name"
2) "javastack"
3) "age"
4) "20"
5) "address"
6) "china"

获取所有字段语法:hkeys key

127.0.0.1:6379> hkeys user
1) "name"
2) "address"
3) "tall"
4) "age"

获取所有值语法:hvals key

127.0.0.1:6379> hvals user
1) "javastack"
2) "china"
3) "170"
4) "20"

判断字段是否存在

语法:hexists key field

127.0.0.1:6379> hexists user address
(integer) 1

获取字段数量

语法:hlen key

127.0.0.1:6379> hlen user
(integer) 4

递增/减

语法:hincrby key field increment

127.0.0.1:6379> hincrby user tall -10
(integer) 170

删除字段

语法:hdel key field [field …]

127.0.0.1:6379> hdel user age
(integer) 1

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

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

相关文章

第二十章行为性模式—迭代器模式

文章目录 迭代器模式解决的问题结构实例存在的问题适用场景 JDK 源码 - Iterator 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。行为型模式分为…

“30分钟”带你走进线性回归的世界,轻松学习互联网营销推荐算法!

前言 本章主要介绍用于推荐系统的算法-线性回归算法的推导介绍&#xff0c;文章思路如下&#xff1a;由机器学习介绍&#xff0c;到监督学习&#xff0c;并重点介绍监督学习中回归问题里面的线性回归问题及推导。 可能需要大家具备一定的统计学、高数相关知识。 一、由机器学…

k8s入门(一)之pod创建、label使用、污点、亲和性、RS

一、创建一个pod [rootmaster01 ~]# kubectl create ns prod [rootmaster01 ~]# cat pod.yaml apiVersion: v1 kind: Pod metadata:name: pod-demonamespace: prodlabels:app: myapp spec:containers:- name: test1image: busybox:latestcommand:- "/bin/sh"- "…

问题记录 bug1-系统上电挂载异常分区,df与du命令查看文件使用大小显示不一样

linux磁盘分区 在Linux中&#xff0c;一切皆目录&#xff0c;每一块硬盘分区对应Linux的一个目录&#xff0c;所以我们可以通过管理目录来管理硬盘分区&#xff0c;而将硬盘分区与文件目录关联的操作就称为“挂载”【mount】&#xff0c;反之为“卸载”【unmount】 emmc&…

C高级 text

1.从命令行传参传入两个整数&#xff0c;整数1代表从整数几开始求和&#xff0c;整数2代表求和到整数几为止 2.打印99乘法表 3.输入年月日&#xff0c;计算是该年的第几天 1. 2. 3.

Linux进程基础

进程指正在运行的程序&#xff0c;如下图示&#xff0c;是资源分配的最小单位&#xff0c;可以通过“ps ”或“top”等命令查看正 在运行的进程&#xff0c;线程是系统的最小调度单位&#xff0c;一个进程可以拥有多个线程&#xff0c;同一进程里的线程可以共享此 进程的同一资…

Server版支持即将到期,Jira和Confluence如何迁移?(2)

到2024年2月&#xff0c;Atlassian将终止对Server产品及插件的所有支持。是时候制定您的迁移计划了——Atlassian为您提供两种迁移选择&#xff0c;一是本地部署的数据中心版本&#xff0c;中国用户25人以上即可使用&#xff0c;二是云版。作为Atlassian全球白金合作伙伴&#…

Markdown可以在线编辑吗?这个办法很好用

Markdown是一种轻量级标记语言&#xff0c;它使用简单的语法来创建文本&#xff0c;非常易于学习。它最初被设计为一种用于写作的格式&#xff0c;但现在已经成为了一种非常受欢迎的文本编辑工具。 作为一个较为方便的在线文本编辑器&#xff0c;它可以用代码代替文字&#xf…

一篇完整的测试方案怎么写

看上面的目录&#xff0c;详细 文档说明 文档名称 创建人/修改人 版本 时间 备注 v1.0 2022-11-17 新建 v1.1 2022-11-25 v1.2 2022-12-05 v2.0 2022-12-13 v2.1 2022-12-14 一、文档目的 为软件开发项目管理者、软件工程师、系统维护工程师、测试…

如何开发合成物品功能?

UE5 插件开发指南 前言0 数据结构1 合成面板UI组件2 小结前言 现在策划有一个合成物品的需求:可以将多个低级物品合成高级物品,如果背包中已有低级物品了,合成时需要减掉物品的费用,只需要支付合成费;提供玩家一个合成物品的层级视图,以便于玩家有节奏的购买物品,如下图…

电影《刀剑神域进击篇:暮色黄昏》观后感

上周看了电影《刀剑神域进击篇&#xff1a;暮色黄昏》&#xff0c;刀剑神域系列质量还是非常不错的&#xff0c; 本部电影讲述主角团队攻克boss&#xff0c;阻止公会团体互相打架的故事。 刀剑系列&#xff0c;记得当初是以一部连载动漫为开端&#xff0c;如果不是特别喜欢看动…

计算机网络—HTTP基本概念、HTTPS、HTTP状态码、HTTP缓存、HTTP请求

参考小林coding HTTP基本概念 HTTP是超文本传输协议。所谓的超文本&#xff0c;就是超越了普通文本的文本&#xff0c;最关键的是有超链接&#xff0c;能从一个超文本跳转到另一个超文本。 HTML是最常见的超文本&#xff0c;本身是纯文字文件&#xff0c;但是内部使用很多标签…

Scrum敏捷项目管理实例

这是一个Scrum敏捷单团队敏捷开发示例。 1、建立产品路线图 首先我们需要为这个项目创建一个产品路线图&#xff0c;产品路线图是一个高层次的战略计划&#xff0c;它描述了产品在未来一段时间可能会如何发展和壮大&#xff0c;产品路线图确保整个产品团队持续关注产品的目标…

GEE:对Landsat遥感影像进行处理,水体提取与可视化

作者:CSDN @ _养乐多_ 本文介绍了通过Google Earth Engine平台,并使用Landsat卫星遥感数据提取水体掩膜的方法和代码。通过裁剪和去除云等处理步骤,最终得到具有水体掩膜的影像,并进行可视化和导出。这种方法基于归一化水体指数(MNDWI)和OTSU阈值计算技术,使用了一个自…

MyBatis(MyBatis环境搭建,单表操作)

目录 MyBatis 环境搭建 1.添加 Mybatis 框架支持 2.设置 MyBatis 配置信息 2.1.设置数据库连接的相关信息 2.2 Mybatis xml 保存路径和 xml命名格式 ​编辑 MyBatis 模式开发 Mybatis xml 模板 查询表内容 单元测试 以根据id,查询用户对象这个方法为例 获取动态参数的…

警惕,最近的副业兼职诈骗。

大家好&#xff0c;我是鸟哥。 今天和大家聊聊最近超级猖狂的几类诈骗。 一、副业诈骗。最近两年“副业刚需”这个口号很流行&#xff0c;尤其是今年&#xff0c;职场动荡、工作难找&#xff0c;副业刚需变成了副业焦虑&#xff0c;骗子们也正是抓住了大家的这个心理&#xf…

【Vue全家桶实现电商系统】— VSCode配置Git(二)

【Vue全家桶实现电商系统】— VSCode配置Git&#xff08;二&#xff09; 当我们在VScode中编写代码后&#xff0c;需要提交到git仓库时&#xff0c;但是我们又不想切换到git的命令行窗口&#xff0c;我们可以在 VScode中配置git&#xff0c;然后就可以很方便快捷的把代码提交…

JavaScript中的Hook技术:特性、优点、缺点和使用场景

引言&#xff1a; 随着JavaScript的不断发展&#xff0c;开发者们正在寻找更灵活和可扩展的方式来修改或扩展现有的代码。其中一种广泛应用的技术是"Hook"&#xff0c;它允许开发者拦截和修改现有的函数或方法的行为。本文将详细介绍JavaScript中的Hook技术&#xf…

软件确认测试、验收测试和系统测试有什么区别和联系?

软件确认测试、验收测试和系统测试都是软件测试过程中的重要环节&#xff0c;它们各自有不同的测试侧重点和目标&#xff0c;但也有一些联系。 1、软件确认测试 称为单元测试或白盒测试&#xff0c;是对软件中各个模块的基本功能进行测试的一种测试方式&#xff0c;主要使用…

【Python从入门到进阶】22、urllib库基本使用

接上篇《21、爬虫相关概念介绍》 上一篇我们介绍了爬虫的相关概念&#xff0c;本篇我们来介绍一下用Python实现爬虫的必备基础&#xff0c;urllib库的学习。 一、Python库的概念 我们今后的学习可能需要用到很多python库&#xff08;library&#xff09;&#xff0c;及引用其…