首页 文章资讯内容详情

Redis 常用操作命令,非常详细!

2026-06-01 2 花语

本文内容纲要:

-你需要掌握的Redis知识 -常用管理命令 -key操作命令 -字符串操作命令 -集合操作命令 -集合 -有序集合 -列表操作命令 -散列操作命令

下面总结并演示了Redis的常用管理命令、key操作、字符串、集合、列表、散列类型的操作命令。

你需要掌握的Redis知识

史上最全Redis高可用解决方案总结 为什么分布式一定要有Redis? SpringBootRedisCluster实战干货 SpringDataRedis详解及实战 一个Redis命令,导致公司损失400万!

更多请在微信公众号Java技术栈后台回复关键字:Redis。

常用管理命令

1、启动Redis >redis-server[--port6379]

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

>redis-server[xx/xx/redis.conf]

6379是Redis默认端口号。

2、连接Redis >./redis-cli[-h127.0.0.1-p6379] 3、停止Redis >redis-clishutdown >killredis-pid

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

4、发送命令

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

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

>redis-clishutdown notconnected>

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

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

>./redis-cli 127.0.0.1:6379>shutdown notconnected> 5、测试连通性 127.0.0.1:6379>ping PONG

key操作命令

获取所有键

语法:keyspattern

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

语法:dbsize

127.0.0.1:6379>dbsize (integer)6

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

查询键是否存在

语法:existskey[key...]

127.0.0.1:6379>existsjavastackjava (integer)2

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

删除键

语法:delkey[key...]

127.0.0.1:6379>deljavajavastack (integer)1

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

查询键类型

语法:typekey

127.0.0.1:6379>typejavastack string 移动键

语法:movekeydb

如把javastack移到2号数据库。

127.0.0.1:6379>movejavastack2 (integer)1 127.0.0.1:6379>select2 OK 127.0.0.1:6379[2]>keys* 1)"javastack" 查询key的生命周期(秒)

秒语法:ttlkey

毫秒语法:pttlkey

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

-1:永远不过期。

设置过期时间

秒语法:expirekeyseconds

毫秒语法:pexpirekeymilliseconds

127.0.0.1:6379[2]>expirejavastack60 (integer)1 127.0.0.1:6379[2]>ttljavastack (integer)55 设置永不过期

语法:persistkey

127.0.0.1:6379[2]>persistjavastack (integer)1 更改键名称

语法:renamekeynewkey

127.0.0.1:6379[2]>renamejavastackjavastack123 OK

字符串操作命令

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

存放键值

语法:setkeyvalue[EXseconds][PXmilliseconds][NX|XX]

nx:如果key不存在则建立,xx:如果key存在则修改其值,也可以直接使用setnx/setex命令。

127.0.0.1:6379>setjavastack666 OK 获取键值

语法:getkey

127.0.0.1:6379[2]>getjavastack "666" 值递增/递减

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

语法:incrkey

127.0.0.1:6379[2]>incrjavastack (integer)667

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

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

批量存放键值

语法:msetkeyvalue[keyvalue...]

127.0.0.1:6379[2]>msetjava11java22java33 OK 获取获取键值

语法:mgetkey[key...]

127.0.0.1:6379[2]>mgetjava1java2 1)"1" 2)"2"

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

获取值长度

语法:strlenkey

127.0.0.1:6379[2]>strlenjavastack

(integer)3 追加内容

语法:appendkeyvalue

127.0.0.1:6379[2]>appendjavastackhi (integer)5

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

获取部分字符

语法:getrangekeystartend

>127.0.0.1:6379[2]>getrangejavastack04 "javas"

集合操作命令

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

集合

存储值

语法:saddkeymember[member...]

//这里有8个值(2个java),只存了7个 127.0.0.1:6379>saddlangsjavaphpc++gorubypythonkotlinjava (integer)7 获取元素

获取所有元素语法:smemberskey

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

随机获取语法:srandmemberlangscount

127.0.0.1:6379>srandmemberlangs3 1)"c++" 2)"java" 3)"php" 判断集合是否存在元素

语法:sismemberkeymember

127.0.0.1:6379>sismemberlangsgo (integer)1 获取集合元素个数

语法:scardkey

127.0.0.1:6379>scardlangs (integer)7 删除集合元素

语法:sremkeymember[member...]

127.0.0.1:6379>sremlangsrubykotlin (integer)2 弹出元素

语法:spopkey[count]

127.0.0.1:6379>spoplangs2 1)"go" 2)"java"

有序集合

和列表的区别:

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

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

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

存储值

语法:zaddkey[NX|XX][CH][INCR]scoremember[scoremember...]

127.0.0.1:6379>zaddfootCounts16011tid20082huny2893nosy (integer)3 获取元素分数

语法:zscorekeymember

127.0.0.1:6379>zscorefootCountstid "16011"

获取排名范围排名语法:zrangekeystartstop[WITHSCORES]

//获取所有,没有分数 127.0.0.1:6379>zrangefootCounts0-1 1)"nosy" 2)"tid" 3)"huny" //获取所有及分数 127.0.0.1:6379>zrangefootCounts0-1Withscores 1)"nosy" 2)"2893" 3)"tid" 4)"16011" 5)"huny" 6)"20082"

获取指定分数范围排名语法:zrangebyscorekeyminmax[WITHSCORES][LIMIToffsetcount]

127.0.0.1:6379>zrangebyscorefootCounts300030000withscoreslimit01 1)"tid" 2)"16011" 增加指定元素分数

语法:zincrbykeyincrementmember

127.0.0.1:6379>zincrbyfootCounts2000tid "18011" 获取集合元素个数

语法:zcardkey

127.0.0.1:6379>zcardfootCounts (integer)3 获取指定范围分数个数

语法:zcountkeyminmax

127.0.0.1:6379>zcountfootCounts200020000 (integer)2 删除指定元素

语法:zremkeymember[member...]

127.0.0.1:6379>zremfootCountshuny (integer)1 获取元素排名

语法:zrankkeymember

127.0.0.1:6379>zrankfootCountstid (integer)1

列表操作命令

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

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

存储值

左端存值语法:lpushkeyvalue[value...]

127.0.0.1:6379>lpushlistlilysandy (integer)2

右端存值语法:rpushkeyvalue[value...]

127.0.0.1:6379>rpushlisttomkitty (integer)4

索引存值语法:lsetkeyindexvalue

127.0.0.1:6379>lsetlist3uto OK 弹出元素

左端弹出语法:lpopkey

127.0.0.1:6379>lpoplist "sandy"

右端弹出语法:rpopkey

127.0.0.1:6379>rpoplist "kitty" 获取元素个数

语法:llenkey

127.0.0.1:6379>llenlist (integer)2 获取列表元素

两边获取语法:lrangekeystartstop

127.0.0.1:6379>lpushuserstomkittylandponyjackmaddy (integer)6 127.0.0.1:6379>lrangeusers03 1)"maddy" 2)"jack" 3)"pony" 4)"land" //获取所有 127.0.0.1:6379>lrangeusers0-1 1)"maddy" 2)"jack" 3)"pony" 4)"land" 5)"kitty" 6)"tom" //从右端索引 127.0.0.1:6379>lrangeusers-3-1 1)"land" 2)"kitty" 3)"tom"

索引获取语法:lindexkeyindex

127.0.0.1:6379>lindexlist2 "ketty" //从右端获取 127.0.0.1:6379>lindexlist-5 "sady" 删除元素

根据值删除语法:lremkeycountvalue

127.0.0.1:6379>lpushuserids111222111222222333222222 (integer)8 //count=0删除所有 127.0.0.1:6379>lremuserids0111 (integer)2 //count>0从左端删除前count个 127.0.0.1:6379>lremuserids3222 (integer)3 //count<0从右端删除前count个 127.0.0.1:6379>lremuserids-3222 (integer)2

范围删除语法:ltrimkeystartstop

//只保留2-4之间的元素 127.0.0.1:6379>ltrimlist24 OK

散列操作命令

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

存放键值

单个语法:hsetkeyfieldvalue

127.0.0.1:6379>hsetusernamejavastack (integer)1

多个语法:hmsetkeyfieldvalue[fieldvalue...]

127.0.0.1:6379>hmsetusernamejavastackage20addresschina OK

不存在时语法:hsetnxkeyfieldvalue

127.0.0.1:6379>hsetnxusertall180 (integer)0 获取字段值

单个语法:hgetkeyfield

127.0.0.1:6379>hgetuserage "20"

多个语法:hmgetkeyfield[field...]

127.0.0.1:6379>hmgetusernameageaddress 1)"javastack" 2)"20" 3)"china"

获取所有键与值语法:hgetallkey

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

获取所有字段语法:hkeyskey

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

获取所有值语法:hvalskey

127.0.0.1:6379>hvalsuser 1)"javastack" 2)"china" 3)"170" 4)"20" 判断字段是否存在

语法:hexistskeyfield

127.0.0.1:6379>hexistsuseraddress (integer)1 获取字段数量

语法:hlenkey

127.0.0.1:6379>hlenuser (integer)4 递增/减

语法:hincrbykeyfieldincrement

127.0.0.1:6379>hincrbyusertall-10 (integer)170 删除字段

语法:hdelkeyfield[field...]

127.0.0.1:6379>hdeluserage (integer)1

都是基本的命令用法,不会用了就来翻一下吧!

写了大半天,点赞转发支持一下吧,亲!

本文原创首发于微信公众号:Java技术栈(id:javastack),关注公众号回复“答案”获取博主整理的全套Redis面试题及答案,转载请原样保留来源信息。

本文内容总结:你需要掌握的Redis知识,常用管理命令,key操作命令,字符串操作命令,集合操作命令,集合,有序集合,列表操作命令,散列操作命令,

原文链接:https://www.cnblogs.com/javastack/p/9854489.html